Claude Platform Docs
AdministraçãoChaves de criptografia

Configurar o Azure Key Vault para CMEK

Use o Azure Key Vault para fornecer uma chave de criptografia para sua organização.

Configure with the /claude-api skill in Claude Code
claude "/claude-api help me configure a customer-managed encryption key with Azure Key Vault"

Este guia explica como configurar uma chave do Azure Key Vault como uma chave de criptografia gerenciada pelo cliente, ou CMEK ("customer-managed encryption key") para sua organização Anthropic.

Pré-requisitos

  • Um Azure Key Vault com autorização RBAC habilitada (enableRbacAuthorization: true) e acesso à rede pública permitido. A Anthropic chama seu vault pelo endpoint público do plano de dados; endpoints privados não são suportados.
  • Proteção contra limpeza (purge protection) habilitada (enablePurgeProtection: true) no vault. Sem ela, uma chave excluída pode ser limpa permanentemente durante a janela de retenção de exclusão reversível (soft-delete), causando perda irreversível dos seus dados protegidos por CMEK. A proteção contra limpeza não pode ser desabilitada depois de habilitada.
  • Permissões para criar chaves no vault e atribuir funções RBAC nele.
  • Permissões para criar entidades de serviço (service principals) no seu tenant do Entra (Application Administrator, Cloud Application Administrator ou uma função personalizada equivalente).
  • Uma chave de API Admin da Anthropic para sua organização.
  • A CLI az instalada e autenticada.
  • Diagnostic Settings (configurações de diagnóstico) configuradas no vault para rotear a categoria de log AuditEvent para o Log Analytics, uma conta de armazenamento ou um hub de eventos. O Azure Key Vault não emite logs de auditoria do plano de dados (como KeyWrap, KeyUnwrap e KeyGet) por padrão, portanto, sem isso, você não terá trilha de auditoria das operações de chave da Anthropic.

Informações do aplicativo da Anthropic

Para que a Anthropic use sua chave de criptografia, você deve configurar um ID de aplicativo multilocatário (multitenant) da Anthropic e um nome de exibição. Esses valores são:

CampoValor
ID do cliente do aplicativo multilocatário (EUA)8635ae1a-3e5d-44e8-a4ed-e0f614466f87
Nome de exibição do aplicativoanthropic-cmek-client-us

Configuração da chave de criptografia

  1. Consentir com o aplicativo multilocatário da Anthropic

    Isso cria uma entidade de serviço no seu tenant do Entra para o aplicativo cliente CMEK da Anthropic. O aplicativo não solicita permissões do Microsoft Graph; ele existe apenas como um destino de federação para acesso ao plano de dados do Key Vault.

    az ad sp create --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87

    Na saída, capture o campo id. Este é o ID de objeto da entidade de serviço no seu tenant, que você usa ao atribuir a função RBAC.

    {
      "appId": "8635ae1a-3e5d-44e8-a4ed-e0f614466f87",
      "displayName": "anthropic-cmek-client-us",
      "id": "<sp-object-id>"
    }

    Se a entidade de serviço já existir no seu tenant (de uma tentativa anterior ou de outra integração), az ad sp create encerra com um erro "already exists". Nesse caso, obtenha o ID de objeto dela:

    az ad sp show --id 8635ae1a-3e5d-44e8-a4ed-e0f614466f87 --query id -o tsv

    Esta etapa não tem equivalente no Portal. Se você não tiver a Azure CLI instalada localmente, abra o Cloud Shell na barra de navegação superior do Portal. Depois que o comando for bem-sucedido, você pode encontrar o ID de objeto da entidade de serviço em Microsoft Entra ID > Enterprise applications, limpando o filtro padrão de tipo de aplicativo e pesquisando por anthropic-cmek-client-us.

    Visão geral do aplicativo empresarial do Microsoft Entra para anthropic-cmek-client-us, mostrando seu Application ID e Object ID.
    Encontre o Object ID (ID de objeto) da entidade de serviço na visão geral do aplicativo empresarial no Entra.
  2. Criar uma chave RSA no seu vault

    O Azure Key Vault não suporta encapsulamento (wrapping) de chave simétrica, portanto a chave deve ser RSA (3072 bits ou maior) com wrapKey e unwrapKey em suas operações permitidas.

    az keyvault key create \
      --vault-name <your-vault-name> \
      --name <your-key-name> \
      --kty RSA --size 3072 \
      --ops wrapKey unwrapKey

    Para chaves com suporte de HSM, use --kty RSA-HSM (requer um vault de SKU Premium). Chaves RSA protegidas por software são aceitáveis para esta integração.

    No Portal, abra seu Key Vault, selecione Keys e depois Generate/Import. Defina o tipo de chave como RSA e o tamanho como 3072 ou maior. Para restringir a chave apenas a wrap e unwrap, abra a versão da chave, role até Permitted operations e desmarque tudo exceto Wrap Key e Unwrap Key.

    Página Create a key do Azure Key Vault com a opção Generate, tipo de chave RSA e tamanho de chave RSA 3072 selecionados.
    Crie uma chave RSA de tamanho 3072 ou maior.
    Versão de chave do Azure Key Vault com Permitted operations limitadas a Wrap Key e Unwrap Key.
    Restrinja as Permitted operations (operações permitidas) a Wrap Key e Unwrap Key.
  3. Conceder à entidade de serviço da Anthropic acesso à sua chave

    Atribua a função Key Vault Crypto User à entidade de serviço da primeira etapa, com escopo na chave individual em vez de no vault inteiro.

    VAULT_ID=$(az keyvault show --name <your-vault-name> --query id -o tsv)
    
    az role assignment create \
      --role "Key Vault Crypto User" \
      --assignee-object-id <sp-object-id> \
      --assignee-principal-type ServicePrincipal \
      --scope "${VAULT_ID}/keys/<your-key-name>"

    A função interna Key Vault Crypto User concede operações criptográficas de chave (encrypt, decrypt, wrap, unwrap, sign, verify) além de leitura de chave no escopo atribuído. A restrição --ops wrapKey unwrapKey que você definiu na chave na etapa anterior limita ainda mais quais dessas operações podem ser bem-sucedidas nesta chave, de modo que, na prática, a Anthropic só pode fazer wrap e unwrap.

    No Portal, abra a chave (não o vault), selecione a aba Access control (IAM), clique em Add > Add role assignment, selecione Key Vault Crypto User e atribua-a à entidade de serviço anthropic-cmek-client-us.

    Atribuições de função IAM do Key Vault mostrando anthropic-cmek-client-us com a função Key Vault Crypto User atribuída.
    Atribua Key Vault Crypto User à entidade de serviço da Anthropic, com escopo na chave.
  4. Verificar a configuração do seu vault

    az keyvault show --name <your-vault-name> \
      --query "{rbac:properties.enableRbacAuthorization, purge:properties.enablePurgeProtection, pub:properties.publicNetworkAccess, net:properties.networkAcls.defaultAction, ipRules:properties.networkAcls.ipRules, uri:properties.vaultUri, tenantId:properties.tenantId}"

    Confirme que:

    • rbac é true.
    • purge é true. Se for false ou null, habilite a proteção contra limpeza no vault antes de prosseguir. Sem ela, uma chave com exclusão reversível pode ser limpa permanentemente durante a janela de retenção, tornando seus dados protegidos por CMEK irrecuperáveis.
    • pub é "Enabled". Se for "Disabled", a Anthropic não consegue alcançar o vault pelo endpoint público do plano de dados e a validação falha.
    • net é "Allow" ou, se for "Deny", que ipRules inclua os intervalos de saída (egress) da Anthropic (entre em contato com a Anthropic para obter a lista atual).
    • uri é o URI do vault que você usa ao registrar a chave.
    • tenantId é o tenant que governa o vault. Use este valor como tenant_id ao registrar a chave, não o tenant da sua assinatura atualmente ativa (os dois podem diferir em configurações entre tenants).

Registrar a chave na Anthropic

A forma de registrar a chave depende de qual produto você usa.

  1. Registrar a chave na Anthropic

    Crie uma configuração de chave externa por meio da Admin API.

    client = anthropic.Anthropic()
    
    external_key = client.beta.organization.external_keys.create(
        display_name="<friendly-name>",
        geo="us",
        provider_config={
            "type": "azure",
            "vault_uri": "https://<your-vault-name>.vault.azure.net/",
            "key_name": "<your-key-name>",
            "tenant_id": "<your-tenant-id>",
        },
    )
    
    print(f"id: {external_key.id}")
    print(f"display_name: {external_key.display_name}")

    A resposta contém o ID da chave externa:

    {
      "type": "external_key",
      "id": "ekey_<id>",
      "display_name": "<friendly-name>"
    }
  2. Validar a chave

    Dispare um ciclo completo de criptografia e descriptografia na sua chave. Isso confirma que a Anthropic consegue se autenticar no seu tenant e executar operações de wrap e unwrap.

    client = anthropic.Anthropic()
    
    validation = client.beta.organization.external_keys.validate("ekey_<id>")
    
    print(f"status: {validation.status}")
    print(f"error: {validation.error}")

    Uma resposta bem-sucedida tem esta aparência:

    { "type": "external_key_validation", "status": "success", "error": null }

    Se a validação falhar, o campo error descreve o problema. As causas comuns são:

    • Atraso de propagação do RBAC: atribuições de função podem levar alguns minutos para entrar em vigor. Aguarde e tente novamente.
    • ACLs de rede bloqueando a Anthropic: confirme o acesso à rede pública e ipRules conforme descrito na etapa de verificação.
    • Políticas de acesso condicional em identidades de carga de trabalho: se o seu tenant tiver políticas de acesso condicional direcionadas a entidades de serviço, exclua a entidade de serviço da Anthropic ou adicione os intervalos de saída da Anthropic aos locais nomeados da política.
  3. Anexar a chave a um workspace

    Depois que a chave for validada, anexe-a a um novo workspace antes de enviar qualquer requisição a esse workspace. Para um workspace que já recebe requisições, a chave pode levar até um dia para entrar em vigor.

    client = anthropic.Anthropic()
    
    workspace = client.beta.organization.workspaces.update(
        "<workspace-id>", external_key_id="ekey_<id>"
    )
    
    print(f"id: {workspace.id}")
    print(f"external_key_id: {workspace.external_key_id}")

Terraform

Para implantações de infraestrutura como código, as mesmas etapas correspondem aos provedores azurerm e azuread.

Was this page helpful?