# Azure Synapse Analytics Overview

This page describes the Azure Synapse Analytics integration, through which Immuta applies policies directly in Azure Synapse Analytics. For a tutorial on configuring Azure Synapse Analytics see the [Azure Synapse Integration page](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md).

The Azure Synapse Analytics is a policy push integration that allows Immuta to apply policies directly in Azure Synapse Analytics Dedicated SQL pools without the need for users to go through a proxy. Instead, users can work within their existing Synapse Studio and have per-user policies dynamically applied at query time.

## How the integration works

This integration works on a per-Dedicated-SQL-pool basis: all of Immuta's policy definitions and user entitlements data need to be in the same pool as the target data sources because Dedicated SQL pools do not support cross-database joins. Immuta creates schemas inside the configured Dedicated SQL pool that contain policy-enforced views that users query.

When the integration is configured, the Application Admin specifies the

* **Immuta Database**: This is the pre-existing database Immuta uses. Immuta will create views from the tables contained in this database, and all schemas and views created by Immuta will exist in this database, such as the schemas `immuta_system`, `immuta_functions`, and the `immuta_procedures` that contain the tables, views, UDFs, and stored procedures that support the integration.
* **Immuta Schema**: The schema that Immuta manages. All views generated by Immuta for tables registered as data sources will be created in this schema.
* **User Profile Delimiters**: Since Azure Synapse Analytics dedicated SQL pools do not support array or hash objects, certain user access information is stored as delimited strings; the Application Admin can modify those delimiters to ensure they do not conflict with possible characters in strings.

For a tutorial on configuring the integration see the [Azure Synapse Integration page](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md).

### Data source naming convention

Synapse data sources are represented as views and are under one schema instead of a database, so their view names are a combination of their schema and table name, separated by an underscore.

For example, with a configuration that uses `IMMUTA` as the schema in the database `dedicated_pool`, the view name for the data source `dedicated_pool.tpc.case` would be `dedicated_pool.IMMUTA.tpc_case`.

You can see the view information on the data source details page under **Connection Information**.

### Policy enforcement

This integration uses webhooks to keep views up-to-date with the corresponding Immuta data sources. When a data source or policy is created, updated, or disabled, a webhook is called that creates, modifies, or deletes the dynamic view in the Immuta schema. *Note that only standard views are available because Azure Synapse Analytics Dedicated SQL pools do not support secure views.*

### Data flow

1. An Immuta Application Administrator [configures the Synapse integration](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md), registering their initial Synapse Dedicated SQL pool with Immuta.
2. Immuta creates Immuta schemas inside the configured Synapse Dedicated SQL pool.
3. A Data Owner [registers Synapse tables](/saas/configuration/integrations/data-and-integrations/registering-metadata/register-data-sources/synapse-tutorial.md) in Immuta as data sources. A Data Owner, Data Governor, or Administrator [creates or changes a policy](/saas/govern/secure-your-data/authoring-policies-in-secure.md) or [user](/saas/configuration/people/users-index/how-to-guides/managing-attribute-and-group.md) in Immuta.
4. Data source metadata, tags, user metadata, and policy definitions are stored in Immuta's Metadata Database.
5. The Immuta Web Service calls a stored procedure that modifies the user entitlements or policies and updates data source view definitions as necessary.
6. A Synapse user who is subscribed to the data source in Immuta [queries the corresponding data source view](/saas/govern/secure-your-data/data-consumers/query-data/synapse.md) in Synapse and sees policy-enforced data.

<figure><img src="/files/ubkLjstMUaLdMCWQ7vK5" alt=""><figcaption></figcaption></figure>

## Integration health status

The definitions for each status and the state of configured data platform integrations is available in the [response schema of the integrations API](/saas/developer-guides/api-intro/integrations-api/reference-guides/response-schema.md#integration-statuses).

## Authentication methods

The Azure Synapse Analytics integration supports the following authentication methods to configure the integration and create data sources:

* **Username and password**: Immuta supports SQL authentication with username and password for Azure Synapse Analytics. See the [SQL Authentication in Azure Synapse Analytics documentation](https://learn.microsoft.com/en-us/azure/synapse-analytics/sql/sql-authentication?tabs=serverless) for details.
* **OAuth authentication with Microsoft Entra ID**: You can use this authentication method to register data sources or configure the Azure Synapse Analytics integration using the [manual setup method](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md#manual-setup). To use this authentication method, OAuth must be set up via [Microsoft Entra ID app registration with a **client secret**](https://learn.microsoft.com/en-us/azure/azure-sql/database/authentication-aad-service-principal-tutorial?view=azuresql#create-an-application-in-microsoft-entra-id). See the [Microsoft Entra documentation](https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols) for details about using OAuth authentication with Microsoft Entra ID.

## Tag ingestion

Immuta cannot ingest tags from Synapse, but you can connect any of these [supported external catalogs](/saas/configuration/tags/catalogs/reference-guides/pre-configuration.md) to work with your integration.

## User impersonation

Impersonation allows users to query data as another Immuta user in Azure Synapse Analytics. To enable user impersonation, see the [Configure Azure Synapse Analytics integration guide](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md).

## Multiple integrations

You can [configure multiple integrations of Synapse](/saas/configuration/integrations/azure-synapse-analytics/synapse-1.md) to a single Immuta tenant.

## Limitations

* Immuta does not support the following masking types in this integration because of limitations with dedicated SQL pools (linked below). Any column assigned one of these masking types will be masked to NULL:
  * Reversible Masking: Synapse UDFs currently only support SQL, but Immuta needs to execute code (such as JavaScript or Python) to support this masking feature. See the [Synapse Documentation for details](https://docs.microsoft.com/en-us/sql/t-sql/statements/create-function-sql-data-warehouse?view=azure-sqldw-latest).
  * Format Preserving Masking: Synapse UDFs currently only support SQL, but Immuta needs to execute code (such as JavaScript or Python) to support this masking feature. See the [Synapse Documentation for details](https://docs.microsoft.com/en-us/sql/t-sql/statements/create-function-sql-data-warehouse?view=azure-sqldw-latest).
  * Regex: The built in string replace function does not support full regex. See the [Synapse Documentation for details](https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql?view=azure-sqldw-latest).
* The delimiters configured when enabling the integration cannot be changed once they are set. To change the delimiters, the integration has to be disabled and re-enabled.
* If the generated view name is more than 128 characters, then the view name is shortened to 128 characters. This could cause collisions between view names if the shortened version is the same for two different data sources.
* For proper updates, the dedicated SQL pools have to be running when changes are made to users or data sources in Immuta.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.immuta.com/saas/configuration/integrations/azure-synapse-analytics/azure-synapse-analytics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
