String
Azure Key Vault Properties Provider 2.2 Reference
Azure Key Vault Properties Provider is a configuration that enables you to retrieve your secrets from a secure Azure cloud service before your Mule app runs.
Configuration
Default Configuration for Azure Key Vault Properties Provider.
| Name | Type | Description | Default Value | Required |
|---|---|---|---|---|
Name |
Name for this configuration. Connectors reference the configuration with this name. |
x |
||
Client Id |
String |
Client ID of your app. If not set, the properties provider uses the Azure SDK default authentication and looks for this value in the environment variable |
||
Tenant Id |
String |
Tenant ID of your app. If not set, the properties provider uses the Azure SDK default authentication and looks for this value in the environment variable |
||
Client Secret |
String |
Client secret of your app. If not set, the properties provider uses the Azure SDK default authentication and looks for this value in the environment variable |
||
Key Vault Name |
String |
Name of the vault to connect. If not set, the properties provider uses the system property |
||
Uri Override |
String |
The URI override for the key vault. |
Requirements
Add the following repository and its associated credentials in the Maven settings:
<repository>
<id>MuleRepository2</id>
<name>MuleRepository2</name>
<url>https://repository.mulesoft.org/nexus/content/repositories/releases-ee/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
Limitations
Azure Key Vault Properties Provider doesn’t support the use of property files for the configuration of the properties provider.
Environment Variables
Use the following environment variables to configure the behavior of the Azure Key Vault Properties Provider from the environment instead of specifying parameters in the Mule app configuration:
-
AZURE_CLIENT_ID -
AZURE_CLIENT_SECRET -
AZURE_TENANT_ID -
MULE_AZURE_KEY_VAULT_NAME
These variables are stored in secure configuration files with the values encrypted. During execution, the runtime decrypts these values and they remain in memory in their decrypted state. For more information, refer to Protecting App Property Values.
Authenticate Through Environment Variables
To authenticate to Azure Key Vault using environment variables, set the following environment variables:
-
AZURE_CLIENT_ID -
AZURE_CLIENT_SECRET -
AZURE_TENANT_ID
Refer to Setting Environment Variables for details.
If you do not set the tenantId, clientId, or clientSecret attributes in the configuration, the properties provider uses the values from the environment variables.
In the XML configuration, you can omit the attributes if you use environment variables:
<!-- Configuration using environment variables for tenantId, clientId and clientSecret -->
<azure-key-vault-properties-provider:config name="Azure_Key_Vault_Properties_Provider_Config"
keyVaultName="connectors-vault"/>
Configure Key Vault Name Through Environment Variables
If you do not set the keyVaultName attribute, the properties provider uses the system property MULE_AZURE_KEY_VAULT_NAME:
<!-- Configuration using environment variables for tenantId, clientId, clientSecret, and keyVaultName -->
<azure-key-vault-properties-provider:config name="Azure_Key_Vault_Properties_Provider_Config"/>
If neither is set, the properties providers throws a RuntimeException message.
Configure Multiple Key Vaults
Starting in version 2.2.0, you can define more than one Azure Key Vault Properties Provider configuration in the same Mule app, with each configuration connecting to a different key vault. Each configuration is isolated by its own namespace, which prevents conflicts when resolving secrets and ensures that each secret is retrieved from the intended vault.
To reference a secret from a specific vault, use the configuration name as a namespace in the following format:
${azure-key-vault-properties-provider::configName::secret::yourSecret}
In this format, configName is the value of the name attribute of the properties provider configuration, and yourSecret is the name of the secret to retrieve.
The following example defines two configurations, each connecting to a different key vault:
<!-- Configuration for the first key vault -->
<azure-key-vault-properties-provider:config name="Vault_A"
keyVaultName="vault-alpha"/>
<!-- Configuration for the second key vault -->
<azure-key-vault-properties-provider:config name="Vault_B"
keyVaultName="vault-beta"/>
|
If you omit the |
To retrieve a secret from each vault, reference the secret through the corresponding configuration name:
<!-- Retrieve a secret from vault-alpha through the Vault_A configuration -->
<set-variable variableName="prodSecret"
value="${azure-key-vault-properties-provider::Vault_A::secret::production-db-password}"/>
<!-- Retrieve a secret from vault-beta through the Vault_B configuration -->
<set-variable variableName="stagingSecret"
value="${azure-key-vault-properties-provider::Vault_B::secret::staging-api-key}"/>
Legacy Secret Format
The legacy secret format ${azure-key-vault-properties-provider::secret::yourSecret} is supported only when the Mule app contains only one Azure Key Vault Properties Provider configuration.
If your Mule app uses a single configuration and relies on the legacy format, no changes are required. To use multiple configurations, reference each secret through its configuration name using the ${azure-key-vault-properties-provider::configName::secret::yourSecret} format.



