All pages
Powered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

How-to Guides

The how-to guides in this section illustrate how to integrate your remote data platform with Immuta so you can manage and enforce access controls on your data.

Immuta generates policy-enforced views in your configured Redshift schema for tables registered as Immuta data sources.

Follow this guide to configure and manage your Amazon Redshift Spectrum integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.

Private preview: This integration is available to select accounts. Contact your Immuta representative for details.

Immuta's Amazon S3 integration allows users to apply subscription policies to data in S3 to restrict what prefixes, buckets, or objects users can access. To enforce access controls on this data, Immuta creates S3 grants that are administered by S3 Access Grants, an AWS feature that defines access permissions to data in S3.

Follow this guide to configure and manage your Amazon S3 integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.

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.

Follow this guide to configure and manage your Azure Synapse Analytics integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.

In this integration, Immuta generates policy-enforced views in your configured Google BigQuery dataset for tables registered as Immuta data sources.

Follow this guide to configure and manage your Google BigQuery integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.

Immuta policies are translated into Starburst rules and permissions and applied directly to tables within users’ existing catalogs.

Follow this guide to configure and manage your Starburst (Trino) integration. Example requests and responses are provided throughout the guide so that you can quickly copy and update them with your own settings.

Private preview: This integration is available to all accounts.

Amazon Redshift Spectrum integration API guide
Amazon S3 integration API guide
Azure Synapse Analytics integration API guide
Google BigQuery integration API guide
Starburst (Trino) integration API guide

Configure a Starburst (Trino) Integration

Deprecation notice

Support for configuring the Starburst (Trino) integration using this legacy workflow has been deprecated. Instead, configure your integration and register your data using .

The Starburst (Trino) resource allows you to create and manage your Starburst (Trino) integration. In this integration, Immuta policies are translated into Starburst rules and permissions and applied directly to tables within users’ existing catalogs.

Use the /integrations endpoint to

  • configure a Starburst (Trino) integration

  • get a Starburst (Trino) integration

  • APPLICATION_ADMIN Immuta permission

  • A valid

To configure the Starburst (Trino) integration, complete the following steps:

  1. Copy the request example. The example provided uses JSON format, but the request also accepts YAML.

  2. Replace the Immuta URL and with your own.

The response returns the status of the Starburst (Trino) integration configuration connection. See the for details about the response schema.

A successful response includes the validation tests statuses.

An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

  1. Navigate to the Immuta App Settings page and click the Integrations tab.

  2. Click your enabled Starburst (Trino) integration and copy the configuration snippet displayed.

  3. Follow the steps in the to add the configuration in the appropriate immuta-access-control.properties file to finish configuring your cluster.

  1. Copy the request example.

  2. Replace the Immuta URL and 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 .

The response returns a Starburst (Trino) integration configuration and the Immuta API key used to configure the Starburst cluster. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

  1. Copy the request example.

  2. Replace the Immuta URL and with your own.

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

  1. .

  2. Copy the request example below and replace these values:

    • Replace the Immuta URL and with your own.

The response includes your new Immuta API key.

  1. Copy the request example.

  2. Replace the Immuta URL and with your own.

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

The response returns the status of the Starburst (Trino) integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

Replace the {id} request parameter with the unique identifier of the Starburst (Trino) integration you want to regenerate the Immuta API key for.

Once you make this request, your old Immuta API key will be deleted and will no longer be valid.

  • The response includes your new Immuta API key. Replace the old immuta.apikey value in the Immuta access control properties file with this new key.

  • Enable your Starburst (Trino) cluster.

  • Requirements

    Configure the integration

    Generate the configuration snippet

    Response

    Configure the cluster

    Get an integration

    Response

    Get all integrations

    Response

    Generate a new Immuta API key

    Cluster restart required

    To update your API key in Starburst (Trino), you must shut down your cluster, generate and update the API key, and then restart your cluster. If you do not shut down your cluster, generating a new API key using the endpoint below will cause downtime for your deployment.

    Response

    Delete an integration

    Response

    get all integrations
    generate a new Immuta API key
    delete a Starburst (Trino) integration
    Starburst Enterprise license
    Generate the configuration snippet
    Configure your Starburst cluster
    API key
    response schema reference
    HTTP status codes and error messages
    customize the Immuta system access control plugin page
    API key
    GET /integrations endpoint
    response schema reference
    HTTP status codes and error messages
    API key
    response schema reference
    HTTP status codes and error messages
    Disable your Starburst (Trino) cluster
    API key
    API key
    response schema reference
    HTTP status codes and error messages
    connections
    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Trino"
        }'
    {
      "id": "123456789",
      "status": "creating",
      "validationResults": {
        "status": "passed",
        "validationTests": [ ]
      }
    }
    {
      "statusCode": 422,
      "error": "Unprocessable entity",
      "message": "Validation of prerequisite setup failed. Unable to create integration."
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "enabled",
      "type": "Trino",
      "config": {
        "apiKey": "3ea2cde7******461b02ebaa"
      }
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    [
      {
        "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"
        }
      }
    ]
    { "newKey": "5bb6cae9******300c21acbb" }
    curl -X 'DELETE' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "deleting",
      "validationResults": {
        "status": "passed",
        "validationTests": []
      }
    }
    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations/{id}/regenerate' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'

    Configure an Amazon Redshift Spectrum Integration

    Use the API to set up your Amazon Redshift Spectrum integration

    In the Amazon Redshift Spectrum integration, Immuta generates policy-enforced views in your configured Redshift schema for tables registered as Immuta data sources.

    Use the /integrations endpoint to

    Configure an Amazon S3 Integration

    Use the API to set up your Amazon S3 integration

    The Amazon S3 resource allows you to create, configure, and manage your . In this integration, Immuta provides coarse-grained access controls for data in S3 by performing permission grants using the Access Grants API so that users don't have to manage individual IAM policies themselves.

    Use the /integrations endpoint to

    get all integrations

  • update an Amazon Redshift Spectrum integration

  • delete an Amazon Redshift Spectrum integration

    • A Redshift cluster with an AWS row-level security patch applied. Contact Immuta for guidance.

    • An AWS IAM role for Redshift that is associated with your Redshift cluster.

    • The enable_case_sensitive_identifier parameter must be set to false (default setting) for your Redshift cluster.

    • .

    The user configuring the integration must have the permissions below.

    • APPLICATION_ADMIN Immuta permission

    • The Redshift role used to run the Immuta bootstrap script must have the following privileges when configuring the integration:

      • If using an existing database

        • ALL PRIVILEGES ON DATABASE for the database you configure the integration with, as you must manage grants on that database.

        • CREATE USER

        • GRANT TEMP ON DATABASE

      • If creating a new database

        • CREATE DATABASE

        • CREATE USER

    To configure the integration, complete the following steps:

    1. Set up an Immuta database in Amazon Redshift.

    2. Generate the Immuta script and run it inside the database you created.

    3. Configure the integration in Immuta.

    You have two options for setting up the database Immuta will use to manage the integration and enforce policies:

    • Configure the integration with an existing database that contains the external tables. When configuring the integration, specify an existing database in Amazon Redshift as the database in which Immuta will add the Immuta-managed schemas and views.

      If using an existing database, the Redshift role used to run the Immuta bootstrap script must have the following privileges:

      • ALL PRIVILEGES ON DATABASE for the database you configure the integration with, as you must manage grants on that database.

      • CREATE USER

      • GRANT TEMP ON DATABASE

    • Create a new database: Create a new database for Immuta that manages all schemas and views created when Redshift data is registered in Immuta, and re-create all of your external tables in that database. When configuring the integration, specify this new database you created in Amazon Redshift as the database in which Immuta will add the Immuta-managed schemas and views. If creating a new database, the Redshift role used to run the Immuta bootstrap script must have the following privileges:

      • CREATE DATABASE

    1. Copy the request example. The example provided uses JSON format, but the request also accepts YAML.

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

    3. Change the config values to your own, where

      • host is the URL of your Redshift account.

      • database is the name of the that the Immuta system user will manage and store metadata in.

      • impersonation specifies whether user impersonation is enabled. See the for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • username and password are the credentials for the system account that can act on Redshift objects and configure the integration.

    4. Run the script returned in the response in the existing or new database you created in Amazon Redshift.

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

    Response

    The response returns the script for you to run in the existing or new database you created for the Immuta system user.

    1. Copy the request example. The example provided uses JSON format, but the request also accepts YAML.

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

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

      • host is the URL of your Redshift account.

      • database is the name of the that the Immuta system user will manage and store metadata in.

      • impersonation specifies whether user impersonation is enabled. See the for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • username and password are the credentials for the system account that can act on Redshift objects and configure the integration.

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

    The response returns the status of the Amazon Redshift Spectrum 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: Basic Connection Test",
          "result": [null],
          "status": "passed"
        },
        {
          "name": "Validate Automatic: Immuta Database Does Not Exist",
          "result": [],
          "status": "passed"
        }
        ]
      }
    }

    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.

    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Redshift integration already exists on host organization.aws.amazon.com (id = 123456789)"
    }
    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.

    The response returns an Amazon Redshift Spectrum 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.

    1. Copy the request example.

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

    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.

    To update the integration, complete the following steps:

    1. Generate the updated Immuta script and run it in your Redshift environment.

    2. Update the integration in Immuta.

    1. Copy the request example. The example provided uses JSON format, but the request also accepts YAML.

    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 update.

    4. Change the config values to your own, where

      • host is the URL of your Redshift account.

      • database is the name of the that the Immuta system user will manage and store metadata in.

      • impersonation specifies whether user impersonation is enabled. See the for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

    5. Run the script returned in the response in your Amazon Redshift environment.

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

    Response

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

    1. Copy the request example. The example provided uses JSON format, but the request also accepts YAML.

    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 update.

    4. Pass the same payload you sent when , where

      • host is the URL of your Redshift account.

      • database is the name of the that the Immuta system user will manage and store metadata in.

      • impersonation specifies whether user impersonation is enabled. See the for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

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

    The response returns the status of the Amazon Redshift Spectrum 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: Basic Connection Test",
          "result": [null],
          "status": "passed"
        },
        {
          "name": "Validate Automatic: Immuta Database Does Not Exist",
          "result": [],
          "status": "passed"
        }
        ]
      }
    }

    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.

    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Unable to edit integration with ID 123456789 in current state editing."
    }
    1. Use the script cleanup endpoint (for integrations that were not successfully created) or the delete endpoint (for integrations that were successfully created) to remove Immuta-managed resources from your Amazon Redshift environment.

    2. Copy the request example.

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

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

    The response returns the status of the Amazon Redshift Spectrum integration configuration that has been deleted. 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.

    configure an Amazon Redshift Spectrum integration
    get an Amazon Redshift Spectrum integration
    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": "Redshift",
        "autoBootstrap": false,
        "config": {
          "host": "organization.aws.amazon.com",
          "database": "immuta",
          "impersonation": {
            "enabled": false
          },
          "authenticationType": "userPassword",
          "username": "taylor@redshift.com",
          "password": "abc1234"
        }
        }'
    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Redshift",
        "autoBootstrap": false,
        "config": {
          "host": "organization.aws.amazon.com",
          "database": "immuta",
          "impersonation": {
            "enabled": false
          },
          "authenticationType": "userPassword",
          "username": "taylor@redshift.com",
          "password": "abc1234"
        }
        }'
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "enabled",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Initial Validation: Basic Connection Test",
          "result": [null],
          "status": "passed"
        },
        {
          "name": "Validate Automatic: Immuta Database Does Not Exist",
          "result": [],
          "status": "passed"
        }
        ]
      },
      "type": "Redshift",
      "autoBootstrap": false,
      "config": {
        "host": "organization.aws.amazon.com",
        "database": "immuta",
        "port": 5439,
        "impersonation": {
          "enabled": false
        },
        "authenticationType": "userPassword",
        "username": "<REDACTED>",
        "password": "<REDACTED>"
      }
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    [
      {
        "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: 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"
        }
      }
    ]
    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Redshift",
        "autoBootstrap": false,
        "config": {
          "host": "organization.aws.amazon.com",
          "database": "immuta",
          "impersonation": {
            "enabled": false
          },
          "authenticationType": "userPassword",
          "username": "taylor@redshift.com",
          "password": "abc1234"
        }
        }'
    curl -X 'PUT' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Redshift",
        "autoBootstrap": false,
        "config": {
          "host": "organization.aws.amazon.com",
          "database": "immuta",
          "impersonation": {
            "enabled": false
          },
          "authenticationType": "userPassword",
          "username": "taylor@redshift.com",
          "password": "abc1234"
        }
        }'
    curl -X 'DELETE' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "deleting",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Initial Validation: Basic Connection Test",
          "result": [null],
          "status": "passed"
        },
        {
          "name": "Validate Automatic: Immuta Database Does Not Exist",
          "result": [],
          "status": "passed"
        }
        ]
      }
    }

    Requirements

    Permissions

    Configure the integration

    Setup the Immuta database

    Generate the script

    Configure the integration in Immuta

    Response

    Get an integration

    Response

    Get all integrations

    Response

    Update an integration configuration

    Generate the updated script

    Update the integration in Immuta

    Response

    Delete an integration

    Response

  • get all integrations

  • update an Amazon S3 integration

  • delete an Amazon S3 integration

    • S3 integration enabled in Immuta; contact your Immuta representative to enable this integration

    • Write policies private preview enabled for your account; contact your Immuta representative to get this feature enabled

    • No location is registered in your AWS Access Grants instance before configuring the integration in Immuta

    • Enable AWS IAM Identity Center (IDC) (recommended): is the best approach for user provisioning because it treats users as users, not users as roles. Consequently, access controls are enforced for the querying user, nothing more. This approach eliminates over-provisioning and permits granular access control. Furthermore, IDC uses trusted identity propagation, meaning AWS propagates a user's identity wherever that user may operate within the AWS ecosystem. As a result, a user's identity always remains known and consistent as they navigate across AWS services, which is a key requirement for organizations to properly govern that user.

      Enabling IDC does not impact any existing access controls; it is additive. Immuta will manage the GRANTs for you using IDC if it is enabled and configured in Immuta. See the for instructions on mapping users from AWS IDC to user accounts in Immuta.

    • APPLICATION_ADMIN Immuta permission to configure the integration

    • CREATE_S3_DATASOURCE Immuta permission to register S3 prefixes

    • There are two AWS roles that you will set up in AWS before configuring the integration in Immuta:

      • : The S3 Access Grants service assumes this role to vend credentials to the querying user. Permissions required for this IAM role are provided in the .

      • : Immuta uses this role to authenticate with AWS, set up the integration, and issue grants. This entity must

        • have the to create locations and issue grants:

    1. Follow AWS documentation to create an Access Grants instance using the S3 console, AWS CLI, AWS SDKs, or the REST API. AWS supports one Access Grants instance per region per AWS account.

    2. Create a permissions policy with the following permissions. You will attach this permissions policy to your location IAM role once created.

      If you use server-side encryption with AWS Key Management Service (AWS KMS) keys to encrypt your data, the following permissions are required for the IAM role in the policy. If you do not use this feature, do not include these permissions in your IAM policy:

      • kms:Decrypt

      • kms:GenerateDataKey

      Replace <bucket_arn> in the example below with the ARN of the bucket scope that contains data you want to grant access to.

    1. Create an AWS IAM role and select AWS account as the trusted entity type.

    2. Edit the trust policy to give the S3 Access Grants service principal access to this role in the resource policy file.

      The trust policy for this role should include at least the permissions provided in the example below, but might need additional permissions depending on other local setup factors.

      {
        "Version": "2012-10-17",
          "Statement": [
          {
            "Sid": "Stmt1234567891011",
            "Effect": "Allow",
            "Principal": {
              "Service":"access-grants.s3.amazonaws.com"
            },
            "Action": [
              "sts:AssumeRole", 
              "sts:SetSourceIdentity"
            ]
          }
        ]
      }           
    3. Attach the permissions policy you created in the previous step to this IAM role to grant the permissions to the role. Once you begin configuring the integration in Immuta, you will add this role to your integration configuration so that Immuta can register this role with your Access Grants location.

    1. Create a permissions policy with the permissions in the sample policy below.

      Replace <location_role_arn> and <access_grants_instance_arn> in the example below with the ARNs of the location IAM role you created and your Access Grants instance, respectively. The Access Grants instance resource ARN should be scoped to apply to any future locations that will be created under this Access Grants instance. For example, "Resource": "arn:aws:s3:us-east-2:6********499:access-grants/default*" ensures that the role would have permissions for both of these locations:

      1. arn:aws:s3:us-east-2:6********499:access-grants/default/newlocation1

      2. arn:aws:s3:us-east-2:6********499:access-grants/default/newlocation2

    2. If you use AWS IAM Identity Center, associate . Then add the permissions listed in the sample policy below to your IAM authentication policy.

      Copy the JSON below and replace the following bracketed placeholder values with your own. For details about the actions and resource values, see the .

      • <iam_identity_center_instance_arn>: The that is configured with the application.

      • <iam_identity_center_application_arn_for_s3_access_grants>

    3. role (recommended) and select AWS account as the trusted entity type.

    4. Attach the permissions policy you created in the previous step to the authentication IAM role to grant the to the role. Once you begin configuring the integration in Immuta, you will add this role to your integration configuration so that Immuta can authenticate with AWS and set up the integration.

    This request configures the integration using the AWS access key authentication method.

    curl -X 'POST' \
        'https://<your-immuta-url.com>/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>' \
        -d '{
        "type": "Native S3",
        "autoBootstrap": false,
        "config": {
          "name": "<name-of-your-integration>",
          "awsAccountId": "<your-aws-account-id>",
          "awsRegion": "<your-aws-region>",
          "awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
          "awsLocationPath": "<your-s3-location-path>",
          "authenticationType": "accessKey",
          "awsAccessKeyId": "<your-access-key-id>",
          "awsSecretAccessKey": "<your-secret-access-key>"
        }
        }'
    1. Copy the request example. The example uses JSON format, but the request also accepts YAML.

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

    3. Change the config values to your own, where

      • name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.

      • awsAccountId is the ID of your AWS account.

      • awsRegion is the account's AWS region (such as us-east-1).

    This request configures the integration using the automatic authentication method, which searches and obtains credentials using the . This method requires a configured and is only supported if you're using a self-managed deployment of Immuta. Contact your Immuta representative to customize your deployment and set up an IAM role for a service account that can give Immuta the credentials to set up the integration. Your Immuta representative will

    1. Provide the AWS account to add to your trust policy.

    2. Update the Immuta AWS configuration to allow Immuta to assume the role of your service principal.

    Then, complete the steps below.

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

    The response returns the status of the S3 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": "There is no existing integration matching this configuration",
          "status": "passed"
        },
        {
          "name": "The provided integration name is unique across Immuta S3 integrations",
          "status": "passed"
        },
        {
          "name": "The provided access grants location role is a valid ARN format",
          "status": "passed"
        },
        {
          "name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
          "status": "passed"
        },
        {
          "name": "An AWS Access Grants instance is configured in the provided AWS account and region",
          "status": "passed"
        },
        {
          "name": "The provided S3 path exists and Immuta can list prefixes",
          "status": "passed"
        },
        {
          "name": "An AWS Access Grants location does not yet exist for the provided path",
          "status": "passed"
        }
        ]
      }
    }

    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.

    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Access Grants location already exists on provided path."
    }
    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.

    The response returns an S3 integration configuration. See the response schema reference for details about the response schema. An unsuccessful response 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.

    1. Copy the request example.

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

    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.

    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.

    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 from above to your own. The editable values listed below are the only parameters that can change from the integration's existing configuration. The required parameters listed below must match the integration's existing configuration.

      • editable values:

        • name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.

        • authenticationType is the method used to authenticate with AWS when configuring the S3 integration (accepted values are auto or accessKey).

      • required values from existing configuration:

        • awsRoleToAssume is the optional AWS IAM role ARN Immuta assumes when interacting with AWS.

        • awsAccountId is the ID of your AWS account.

    The response returns the status of the Amazon S3 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": "There is no existing integration matching this configuration",
          "status": "passed"
        },
        {
          "name": "The provided integration name is unique across Immuta S3 integrations",
          "status": "passed"
        },
        {
          "name": "The provided access grants location role is a valid ARN format",
          "status": "passed"
        },
        {
          "name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
          "status": "passed"
        },
        {
          "name": "An AWS Access Grants instance is configured in the provided AWS account and region",
          "status": "passed"
        },
        {
          "name": "The provided S3 path exists and Immuta can list prefixes",
          "status": "passed"
        },
        {
          "name": "An AWS Access Grants location does not yet exist for the provided path",
          "status": "passed"
        }
        ]
      }
    }

    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.

    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Unable to edit integration with ID 123456789 in current state editing."
    }
    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 delete.

    The response returns the status of the S3 integration configuration that has been deleted. 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.

    Private preview: This integration is available to select accounts. Contact your Immuta representative for details.

    S3 integration
    configure an Amazon S3 integration
    curl -X 'GET' \
        'https://<your-immuta-url.com>/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>'
    {
      "id": "123456789",
      "status": "enabled",
      "validationResults": {
        "status": "passed",
        "validationTests": [
          {
            "name": "There is no existing integration matching this configuration",
            "status": "passed"
          },
          {
            "name": "The provided integration name is unique across Immuta S3 integrations",
            "status": "passed"
          },
          {
            "name": "The provided access grants location role is a valid ARN format",
            "status": "passed"
          },
          {
            "name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
            "status": "passed"
          },
          {
            "name": "An AWS Access Grants instance is configured in the provided AWS account and region",
            "status": "passed"
          },
          {
            "name": "The provided S3 path exists and Immuta can list prefixes",
            "status": "passed"
          },
          {
            "name": "An AWS Access Grants location does not yet exist for the provided path",
            "status": "passed"
          }
        ]
      },
      "type": "Native S3",
      "autoBootstrap": false,
      "config": {
        "port": 443,
        "name": "S3 integration",
        "awsAccountId": "123456789",
        "awsRegion": "us-east-1",
        "awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
        "awsLocationPath": "s3://",
        "authenticationType": "accessKey",
        "awsAccessKeyId": "123456789",
        "awsSecretAccessKey": "123456789"
      }
      }
    curl -X 'GET' \
        'https://<your-immuta-url.com>/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>'
    [
      {
        "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": "123456789",
        "status": "enabled",
        "validationResults": {
          "status": "passed",
          "validationTests": [
            {
              "name": "There is no existing integration matching this configuration",
              "status": "passed"
            },
            {
              "name": "The provided integration name is unique across Immuta S3 integrations",
              "status": "passed"
            },
            {
              "name": "The provided access grants location role is a valid ARN format",
              "status": "passed"
            },
            {
              "name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
              "status": "passed"
            },
            {
              "name": "An AWS Access Grants instance is configured in the provided AWS account and region",
              "status": "passed"
            },
            {
              "name": "The provided S3 path exists and Immuta can list prefixes",
              "status": "passed"
            },
            {
              "name": "An AWS Access Grants location does not yet exist for the provided path",
              "status": "passed"
            }
          ] },
          "type": "Native S3",
          "autoBootstrap": false,
          "config": {
            "port": 443,
            "name": "S3 integration",
            "awsAccountId": "123456789",
            "awsRegion": "us-east-1",
            "awsLocationRole": "arn:aws:iam::123456789:role/access-grants-instance-role",
            "awsLocationPath": "s3://",
            "authenticationType": "accessKey",
            "awsAccessKeyId": "123456789",
            "awsSecretAccessKey": "123456789"
          }
      }
    ]
    curl -X 'PUT' \
        'https://<your-immuta-url.com>/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>' \
        -d '{
        "type": "Native S3",
        "autoBootstrap": false,
        "config": {
          "name": "<your-edited-integration-name>",
          "awsAccountId": "<your-aws-account-id>",
          "awsRegion": "<your-aws-region>",
          "awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
          "awsLocationPath": "<your-s3-location-path>",
          "authenticationType": "<accessKey-or-auto>",
          "awsAccessKeyId": "<your-aws-access-key-id>",
          "awsSecretAccessKey": "<your-secret-access-key>"
        }
        }'
    curl -X 'DELETE' \
        'https://<your-immuta-url.com>/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>'
    {
      "id": "123456789",
      "status": "deleting",
      "validationResults": {
        "status": "passed",
        "validationTests": [
          {
            "name": "The provided access grants location role is a valid ARN format",
            "status": "passed"
          },
          {
            "name": "The provided AWS credentials allow fetching the caller's identity via the AWS STS API",
            "status": "passed"
          },
          {
            "name": "An AWS Access Grants instance is configured in the provided AWS account and region",
            "status": "passed"
          },
          {
            "name": "The provided S3 path exists and Immuta can list prefixes",
            "status": "passed"
          }
        ]
      }
    }

    Requirements

    Permissions

    Set up S3 Access Grants instance and IAM roles

    Location IAM role

    Authentication IAM role (or user)

    Configure the integration in Immuta

    Response

    Get an integration

    Response

    Get all integrations

    Response

    Update an integration configuration

    Response

    Delete an integration

    Response

    get an Amazon S3 integration
    GRANT TEMP ON DATABASE
  • REVOKE ALL PRIVILEGES ON DATABASE

  • CREATE USER
  • GRANT TEMP ON DATABASE

  • REVOKE ALL PRIVILEGES ON DATABASE

  • username and password are the credentials for the system account that can act on Redshift objects and configure the integration.

    username and password are the credentials for the system account that can act on Redshift objects and configure the integration.

    A Redshift database that contains an external schema and external tables
    existing or new database
    object description
    Managing users and permissions guide
    existing or new database
    object description
    Managing users and permissions guide
    existing or new database
    object description
    Managing users and permissions guide
    updating the script
    existing or new database
    object description
    Managing users and permissions guide
    accessgrantslocation resource:
    • s3:CreateAccessGrant

    • s3:DeleteAccessGrantsLocation

    • s3:GetAccessGrantsLocation

    • s3:UpdateAccessGrantsLocation

  • accessgrantsinstance resource:

    • s3:CreateAccessGrantsInstance

    • s3:CreateAccessGrantsLocation

    • s3:DeleteAccessGrantsInstance

    • s3:GetAccessGrantsInstance

    • s3:GetAccessGrantsInstanceForPrefix

    • s3:GetAccessGrantsInstanceResourcePolicy

    • s3:ListAccessGrants

    • s3:ListAccessGrantsLocations

  • accessgrant resource:

    • s3:DeleteAccessGrant

    • s3:GetAccessGrant

  • bucket resource: s3:ListBucket

  • role resource:

    • iam:GetRole

    • iam:PassRole

  • all resources: s3:ListAccessGrantsInstances

  • : The
    configured with IAM Identity Center.
  • <aws_account>: Your AWS account ID.

  • <identity_store_id>: The globally unique identifier for the identity store (IdentityStoreId) that is connected to the Identity Center instance. This value is generated when a new identity store is created.

  • awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.
  • awsLocationPath is the base S3 location prefix that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.

  • awsAccessKeyId is the AWS access key ID of the AWS account configuring the integration.

  • awsSecretAccessKey is the AWS secret access key of the AWS account configuring the integration.

  • Copy the request example. The example uses JSON format, but the request also accepts YAML.

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

  • Change the config values to your own, where

    • name is the name for the integration that is unique across all Amazon S3 integrations configured in Immuta.

    • awsAccountId is the ID of your AWS account.

    • awsRegion is the account's AWS region (such as us-east-1).

    • awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.

    • awsLocationPath is the base S3 location that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.

  • awsAccessKeyId is the AWS access key ID for the AWS account editing the integration.

  • awsSecretAccessKey is the AWS secret access key for the AWS account editing the integration.

  • awsRegion is the account's AWS region (such as us-east-1).
  • awsLocationRole is the AWS IAM role ARN assigned to the base access grants location. This is the role the AWS Access Grants service assumes to vend credentials to the grantee.

  • awsLocationPath is the base S3 location that Immuta will use for this connection when registering S3 data sources. This path must be unique across all S3 integrations configured in Immuta.

  • IDC
    Amazon S3 integration reference guide
    Location IAM role
    Set up S3 Access Grants instance and IAM roles section
    Authentication IAM role (or user)
    have ownership of the buckets Immuta will enforce policies on
    permissions to perform the following actions
    your IAM Identity Center instance with your S3 Access Grants instance
    IAM Identity Center API reference documentation
    ARN of the instance of IAM Identity Center (InstanceArn)
    Create an AWS IAM
    permissions
    AWS SDK's default credential provider chain
    IAM role for a service account
    ARN of the S3 Access Grants instance (ApplicationArn)
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "ObjectLevelReadPermissions",
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:GetObjectVersion",
                    "s3:GetObjectAcl",
                    "s3:GetObjectVersionAcl",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    <bucket arn>
                ]
            },
            {
                "Sid": "ObjectLevelWritePermissions",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:PutObjectAcl",
                    "s3:PutObjectVersionAcl",
                    "s3:DeleteObject",
                    "s3:DeleteObjectVersion",
                    "s3:AbortMultipartUpload"
                ],
                "Resource": [
                    <bucket arn>
                ]
            },
            {
                "Sid": "BucketLevelReadPermissions",
                "Effect": "Allow",
                "Action": [
                    "s3:ListAllMyBuckets",
                    "s3:ListBucket"
                ],
                "Resource": [
                    <bucket arn>
                ]
            }
        ]
    }
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "RolePermissions",
                "Effect": "Allow",
                "Action": [
                    "iam:GetRole",
                    "iam:PassRole"
                ],
                "Resource": "<location_role_arn>"
            },
            {
                "Sid": "AccessGrants",
                "Effect": "Allow",
                "Action": [
                    "s3:CreateAccessGrant",
                    "s3:DeleteAccessGrantsLocation",
                    "s3:GetAccessGrantsLocation",
                    "s3:CreateAccessGrantsLocation",
                    "s3:GetAccessGrantsInstance",
                    "s3:GetAccessGrantsInstanceForPrefix",
                    "s3:GetAccessGrantsInstanceResourcePolicy",
                    "s3:ListAccessGrants",
                    "s3:ListAccessGrantsLocations",
                    "s3:ListAccessGrantsInstances",
                    "s3:DeleteAccessGrant",
                    "s3:GetAccessGrant"
                ],
                "Resource": [
                    "<access_grants_instance_arn>"
                ]
            }
        ]
    }
    curl -X 'POST' \
        'https://<your-immuta-url.com>/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: <your-api-key>' \
        -d '{
        "type": "Native S3",
        "autoBootstrap": false,
        "config": {
          "name": "<name-of-your-integration>",
          "awsAccountId": "<your-aws-account-id>",
          "awsRegion": "<your-aws-region>",
          "awsLocationRole": "<arn:aws:iam::your-location-role-arn:role/access-grants-instance-role>",
          "awsLocationPath": "<your-s3-location-path>",
          "authenticationType": "auto"
        }
        }'
    {
      "Sid": "sso",
      "Effect": "Allow",
      "Action": [
        "sso:DescribeInstance",
        "sso:DescribeApplication",
        "sso-directory:DescribeUsers"
      ],
      "Resource": [
        "<iam_identity_center_instance_arn>",
        "<iam_identity_center_application_arn_for_s3_access_grants>",
        "arn:aws:identitystore:::user/*",
        "arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
      ]
    }, {
      "Sid": "idc",
      "Effect": "Allow",
      "Action": [
        "identitystore:DescribeUser",
        "identitystore:DescribeGroup"
      ],
      "Resource": [
        "<iam_identity_center_instance_arn>",
        "<iam_identity_center_application_arn_for_s3_access_grants>",
        "arn:aws:identitystore:::user/*",
        "arn:aws:identitystore::<aws_account>:identitystore/<identity_store_id>"
      ]
    }

    Configure a Google BigQuery View-Based Integration

    Use the API to set up your Google BigQuery view-based integration

    Private preview: This integration is available to all accounts.

    The Google BigQuery resource allows you to create, configure, and manage your Google BigQuery view-based integration. In this integration, Immuta generates policy-enforced views in your configured Google BigQuery dataset for tables registered as Immuta data sources.

    Use the /integrations endpoint to

    • configure a Google BigQuery view-based integration

    • get a Google BigQuery view-based integration

    • APPLICATION_ADMIN Immuta permission

    • Google BigQuery view-based integration enabled in Immuta (work with your Immuta representative to enable this integration)

    • To execute the Immuta script from your command line to , you must be authenticated to the gcloud CLI utility as a user with all of the following roles:

    by either using the Google Cloud console or the provided Immuta script.

    1. Copy the request example. The example uses JSON format, but the request also accepts YAML.

    2. Replace the Immuta URL and with your own.

    3. Change the config values to your own, where

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

    The response returns the status of the integration configuration connection. See the for details about the response schema.

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    1. Copy the request example.

    2. Replace the Immuta URL and 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 .

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

    1. Copy the request example.

    2. Replace the Immuta URL and with your own.

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

    1. Copy the request example, which updates the private key. The example uses JSON format, but the request also accepts YAML.

    2. Replace the Immuta URL and with your own.

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

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

    The response returns the status of the integration configuration connection. See the for details about the response schema.

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    1. Copy the request example.

    2. Replace the Immuta URL and with your own.

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

    The response returns the status of the integration configuration that has been deleted. See the for details about the response schema. An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    roles/iam.roleAdmin

  • roles/iam.serviceAccountAdmin

  • roles/serviceusage.serviceUsageAdmin

  • role is the Google Cloud role used to connect to Google BigQuery.
  • datasetSuffix is the suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.

  • dataset is the name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.

  • location is the dataset's location, which can be any valid GCP location (such as us-east-1).

  • credential is the Google BigQuery service account JSON keyfile credential content. See the Google documentation for guidance on generating and downloading this keyfile.

  • Change the config values to your own, where
    • role is the Google Cloud role used to connect to Google BigQuery.

    • datasetSuffix is the suffix to postfix to the name of each dataset created to store secure views. This string must start with an underscore.

    • dataset is the name of the BigQuery dataset to provision inside of the project for Immuta metadata storage.

    • location is the dataset's location, which can be any valid GCP location (such as us-east-1).

    • credential is the Google BigQuery service account JSON keyfile credential content. See the for guidance on generating and downloading this keyfile.

    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Google BigQuery",
        "autoBootstrap": false,
        "config": {
          "role": "immuta",
          "datasetSuffix": "_secureView",
          "dataset": "immuta",
          "location": "us-east-1",
          "credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-account-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
        }
        }'
    {
      "id": "123456789",
      "status": "creating",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Basic Validation: Verify service account not being used for data source connection credentials",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Immuta Service Account postfix",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Non-matching service account in key file",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Connection can be made to BigQuery",
          "status": "passed"
        },
        {
          "name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "warning",
          "message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Google BigQuery integration already exists on host organization.cloud.google.com (id = 123456789)"
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "enabled",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Basic Validation: Verify service account not being used for data source connection credentials",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Immuta Service Account postfix",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Non-matching service account in key file",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Connection can be made to BigQuery",
          "status": "passed"
        },
        {
          "name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "warning",
          "message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        }
        ]
      },
      "type": "Google BigQuery",
      "autoBootstrap": false,
      "config": {
        "port": 443,
        "role": "immuta",
        "datasetSuffix": "_secureView",
        "dataset": "immuta",
        "location": "us-east-1",
        "credential": {
          "type": "service_account",
          "project_id": "innate-conquest-123456",
          "private_key_id": "9163c12345690924f5dd218ff39",
          "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z\//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n",
          "client_email": "service-account-id@innate-conquest-123456.iam.gserviceaccount.com",
          "client_id": "1166290***432952487857",
          "auth_uri": "https://accounts.google.com/o/oauth2/auth",
          "token_uri": "https://oauth2.googleapis.com/token",
          "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
          "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/service-account-id%40innate-conquest-123456.iam.gserviceaccount.com",
          "universe_domain": "googleapis.com"
        }
      }
      }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    [
      {
        "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"
        }
      }
    ]
    curl -X 'PUT' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "type": "Google BigQuery",
        "autoBootstrap": false,
        "config": {
          "role": "immuta",
          "datasetSuffix": "_secureView",
          "dataset": "immuta",
          "location": "us-east-1",
          "credential": "{\"type\":\"service_account\",\"project_id\":\"innate-conquest-123456\",\"private_key_id\":\"9163c12345690924f5dd218ff39\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\nXXXXXXXro0s\n/yQlPQijowkccmrmWJyr93kdLnwJzBvLHCto/+W\ncvF2ygX9oM/dyUK//z//4nptMp+Ck//Yw3D4rIBwGu4DWiR1qRnf\nDoGyXfThPTQ==\n-----END PRIVATE KEY-----\n\",\"client_email\":\"service-account-id@innate-conquest-123456.iam.gserviceaccount.com\",\"client_id\":\"1166290***432952487857\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/service-account-id%40innate-conquest-123456.iam.gserviceaccount.com\",\"universe_domain\":\"googleapis.com\"}"
        }
        }'
    {
      "id": "123456789",
      "status": "editing",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Basic Validation: Verify service account not being used for data source connection credentials",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Immuta Service Account postfix",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Non-matching service account in key file",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Connection can be made to BigQuery",
          "status": "passed"
        },
        {
          "name": "Initialize Validation: [Dataset - exists] innate-conquest-123456.immuta",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - create] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Table - insert] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "warning",
          "message": "Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. DML queries are not allowed in the free tier. Set up a billing account to remove this restriction. Confirm that the bootstrap script was executed without any modifications. This warning will not prevent the connection but continue at your own risk as some features may not function."
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After insert)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - update] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - get] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE (After update)",
          "status": "skipped"
        },
        {
          "name": "Validate Manual: [Table - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144.IMMUTA_VERIFY_TABLE",
          "status": "passed"
        },
        {
          "name": "Validate Manual: [Dataset - delete] innate-conquest-123456.IMMUTA_VERIFY_DATASET_144",
          "status": "passed"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Unable to edit integration with ID 123456789 in current state editing."
    }
    curl -X 'DELETE' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "id": "123456789",
      "status": "deleting",
      "validationResults": {
        "status": "passed",
        "validationTests": [
        {
          "name": "Basic Validation: Verify service account not being used for data source connection credentials",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Immuta Service Account postfix",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Non-matching service account in key file",
          "status": "passed"
        },
        {
          "name": "Basic Validation: Connection can be made to BigQuery",
          "status": "passed"
        }
        ]
      }
    }

    Requirements

    Prerequisite

    Configure the integration

    Response

    Get an integration

    Response

    Get all integrations

    Response

    Update an integration configuration

    Response

    Delete an integration

    Response

    get all integrations
    update a Google BigQuery view-based integration
    delete a Google BigQuery view-based integration
    create a Google Cloud service account and role
    Create a Google Cloud service account and role
    API key
    config object description
    response schema reference
    HTTP status codes and error messages
    API key
    GET /integrations endpoint
    response schema reference
    HTTP status codes and error messages
    API key
    response schema reference
    HTTP status codes and error messages
    API key
    config object description
    response schema reference
    HTTP status codes and error messages
    API key
    response schema reference
    HTTP status codes and error messages
    Google documentation

    Configure an Azure Synapse Analytics Integration

    Use the API to set up your 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

    • configure an Azure Synapse Analytics integration

    • 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

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

    • : 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.

    • : 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.

    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 for parameter definitions, value types, and additional configuration options.

    1. Replace the Immuta URL and with your own.

    2. Change the config values to your own, where

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

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

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    To manually configure the integration, complete the following steps:

    1. Note: This script is not required when using the OAuth authentication method. Go to the next step.

    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 for parameter definitions, value types, and additional configuration options.

    1. Replace the Immuta URL and with your own.

    2. Change the config values to your own, where

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

    Response

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

    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 .

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

    1. Replace the Immuta URL and with your own.

    2. Pass the same payload you sent when , where

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

    Response

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

    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 .

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

    1. Replace the Immuta URL and with your own.

    2. Pass the same payload you sent when , where

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

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

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    1. Copy the request example.

    2. Replace the Immuta URL and 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 .

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

    1. Copy the request example.

    2. Replace the Immuta URL and with your own.

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

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

    • (autoBootstrap is true)

    • (autoBootstrap is false)

    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 for parameter definitions, value types, and additional configuration options.

    1. Replace the Immuta URL and 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

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

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    To manually update the integration, complete the following steps:

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

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

    1. Replace the Immuta URL and 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

    Response

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

    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. The payload you provide must match the payload sent when .

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

    1. Replace the Immuta URL and with your own.

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

    3. Pass the same payload you sent when , where

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

    A successful response includes the validation tests statuses.

    An unsuccessful request returns the status code and an error message. See the for a list of statuses, error messages, and troubleshooting guidance.

    1. Copy the request example.

    2. Replace the Immuta URL and with your own.

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

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

    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.

  • This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.

    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",
          "impersonation": {
            "enabled": true,
            "role": "IMMUTA_IMPERSONATION"
          },
          "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 for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • metadataDelimiters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the 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.

    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. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the Managing users and permissions guide for instructions.

  • metadataDelimiters 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.

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

  • This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.

    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": true,
            "role": "IMMUTA_IMPERSONATION"
          },
          "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 for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • metadataDelimiters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the 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.

    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. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the Managing users and permissions guide for instructions.

  • metadataDelimiters 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.

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

  • This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.

    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": true,
            "role": "IMMUTA_IMPERSONATION"
          },
          "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 for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • metadataDelimiters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the 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.

    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. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the Managing users and permissions guide for instructions.

  • metadataDelimiters 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.

  • This request enables impersonation to allow Immuta administrators to grant users permission to query Azure Synapse Analytics data as other Immuta users.

    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": true,
            "role": "IMMUTA_IMPERSONATION"
          },
          "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 for child parameters. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the for instructions.

      • metadataDelimiters are a set of delimiters that Immuta uses to store profile data in Azure Synapse Analytics. See the 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.

    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.

  • metadataDelimiters 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.

  • 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. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the Managing users and permissions guide for instructions.

  • metadataDelimiters 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.

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

  • 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. Once you finish configuring the integration, you can grant the IMPERSONATE_USER permission to Immuta users. See the Managing users and permissions guide for instructions.

  • metadataDelimiters 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.

  • If you set
    • autoBootstrap to true when enabling the integration, include the credentials you used to configure the integration in the payload, as illustrated in the example.

    • autoBootstrap to false when enabling the integration,

      • use the script endpoint (for integrations that were not successfully created) or the endpoint (for integrations that were successfully created) to remove Immuta-managed resources from your environment,

      • use the script endpoint to finish removing Immuta-managed resources from your environment (this step is not required for integrations that were configured using the OAuth authentication method),

      • make the request above without including a payload to remove the integration from Immuta.

    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"
        }
        }'
    {
      "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"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Azure Synapse Analytics integration already exists on host organization.azure.com (id = 123456789)"
    }
    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"
        }
        }'
    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"
        }
        }'
    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"
        }
        }'
    {
      "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"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Azure Synapse Analytics integration already exists on host organization.azure.com (id = 123456789)"
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    {
      "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>"
      }
    }
    {
      "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": true,
          "role": "IMMUTA_IMPERSONATION"
        },
        "metadataDelimiters": {
          "hashDelimiter": "|",
          "hashKeyDelimiter": "-",
          "arrayDelimiter": ","
        },
        "username": "<REDACTED>"
      }
    }
    curl -X 'GET' \
        'https://www.organization.immuta.com/integrations' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f'
    [
      {
        "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"
        }
      }
    ]
    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"
        }
        }'
    {
      "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"
        },
        {
          "name": "Validate Immuta system user can manage database",
          "result": [
          {
            "name": "taylor@synapse.com"
          }
          ],
          "status": "passed"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Unable to edit integration with ID 123456789 in current state editing."
    }
    curl -X 'POST' \
        'https://www.organization.immuta.com/integrations/{id}/scripts/edit' \
        -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"
        }
        }'
    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": 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"
        }
        }'
    {
      "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"
        },
        {
          "name": "Validate Immuta system user can manage database",
          "result": [
          {
            "name": "taylor@synapse.com"
          }
          ],
          "status": "passed"
        }
        ]
      }
    }
    {
      "statusCode": 409,
      "error": "Conflict",
      "message": "Unable to edit integration with ID 123456789 in current state editing."
    }
    curl -X 'DELETE' \
        'https://www.organization.immuta.com/integrations/{id}' \
        -H 'accept: application/json' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: 846e9e43c86a4ct1be14290d95127d13f' \
        -d '{
        "authenticationType": "userPassword",
        "username": "taylor@synapse.com",
        "password": "abc1234"
        }'
    {
      "id": "123456789",
      "status": "deleting",
      "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"
        }
        ]
      }
    }

    Requirements

    Configure the integration

    Automatic setup

    Response

    Manual setup

    Generate the first script

    This script is not required when using the OAuth authentication method. Go to the next section.

    Generate the second script

    Configure the integration in Immuta

    Response

    Get an integration

    Response

    Get all integrations

    Response

    Update an integration configuration

    Automatic update

    Response

    Manual update

    Generate the updated script

    Update the integration in Immuta

    Response

    Delete an integration

    Response

    get an Azure Synapse Analytics integration
    get all integrations
    update an Azure Synapse Analytics integration
    delete an Azure Synapse Analytics integration
    Automatic setup
    Manual setup
    config object description
    API key
    response schema reference
    HTTP status codes and error messages
    Generate the first Immuta script and run it in your Azure Synapse Analytics environment.
    Generate the second Immuta script and run it in your Azure Synapse Analytics environment.
    Configure the integration in Immuta.
    config object description
    API key
    generating the first script
    config object description
    API key
    generating the first script
    generating the scripts
    config object description
    API key
    generating the scripts
    response schema reference
    HTTP status codes and error messages
    API key
    GET /integrations endpoint
    response schema reference
    HTTP status codes and error messages
    API key
    response schema reference
    HTTP status codes and error messages
    automatic update
    manual update
    config object description
    API key
    response schema reference
    HTTP status codes and error messages
    Generate the updated Immuta script and run it in your Azure Synapse Analytics environment.
    Update the integration in Immuta.
    config object description
    API key
    generating the updated script
    config object description
    API key
    generating the script
    response schema reference
    HTTP status codes and error messages
    API key
    response schema reference
    HTTP status codes and error messages
    object description
    Managing users and permissions guide
    object description
    object description
    Managing users and permissions guide
    object description
    object description
    Managing users and permissions guide
    object description
    object description
    Managing users and permissions guide
    object description
    cleanup
    delete
    post-cleanup