Configure an Azure Synapse Analytics Integration

The Azure Synapse Analytics resource allows you to create, configure, and manage your Azure Synapse Analytics integration. In this integration, Immuta generates policy-enforced views in a schema in your configured Azure Synapse Analytics Dedicated SQL pool for tables registered as Immuta data sources.

Use the /integrations endpoint to

Requirements

  • APPLICATION_ADMIN Immuta permission

  • A running Dedicated SQL pool

  • Account used to configure or edit the integration must have the Azure Synapse Analytics permission to manage GRANTS

Configure the integration

You have two options for configuring your Azure Synapse Analytics integration:

  • Automatic setup: Grant Immuta one-time use of credentials to automatically configure your Azure Synapse Analytics environment and the integration. When performing an automated installation, Immuta requires temporary, one-time use of credentials with the permission to manage GRANTS.

  • Manual setup: Run the Immuta script in your Azure Synapse Analytics environment yourself to configure your environment and the integration. The specified role used to run the bootstrap needs to have the permission to manage GRANTS.

Automatic setup

Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML.

See the config object description for parameter definitions, value types, and additional configuration options.

curl -X 'POST' \
    'https://www.organization.immuta.com/integrations' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
    -d '{
    "type": "Azure Synapse Analytics",
    "autoBootstrap": true,
    "config": {
      "host": "organization.azure.com",
      "schema": "sample_schema",
      "database": "immuta",
      "username": "taylor@synapse.com",
      "password": "abc1234",
      "authenticationType": "userPassword"
    }
    }'
  1. Replace the Immuta URL and API key with your own.

  2. Change the config values to your own, where

    • host is the URL of your Azure Synapse Analytics account.

    • schema is the name of the Immuta-managed schema where all your secure views will be created and stored.

    • database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.

    • username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.

Response

The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.

A successful response includes the validation tests statuses.

{
  "id": "123456789",
  "status": "creating",
  "validationResults": {
    "status": "passed",
    "validationTests": [
    {
      "name": "Initial Validation: Connect",
      "result": [
      {
        "SCHEMA_NAME": "sample_schema",
        "CATALOG_NAME": "immuta",
        "SCHEMA_OWNER": "taylor@synapse.com",
        "DEFAULT_CHARACTER_SET_NAME": "iso_1",
        "DEFAULT_CHARACTER_SET_SCHEMA": null,
        "DEFAULT_CHARACTER_SET_CATALOG": null
      }
      ],
      "status": "passed"
    },
    {
      "name": "Initial Validation: Delimiters",
      "status": "passed"
    },
    {
      "name": "Validate Immuta system user can manage database",
      "result": [
      {
        "name": "taylor@synapse.com"
      }
      ],
      "status": "passed"
    }
    ]
  }
}

Manual setup

To manually configure the integration, complete the following steps:

Generate the first script

Copy the request example from one of the tabs below, and replace the values with your own as directed to generate the script. The examples provided use JSON format, but the request also accepts YAML.

See the config object description for parameter definitions, value types, and additional configuration options.

curl -X 'POST' \
    'https://www.organization.immuta.com/integrations/scripts/initial-create' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
    -d '{
    "type": "Azure Synapse Analytics",
    "autoBootstrap": false,
    "config": {
      "host": "organization.azure.com",
      "schema": "sample_schema",
      "database": "immuta",
      "impersonation": {
        "enabled": false
      },
      "metadataDelimiters": {
        "hashDelimiter": "|",
        "hashKeyDelimiter": "-",
        "arrayDelimiter": ","
      },
      "username": "taylor@synapse.com",
      "password": "abc1234",
      "authenticationType": "userPassword"
    }
    }'
  1. Replace the Immuta URL and API key with your own.

  2. Change the config values to your own, where

    • host is the URL of your Azure Synapse Analytics account.

    • schema is the name of the Immuta-managed schema where all your secure views will be created and stored.

    • database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.

    • impersonation specifies whether user impersonation is enabled. See the object description for child parameters.

    • metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.

    • username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.

  3. Run the script returned in the response in your Azure Synapse Analytics environment.

Response

The response returns the script for you to run in your environment.

Generate the second script

Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when generating the first script.

See the config object description for parameter definitions, value types, and additional configuration options.

curl -X 'POST' \
    'https://www.organization.immuta.com/integrations/scripts/create' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
    -d '{
    "type": "Azure Synapse Analytics",
    "autoBootstrap": false,
    "config": {
      "host": "organization.azure.com",
      "schema": "sample_schema",
      "database": "immuta",
      "impersonation": {
        "enabled": false
      },
      "metadataDelimiters": {
        "hashDelimiter": "|",
        "hashKeyDelimiter": "-",
        "arrayDelimiter": ","
      },
      "username": "taylor@synapse.com",
      "password": "abc1234",
      "authenticationType": "userPassword"
    }
    }'
  1. Replace the Immuta URL and API key with your own.

  2. Pass the same payload you sent when generating the first script, where

    • host is the URL of your Azure Synapse Analytics account.

    • schema is the name of the Immuta-managed schema where all your secure views will be created and stored.

    • database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.

    • impersonation specifies whether user impersonation is enabled. See the object description for child parameters.

    • metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.

    • username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.

  3. Run the script returned in the response in your Azure Synapse Analytics environment.

Response

The response returns the script for you to run in your environment.

Configure the integration in Immuta

Copy the request example from one of the tabs below, and replace the values with your own as directed to configure the integration settings. The examples provided use JSON format, but the request also accepts YAML. The payload you provide must match the payload sent when generating the scripts.

See the config object description for parameter definitions, value types, and additional configuration options.

curl -X 'POST' \
    'https://www.organization.immuta.com/integrations' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
    -d '{
    "type": "Azure Synapse Analytics",
    "autoBootstrap": false,
    "config": {
      "host": "organization.azure.com",
      "schema": "sample_schema",
      "database": "immuta",
      "impersonation": {
        "enabled": false
      },
      "metadataDelimiters": {
        "hashDelimiter": "|",
        "hashKeyDelimiter": "-",
        "arrayDelimiter": ","
      },
      "username": "taylor@synapse.com",
      "password": "abc1234",
      "authenticationType": "userPassword"
    }
    }'
  1. Replace the Immuta URL and API key with your own.

  2. Pass the same payload you sent when generating the scripts, where

    • host is the URL of your Azure Synapse Analytics account.

    • schema is the name of the Immuta-managed schema where all your secure views will be created and stored.

    • database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.

    • impersonation specifies whether user impersonation is enabled. See the object description for child parameters.

    • metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.

    • username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.

Response

The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.

A successful response includes the validation tests statuses.

{
  "id": "123456789",
  "status": "creating",
  "validationResults": {
    "status": "passed",
    "validationTests": [
    {
      "name": "Initial Validation: Connect",
      "result": [
      {
        "SCHEMA_NAME": "sample_schema",
        "CATALOG_NAME": "immuta",
        "SCHEMA_OWNER": "taylor@synapse.com",
        "DEFAULT_CHARACTER_SET_NAME": "iso_1",
        "DEFAULT_CHARACTER_SET_SCHEMA": null,
        "DEFAULT_CHARACTER_SET_CATALOG": null
      }
      ],
      "status": "passed"
    },
    {
      "name": "Initial Validation: Delimiters",
      "status": "passed"
    },
    {
      "name": "Validate Immuta system user can manage database",
      "result": [
      {
        "name": "taylor@synapse.com"
      }
      ],
      "status": "passed"
    }
    ]
  }
}

Get an integration

curl -X 'GET' \
    'https://www.organization.immuta.com/integrations/{id}' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
  1. Copy the request example.

  2. Replace the Immuta URL and API key with your own.

  3. Replace the {id} request parameter with the unique identifier of the integration you want to get. Alternatively, you can get a list of all integrations and their IDs with the GET /integrations endpoint.

Response

The response returns an Azure Synapse Analytics integration configuration. See the response schema reference for details about the response schema. An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.

{
  "id": "123456789",
  "status": "enabled",
  "validationResults": {
    "status": "passed",
    "validationTests": [
    {
      "name": "Initial Validation: Connect",
      "result": [
      {
        "SCHEMA_NAME": "sample_schema",
        "CATALOG_NAME": "immuta",
        "SCHEMA_OWNER": "taylor@synapse.com",
        "DEFAULT_CHARACTER_SET_NAME": "iso_1",
        "DEFAULT_CHARACTER_SET_SCHEMA": null,
        "DEFAULT_CHARACTER_SET_CATALOG": null
      }
      ],
      "status": "passed"
    },
    {
      "name": "Initial Validation: Delimiters",
      "status": "passed"
    },
    {
      "name": "Validate Immuta system user can manage database",
      "result": [
      {
        "name": "taylor@synapse.com"
      }
      ],
      "status": "passed"
    }
    ]
  },
  "type": "Azure Synapse Analytics",
  "autoBootstrap": true,
  "config": {
    "host": "organization.azure.com",
    "schema": "sample_schema",
    "database": "immuta",
    "port": 1433,
    "impersonation": {
      "enabled": false
    },
    "metadataDelimiters": {
      "hashDelimiter": "|",
      "hashKeyDelimiter": "-",
      "arrayDelimiter": ","
    },
    "username": "<REDACTED>"
  }
}

Get all integrations

curl -X 'GET' \
    'https://www.organization.immuta.com/integrations' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
  1. Copy the request example.

  2. Replace the Immuta URL and API key with your own.

Response

The response returns the configuration for all integrations. See the response schema reference for details about the response schema. An unsuccessful request returns the status code and an error message. See the HTTP status codes and error messages for a list of statuses, error messages, and troubleshooting guidance.

[
  {
    "id": "1",
    "status": "enabled",
    "validationResults": {
      "status": "passed",
      "validationTests": [
      {
        "name": "Initial Validation: Basic Connection Test",
        "status": "passed"
      },
      {
        "name": "Initial Validation: Default Warehouse Access Test",
        "status": "passed",
        "result": []
      },
      {
        "name": "Initial Validation: Validate access to Privileged Role",
        "status": "passed",
        "result": []
      },
      {
        "name": "Validate Automatic: Database Does Not Exist",
        "status": "passed"
      },
      {
        "name": "Validate Automatic: Impersonation Role Does Not Exist",
        "status": "skipped"
      },
      {
        "name": "Validate Automatic Bootstrap User Grants",
        "status": "passed"
      }
    ] },
    "type": "Snowflake",
    "autoBootstrap": true,
    "config": {
      "host": "organization.us-east-1.snowflakecomputing.com",
      "warehouse": "SAMPLE_WAREHOUSE",
      "database": "SNOWFLAKE_SAMPLE_DATA",
      "port": 443,
      "audit": {
          "enabled": false
        },
      "workspaces": {
        "enabled": false
      },
      "impersonation": {
        "enabled": false
      },
      "lineage": {
        "enabled": false
      },
      "authenticationType": "userPassword",
      "username": "<REDACTED>",
      "password": "<REDACTED>",
      "role": "ACCOUNTADMIN"
    },
    {
      "id": "2",
      "status": "enabled",
      "type": "Databricks",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Metastore validation",
          "status": "passed"
        },
        {
          "name": "Basic Connection Test",
          "result": [
          {
            "1": 1
          }
          ],
          "status": "passed"
        }
        ]
      },
      "autoBootstrap": true,
      "config": {
        "workspaceUrl": "www.example-workspace.cloud.databricks.com",
        "httpPath": "sql/protocolv1/o/0/0000-00000-abc123",
        "token": "REDACTED",
        "audit": {
          "enabled": false
        },
        "catalog": "immuta"
      }
    }
  }
]

Update an integration configuration

You have two options for updating your integration. Follow the steps that match your initial configuration of autoBootstrap:

Automatic update

Copy the request example, and replace the values with your own as directed to update the integration settings. The example provided uses JSON format, but the request also accepts YAML.

See the config object description for parameter definitions, value types, and additional configuration options.

curl -X 'PUT' \
    'https://www.organization.immuta.com/integrations/{id}' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
    -d '{
    "type": "Azure Synapse Analytics",
    "autoBootstrap": true,
    "config": {
      "host": "organization.azure.com",
      "schema": "sample_schema",
      "database": "immuta",
      "metadataDelimiters": {
        "hashDelimiter": "|",
        "hashKeyDelimiter": "-",
        "arrayDelimiter": ","
      },
      "username": "taylor@synapse.com",
      "password": "abc1234",
      "authenticationType": "userPassword"
    }
    }'
  1. Replace the Immuta URL and API key with your own.

  2. Replace the {id} request parameter with the unique identifier of the integration you want to update.

  3. Change the config values to your own, where

    • host is the URL of your Azure Synapse Analytics account.

    • schema is the name of the Immuta-managed schema where all your secure views will be created and stored.

    • database is the name of an existing database where the Immuta system user will store all Immuta-generated schemas and views.

    • metadataDelimeters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the object description for child parameters.

    • username and password are the username and password of the system account that can act on Azure Synapse Analytics objects and configure the integration.

Response

The response returns the status of the Azure Synapse Analytics integration configuration connection. See the response schema reference for details about the response schema.

A successful response includes the validation tests statuses.

{
  "id": "123456789",
  "status": "editing",
  "validationResults": {
    "status": "passed",
    "validationTests": [
    {
      "name": "Initial Validation: Connect",
      "result": [
      {
        "SCHEMA_NAME": "sample_schema",
        "CATALOG_NAME": "immuta",
        "SCHEMA_OWNER": "taylor@synapse.com",
        "DEFAULT_CHARACTER_SET_NAME": "iso_1",
        "DEFAULT_CHARACTER_SET_SCHEMA": null,
        "DEFAULT_CHARACTER_SET_CATALOG": null
      }
      ],
      "status": "passed"
    },
    {
      "name": "Initial Validation: Delimiters",
      "status": "passed"
    },
    {