Azure Key Vault Sync
Learn how to configure a Azure Key Vault Sync for Hanzo KMS.
Prerequisites:
- Set up and add secrets to Hanzo KMS Cloud
- Create an Azure Key Vault Connection
- Ensure your network security policies allow incoming requests from Hanzo KMS to this secret sync provider, if network restrictions apply.
The Azure Key Vault Secret Sync requires the following secrets permissions to be set on the user / service principal
for Hanzo KMS to sync secrets to Azure Key Vault: secrets/list, secrets/get, secrets/set, secrets/recover.
Any role with these permissions would work such as the Key Vault Secrets Officer role.
Secrets in Hanzo KMS that contain an underscore (_) will be converted to a hyphen (-) when synced to Azure Key Vault.
-
Navigate to Project > Integrations and select the Secret Syncs tab. Click on the Add Sync button.

-
Select the Azure Key Vault option.

-
Configure the Source from where secrets should be retrieved, then click Next.

- Environment: The project environment to retrieve secrets from.
- Secret Path: The folder path to retrieve secrets from.
If you need to sync secrets from multiple folder locations, check out secret imports.
-
Configure the Destination to where secrets should be deployed, then click Next.

- Azure Connection: The Azure Connection to authenticate with.
- Vault Base URL: The URL of your Azure Key Vault.
-
Configure the Sync Options to specify how secrets should be synced, then click Next.

- Initial Sync Behavior: Determines how Hanzo KMS should resolve the initial sync.
- Overwrite Destination Secrets: Removes any secrets at the destination endpoint not present in Hanzo KMS.
- Import Secrets (Prioritize Hanzo KMS): Imports secrets from the destination endpoint before syncing, prioritizing values from Hanzo KMS over Secrets Manager when keys conflict.
- Import Secrets (Prioritize Azure Key Vault): Imports secrets from the destination endpoint before syncing, prioritizing values from Secrets Manager over Hanzo KMS when keys conflict.
- Key Schema: Template that determines how secret names are transformed when syncing, using
{{secretKey}}as a placeholder for the original secret name and{{environment}}for the environment.
We highly recommend using a Key Schema to ensure that Hanzo KMS only manages the specific keys you intend, keeping everything else untouched.
- Auto-Sync Enabled: If enabled, secrets will automatically be synced from the source location when changes occur. Disable to enforce manual syncing only.
- Disable Secret Deletion: If enabled, Hanzo KMS will not remove secrets from the sync destination. Enable this option if you intend to manage some secrets manually outside of Hanzo KMS.
- Initial Sync Behavior: Determines how Hanzo KMS should resolve the initial sync.
-
Configure the Details of your Azure Key Vault Sync, then click Next.

- Name: The name of your sync. Must be slug-friendly.
- Description: An optional description for your sync.
-
Review your Azure Key Vault Sync configuration, then click Create Sync.

-
If enabled, your Azure Key Vault Sync will begin syncing your secrets to the destination endpoint.

To create a Azure Key Vault Sync, make an API request to the Create Key Vault Sync API endpoint.
Sample request
curl --request POST \
--url https://app.kms.hanzo.ai/api/v1/secret-syncs/azure-key-vault \
--header 'Content-Type: application/json' \
--data '{
"name": "my-key-vault-sync",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"description": "an example sync",
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"environment": "dev",
"secretPath": "/my-secrets",
"isEnabled": true,
"syncOptions": {
"initialSyncBehavior": "overwrite-destination"
},
"destinationConfig": {
"vaultBaseUrl": "https://my-key-vault.vault.azure.net"
}
}'Sample response
{
"secretSync": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "my-key-vault-sync",
"description": "an example sync",
"isEnabled": true,
"version": 1,
"folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"syncStatus": "succeeded",
"lastSyncJobId": "123",
"lastSyncMessage": null,
"lastSyncedAt": "2023-11-07T05:31:56Z",
"importStatus": null,
"lastImportJobId": null,
"lastImportMessage": null,
"lastImportedAt": null,
"removeStatus": null,
"lastRemoveJobId": null,
"lastRemoveMessage": null,
"lastRemovedAt": null,
"syncOptions": {
"initialSyncBehavior": "overwrite-destination"
},
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"connection": {
"app": "azure",
"name": "my-azure-key-vault-connection",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"environment": {
"slug": "dev",
"name": "Development",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"folder": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"path": "/my-secrets"
},
"destination": "azure-key-vault",
"destinationConfig": {
"vaultBaseUrl": "https://my-key-vault.vault.azure.net"
}
}
}How is this guide?
Last updated on