Hanzo
PlatformHanzo KMSIntegrationsSecret Syncs

OCI Vault Sync

Learn how to configure an Oracle Cloud Infrastructure Vault Sync for Hanzo KMS.

OCI Vault Sync is a paid feature.

Prerequisites:

  • Create an OCI Connection with the required Secret Sync permissions
  • Create or use an existing OCI Compartment (which the OCI Connection is authorized to access)
  • Create or use an existing OCI Vault
  • Ensure your network security policies allow incoming requests from Hanzo KMS to this secret sync provider, if network restrictions apply.

Navigate to Project > Integrations and select the Secret Syncs tab. Click on the Add Sync button.

Secret Syncs Tab

Select OCI Vault

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

Configure Source

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

Configure Destination

  • OCI Connection: The OCI Connection to authenticate with.
  • Compartment: The compartment where the vault is located.
  • Vault: The vault to sync secrets to.
  • Encryption Key: The encryption key to use when creating secrets in the vault.

Configure the Sync Options to specify how secrets should be synced, then click Next.

Configure Sync Options

  • 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 OCI Vault when keys conflict.
    • Import Secrets (Prioritize OCI Vault): Imports secrets from the destination endpoint before syncing, prioritizing values from OCI Vault 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.

Configure the Details of your OCI Vault Sync, then click Next.

Configure Details

  • Name: The name of your sync. Must be slug-friendly.
  • Description: An optional description for your sync.

Review your OCI Vault Sync configuration, then click Create Sync.

Review Configuration

If enabled, your OCI Vault Sync will begin syncing your secrets to the destination endpoint.

Sync Created

To create an OCI Vault Sync, make an API request to the Create OCI Vault Sync API endpoint.

Sample request

curl    --request POST \
        --url https://app.kms.hanzo.ai/api/v1/secret-syncs/oci-vault \
        --header 'Content-Type: application/json' \
        --data '{
            "name": "my-oci-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": {
                "compartmentOcid": "...",
                "vaultOcid": "...",
                "keyOcid": "..."
            }
        }'

Sample response

{
    "secretSync": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "name": "my-oci-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": "oci",
            "name": "my-oci-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": "oci-vault",
        "destinationConfig": {
          "compartmentOcid": "...",
          "vaultOcid": "...",
          "keyOcid": "..."
        }
    }
}

FAQ

When Hanzo KMS attempts to sync secrets, the sync will fail and attempt to re-sync if any secret has one of the following lifecycle states:

  • SchedulingDeletion
  • CancellingDeletion
  • Deleting
  • Creating
  • Updating

We do this to prevent any desync issues.

In the case that a variable is created or updated while it's scheduled for deletion in OCI Vault, we cancel the deletion and update the variable. This action may take up to a minute since Hanzo KMS must wait for OCI to completely cancel the deletion and then update the variable.

How is this guide?

Last updated on

On this page