Claude Platform Docs
AdministraçãoChaves de criptografia

Configurar o AWS KMS para CMEK

Use o AWS KMS 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 AWS KMS"

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

Pré-requisitos

  • Uma conta AWS com permissões para criar chaves KMS e definir políticas de chave (kms:CreateKey e kms:PutKeyPolicy).
  • Uma chave de API Admin da Anthropic para sua organização.
  • A AWS CLI instalada e autenticada.

Amazon Resource Name (ARN) para a Anthropic

Para que a Anthropic use sua chave de criptografia, você deve conceder à função IAM da Anthropic uma chave KMS que ela possa usar para criptografar dados. O ARN para CMEK da Anthropic é:

arn:aws:iam::915198916910:role/anthropic-cmek-client-us

Configuração da chave de criptografia

  1. Crie a chave KMS com uma política de chave entre contas

    A política de chave concede à função IAM da Anthropic acesso entre contas (cross-account). Três declarações são necessárias:

    1. Administrador root da conta: o padrão KMS convencional. Sua conta mantém controle administrativo total.
    2. Criptografia e descriptografia pela Anthropic: as ações kms:Encrypt e kms:Decrypt, que a Anthropic usa para criptografar e descriptografar as chaves de dados que protegem os dados do seu workspace ("envelope encryption", ou criptografia de envelope).
    3. Describe pela Anthropic: a leitura de metadados que a Anthropic realiza na inicialização. Ela é concedida separadamente porque DescribeKey não tem parâmetro EncryptionContext, portanto uma condição EncryptionContext nessa ação sempre negaria.
    export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
    
    aws kms create-key \
      --region <region> \
      --description "Anthropic CMEK" \
      --key-usage ENCRYPT_DECRYPT \
      --policy "{
        \"Version\": \"2012-10-17\",
        \"Statement\": [
          {
            \"Sid\": \"AccountRootAdmin\",
            \"Effect\": \"Allow\",
            \"Principal\": {\"AWS\": \"arn:aws:iam::${YOUR_ACCOUNT}:root\"},
            \"Action\": \"kms:*\",
            \"Resource\": \"*\"
          },
          {
            \"Sid\": \"AllowAnthropicCMEKCrypto\",
            \"Effect\": \"Allow\",
            \"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
            \"Action\": [\"kms:Encrypt\", \"kms:Decrypt\"],
            \"Resource\": \"*\",
            \"Condition\": {
              \"StringEquals\": {
                \"kms:EncryptionContext:anthropic:compartment_uuid\": [
                  \"00000000-0000-0000-0000-000000000000\",
                  \"<compartment-uuid>\"
                ]
              }
            }
          },
          {
            \"Sid\": \"AllowAnthropicCMEKDescribe\",
            \"Effect\": \"Allow\",
            \"Principal\": {\"AWS\": \"arn:aws:iam::915198916910:role/anthropic-cmek-client-us\"},
            \"Action\": \"kms:DescribeKey\",
            \"Resource\": \"*\"
          }
        ]
      }"

    Capture KeyMetadata.Arn da saída. Você precisará dele ao registrar a chave na próxima etapa.

    A condição EncryptionContext é recomendada, mas opcional. A Anthropic sempre inclui o ID de compartimento do seu workspace no contexto de criptografia, portanto o texto cifrado fica criptograficamente vinculado a esse compartimento de qualquer forma. Adicionar a condição fornece defesa em profundidade na camada IAM. Para começar sem ela, omita o bloco Condition da declaração AllowAnthropicCMEKCrypto e adicione-o depois com kms:PutKeyPolicy.

    Você também pode criar a chave pelo AWS Console. Escolha uma chave simétrica com uso de chave para criptografar e descriptografar, uma chave de região única e origem de material de chave KMS. O assistente Create key confirma uma política de chave na etapa Review: se você adicionar o ID de conta da Anthropic 915198916910 nas permissões de uso da chave ali, a política gerada concede à conta inteira da Anthropic ações mais amplas (como kms:ReEncrypt* e kms:GenerateDataKey*) sem condição EncryptionContext, e a validação ainda seria bem-sucedida com ela. Para evitar deixar uma chave excessivamente permissiva, conclua o assistente apenas com permissões administrativas, depois abra a aba Key policy da chave e substitua o JSON pela política com escopo de função mostrada anteriormente (as três declarações com escopo para a função anthropic-cmek-client-us, com a condição EncryptionContext).

    Assistente Create key do AWS KMS na etapa Configure key, com tipo de chave Symmetric, uso de chave Encrypt and decrypt e Single-Region key selecionados.
    Configure key (configurar chave): Symmetric (simétrica), Encrypt and decrypt (criptografar e descriptografar), Single-Region key (chave de região única).
    Etapa Add labels do AWS KMS com um alias anthropic-cmek e uma descrição Anthropic CMEK.
    Add labels (adicionar rótulos): adicione um alias e uma descrição para a chave.
    Etapa Define key administrative permissions do AWS KMS listando funções IAM que podem administrar a chave.
    Define key administrative permissions (definir permissões administrativas da chave), opcional. Sua conta mantém controle administrativo total.
    Etapa Define key usage permissions do AWS KMS com o ID de conta da Anthropic inserido em Other AWS accounts.
    Não adicione o ID de conta da Anthropic aqui. Esta etapa do assistente, Define key usage permissions (definir permissões de uso da chave), produz uma política excessivamente permissiva. Deixe as permissões de uso vazias e edite o JSON da Key policy após a criação (consulte a política de chave anterior).

Registre a chave na Anthropic

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

  1. Registre a chave na Anthropic

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

    curl -sS https://api.anthropic.com/v1/organizations/external_keys \
      -H "x-api-key: <anthropic-admin-api-key>" \
      -H "anthropic-version: 2023-06-01" \
      -H "content-type: application/json" \
      -d '{
        "display_name": "<friendly-name>",
        "geo": "us",
        "provider_config": {
          "type": "aws",
          "kms_arn": "<key-arn-from-create-key-step>",
          "role_arn": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us"
        }
      }'

    A resposta contém o ID da chave externa:

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

    Dispare um ciclo completo de criptografia e descriptografia com sua chave.

    curl -sS -X POST https://api.anthropic.com/v1/organizations/external_keys/ekey_<id>/validate \
      -H "x-api-key: <anthropic-admin-api-key>" \
      -H "anthropic-version: 2023-06-01" \
      -H "content-type: application/json" \
      -d '{}'

    Uma resposta bem-sucedida tem esta aparência:

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

    Se a validação falhar, as causas comuns são:

    • Incompatibilidade de contexto de criptografia: A validação falha enquanto o tráfego de dados funciona (ou o inverso) com uma AccessDeniedException opaca quando uma condição kms:EncryptionContext:anthropic:compartment_uuid permite apenas um dos dois valores que a Anthropic envia. A validação envia o UUID todo em zeros (00000000-0000-0000-0000-000000000000); o tráfego real envia o ID de compartimento do workspace anexado. Confirme que a condição lista ambos. Para descartar totalmente a condição como causa, remova temporariamente o bloco Condition da declaração AllowAnthropicCMEKCrypto e valide novamente.
    • Resource control policies (RCPs): Se sua organização AWS tiver uma RCP que nega operações KMS quando aws:PrincipalOrgID não corresponde à sua organização, ela bloqueia a função entre contas da Anthropic. A RCP precisa de uma exceção para esta chave ou para o ARN da função da Anthropic. Service control policies não se aplicam aqui, porque não são avaliadas para principais externos que chamam por meio de políticas baseadas em recursos.
    • Acesso concedido via IAM em vez da política de chave: O acesso KMS entre contas deve ser concedido na própria política de chave, não por meio de uma política IAM na sua conta. Verifique com aws kms get-key-policy --key-id <id> --policy-name default.
    • Incompatibilidade de região: Confirme que a região da chave é uma em que a Anthropic opera para o nível geográfico que você configurou.
  3. Anexe 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.

    curl -sS -X POST https://api.anthropic.com/v1/organizations/workspaces/<workspace-id> \
      -H "x-api-key: <anthropic-admin-api-key>" \
      -H "anthropic-version: 2023-06-01" \
      -H "content-type: application/json" \
      -d '{
        "external_key_id": "ekey_<id>"
      }'

Terraform

Para implantações de infraestrutura como código, as mesmas etapas correspondem ao provider aws com os recursos aws_kms_key e aws_kms_alias.

Was this page helpful?