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

# Use Azure Key Vault for a saved credential

> Create a named reference and use its value through a matching credential.

How-to guideApplies to: Unified engine deployments

Create a named reference and use its value through a matching credential.

## Before you start

Have an administrator configure the engine provider alias recipe\_kv before
running SQL. Configure type azure-key-vault with the complete `vault_url` and
select `authentication`: workload-identity, managed-identity, or client-secret.
Supply the identity settings in the secret-service process environment and grant
permission to read the selected secret. See
[provider configuration](https://docs.e6data.com/transformation/operations/configuration/secrets.md#azure-key-vault).

The selected value must be raw bearer-token text accepted by an existing Iceberg
REST catalog. Have its API URI, warehouse, namespace, and nonempty table ready.
The service must provide usable temporary storage credentials or already
configured storage access.

## Values to collect

* A configured provider alias, secret identifier, and the data connection values
  shown below.

## Run the SQL

Replace every `<placeholder>` before running. Use unused names for the resources
below. Run the statements in order in Workbench.

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
CREATE SECRET recipe_azure_key_vault_secret USING 'recipe_kv://catalog-token';
DESCRIBE SECRET recipe_azure_key_vault_secret;

CREATE CREDENTIAL recipe_azure_key_vault_reader USING bearer
OPTIONS (
  'authentication' = 'saved'
)
SECRETS ('token' = 'recipe_azure_key_vault_secret');

CREATE CATALOG recipe_azure_key_vault USING `iceberg-rest`
OPTIONS (
  'uri' = '<catalog-api-uri>',
  'warehouse' = '<warehouse>',
  'auth.type' = 'bearer',
  'header.x-iceberg-access-delegation' = 'vended-credentials'
)
CREDENTIALS ('auth' = 'recipe_azure_key_vault_reader');

SELECT *
FROM recipe_azure_key_vault.`<namespace>`.`<table>`
LIMIT 5;
```

## Check the result

DESCRIBE shows the provider reference, not its plaintext value. The SELECT
should return actual table or file rows and proves that the consumer can resolve
and use the selected secret.

## Clean up

This removes only the Unified registrations. It leaves the remote catalog and
its tables in place.

```sql theme={"theme":{"light":"github-light","dark":"github-dark"}}
DROP CATALOG recipe_azure_key_vault;
DROP CREDENTIAL recipe_azure_key_vault_reader;
DROP SECRET recipe_azure_key_vault_secret;
```

The external secret value and its provider mapping are left in place.


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