> ## Documentation Index
> Fetch the complete documentation index at: https://infisical.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure Key Vault connection

> Learn how to configure a Azure Key Vault Connection for Infisical.

Infisical supports four methods for connecting to Azure Key Vault: OAuth, Client Secret, Certificate (SPN with certificate), and Managed Identity.

> [accordion] Self-Hosted Instance
>
> Using the Azure Key Vault connection on a self-hosted instance of Infisical requires configuring an application in Azure
> and registering your instance with it.
>
> **Prerequisites:**
>
> * Set up Azure and have an existing Key Vault instance.
>
> **1. Create an application in Azure**
>
> Navigate to Entra ID > App registrations to create a new application.
>
> > [!NOTE]
> >
> > Azure Active Directory is now Microsoft Entra ID.
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/integrations/azure-app-configuration/config-aad.png)
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/integrations/azure-app-configuration/config-new-app.png)
>
> Create the application. As part of the form, set the **Redirect URI** to `https://your-domain.com/organization/app-connections/azure/oauth/callback`.
>
> > [!TIP]
> >
> > The domain you defined in the Redirect URI should be equivalent to the `SITE_URL` configured in your Infisical instance.
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/register-callback.png)
>
> **2. Assign API permissions to the application**
>
> For the Azure Connection to work with Key Vault, you need to assign multiple permissions to the application.
>
> #### Azure Key Vault permissions
>
> Set the API permissions of the Azure application to include `user.impersonation` for the Key Vault API.
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/keyvault-azure-permissions.png)
>
> **3. Add your application credentials to Infisical**
>
> Obtain the **Application (Client) ID** in Overview and generate a **Client Secret** in Certificate & secrets for your Azure application.
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/integrations/azure-app-configuration/config-credentials-1.png)
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/integrations/azure-app-configuration/config-credentials-2.png)
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/integrations/azure-app-configuration/config-credentials-3.png)
>
> Back in your Infisical instance, add two new environment variables for the credentials of your Azure application.
>
> * `INF_APP_CONNECTION_AZURE_KEY_VAULT_CLIENT_ID`: The **Application (Client) ID** of your Azure application.
> * `INF_APP_CONNECTION_AZURE_KEY_VAULT_CLIENT_SECRET`: The **Client Secret** of your Azure application.
>
> Once added, restart your Infisical instance and use the Azure Key Vault connection.

> [accordion] Client Secret Authentication
>
> To use client secret authentication, ensure your Azure Service Principal has the required permissions and is connected to the Azure Key Vault instances you want to use.
>
> **Prerequisites:**
>
> * Set up Azure and have an existing Key Vault instance.
> * The service principal must be connected to your target Azure Key Vault instance(s)
>
> **1. Assign API permissions to the service principal**
>
> Configure the required API permissions for your App Registration to interact with Azure Key Vault:
>
> #### Azure Key Vault permissions
>
> Set the API permissions of your Azure service principal to include `user_impersonation` for the Key Vault API.
>
> ![Azure Key Vault](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/keyvault-azure-permissions.png)
>
> > [!NOTE]
> >
> > If you want to configure automatic client secret rotation for this App Connection, you also need to grant either `Application.ReadWrite.OwnedBy` or `Application.ReadWrite.All` permissions.

> [accordion] Certificate Authentication
>
> To use certificate authentication, ensure your Azure Service Principal has access to the Azure Key Vault instances you want to use. You'll need a certificate uploaded to the App Registration and the matching private key kept locally.
>
> **Prerequisites:**
>
> * Set up Azure and have an existing Key Vault instance.
> * The service principal must be granted access to your target Azure Key Vault instance(s) via Access Policies or RBAC (e.g. the **Key Vault Secrets Officer** role).
> * A certificate (PEM) uploaded to your App Registration and the matching PEM private key.
>
> **1. Upload your certificate to your Azure App Registration**
>
> In the Azure Portal, navigate to your App Registration and open the **Certificates & secrets** section. Choose the **Certificates** tab and press the **Upload certificate** button. Select and upload your public certificate (PEM/CER/CRT).
>
> You will need both the **certificate body** and the matching **private key** (in PEM format) to configure the connection in Infisical.

> [accordion] Managed Identity Authentication
>
> To use managed identity authentication, you need a user-assigned managed identity that can access the Azure Key Vault instances you want to use. Infisical doesn't store a secret for this method.
>
> **Prerequisites:**
>
> * An existing Azure Key Vault instance
> * A [user-assigned managed identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-manage-user-assigned-managed-identities) with access to your target Azure Key Vault instance(s) via Access Policies or RBAC (such as the **Key Vault Secrets Officer** role)
> * If you self-host Infisical, a `SITE_URL` that Azure can reach from the internet, because Azure fetches Infisical's signing keys from it

## Setup Azure connection in Infisical

**1. Navigate to App Connections**

Navigate to the **Integrations** tab in the desired project, then select **App Connections**. ![App Connections
Tab](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/general/add-connection.png)

**2. Add Connection**

Select the **Azure Connection** option from the connection options modal. ![Select Azure Connection](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/select-connection.png)

**3. Create Connection**

> [tab] OAuth
>
> **1. Authorize Connection**
>
> You can optionally authenticate against a specific tenant by providing the Azure Tenant or Directory ID.
>
> Now select the **OAuth** method and click **Connect to Azure**.
>
> ![Connect via Azure OAuth](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/create-oauth-method.png)
>
> > [!NOTE]
> >
> > If you use Infisical Cloud, the OAuth flow requests every permission on Infisical's shared Azure app registration (the `.default` scope), including the permissions for Azure App Configuration. If your Azure tenant doesn't have the Azure App Configuration service principal, the OAuth flow fails. To create the service principal, run the following [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) command, then try to connect again:
> >
> > ```bash theme={"dark"}
> > az ad sp create --id 35ffadb3-7fc1-497e-b61b-381d28e744cc
> > ```
> >
> > `35ffadb3-7fc1-497e-b61b-381d28e744cc` is the application ID that Microsoft assigns to Azure App Configuration, and it's the same in every Azure tenant.
>
> **2. Grant Access**
>
> You will then be redirected to Azure to grant Infisical access to your Azure account. Once granted,
> you will redirect you back to Infisical's App Connections page. ![Azure Key Vault
> Authorization](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/grant-access.png)

> [tab] Client Secret
>
> **1. Create Connection**
>
> Fill in the **Tenant ID**, **Client ID**, **Client Secret** fields with the Directory (Tenant) ID, Application (Client) ID, Client Secret you obtained in the previous step.
>
> ![Connect via Azure OAuth](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/create-client-secrets-method.png)
>
> > [!TIP]
> >
> > You can optionally enable **Automatic Credential Rotation** for this connection. See the [Automatic Credential Rotation](#automatic-credential-rotation) section below for details.

> [tab] Certificate
>
> **1. Create Connection**
>
> Select the **Certificate** method and fill in the following fields:
>
> * **Tenant ID** — the Directory (Tenant) ID of your Azure App Registration.
>
> * **Client ID** — the Application (Client) ID of your Azure App Registration.
>
> * **Certificate** — the PEM-encoded public certificate that was uploaded to the App Registration.
>
> * **Private Key** — the PEM-encoded private key matching the certificate above.
>
>   ![Connect via Certificate](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/create-certificate-method.png)
>
> > [!NOTE]
> >
> > The private key is never transmitted to Azure; it is only used locally by Infisical to sign the client assertion used to authenticate with Azure.
>
> > [!NOTE]
> >
> > Automatic Credential Rotation is not available for the Certificate authentication method.

> [tab] Managed Identity
>
> **Step 1**
>
> Select the **Managed Identity** method, fill in the **Tenant ID** and **Client ID** of your managed identity, then select **Configure Federated Credential**. Infisical creates the connection and shows its **Issuer**, **Subject Identifier**, and **Audience**.
>
> **Step 2**
>
> In the Azure portal, open your managed identity and go to **Settings** > **Federated credentials** > **Add Credential**. Choose the **Other issuer** scenario and enter the values from Infisical.
>
> **Step 3**
>
> Back in Infisical, select **Verify Connection**.
>
> > [!TIP]
> >
> > If you create the connection through [the create endpoint](https://infisical.com/docs/api-reference/endpoints/app-connections/azure-key-vault/create.md), the response includes these values in `credentials.federatedCredential`.

**4. Connection Created**

Your **Azure Key Vault Connection** is now available for use. ![Assume Role AWS Connection](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/oauth-connection.png)

## Automatic credential rotation

When using the **Client Secret** authentication method, Infisical can automatically rotate the Client Secret of your Azure application on a recurring schedule. When enabled, Infisical will immediately generate a new Client Secret on connection creation and revoke the original one, ensuring that no external party retains access using the credentials you provided.

> [!NOTE]
>
> Automatic Credential Rotation is only available for the **Client Secret** authentication method.

**1. Locate the Key ID of your Client Secret**

Before enabling rotation, you'll need the **Key ID** of the Client Secret you're using to authenticate. Navigate to your App Registration in the Azure Portal, then go to **Certificates & secrets**. Copy the **Secret ID** (Key ID) of the secret you're providing to Infisical.

![Azure Client Secret Key ID](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/credential-rotation-key-id.png)

**2. Enable Automatic Credential Rotation**

When creating or editing your connection, toggle on the **Automatic Credential Rotation** switch.

![Enable Automatic Credential Rotation](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/credential-rotation-toggle.png)

**3. Provide the Client Secret Key ID**

Enter the **Key ID** you copied in the previous step into the **Client Secret Key ID** field. Infisical uses this to revoke your original secret after generating a new one.

![Client Secret Key ID Field](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/credential-rotation-key-id-field.png)

**4. Configure the Rotation Schedule**

Set the **Rotation Interval** (in days) to define how often the credential should be rotated, and set **Rotate At** to the local time of day at which the rotation should occur.

* **Rotation Interval** – How many days between each rotation.
* **Rotate At** – The local time of day at which the rotation will be triggered.

  ![Rotation Schedule](https://mintlify.s3.us-west-1.amazonaws.com/infisical/images/app-connections/azure/key-vault/credential-rotation-schedule.png)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.