claude "/claude-api help me configure a customer-managed encryption key with AWS KMS"Este guia orienta a configuração de uma chave do AWS KMS como uma "customer-managed encryption key" (chave de criptografia gerenciada pelo cliente), ou CMEK, para sua organização da Anthropic.
Habilitar CMEK é permanente. Se sua chave KMS for excluída ou desabilitada, a Anthropic não poderá recuperar os dados criptografados com ela. Revise os avisos e limitações antes de começar.
kms:CreateKey e kms:PutKeyPolicy).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-usUse apenas este ARN publicado. Nunca confie em um identificador fornecido por e-mail, chat ou qualquer canal de onboarding.
Crie a chave KMS com uma política de chave entre contas
A política de chave concede acesso entre contas à função IAM da Anthropic. Três declarações são necessárias:
kms:Encrypt e kms:Decrypt, que a Anthropic usa para criptografar e descriptografar as chaves de dados que protegem os dados do seu workspace (criptografia de envelope).DescribeKey não tem o parâmetro EncryptionContext, então uma condição EncryptionContext nessa ação sempre resultaria em negação.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\": \"<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, então 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 posteriormente com kms:PutKeyPolicy.
Como encontrar seu ID de compartimento: Cada workspace tem um ID de compartimento que delimita o escopo de seus dados CMEK. Encontre-o no Claude Console em Workspace > Security > Encryption keys (o campo Compartment ID), ou leia o campo compartment_id retornado pelo endpoint Get Workspace. Substitua esse valor por <compartment-uuid> na política de chave acima. A Anthropic também o envia como contexto de criptografia ao validar a chave, então o valor da condição deve corresponder para que a validação seja bem-sucedida.
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 de criação de chave confirma uma política de chave na etapa Review: se você adicionar o ID da conta da Anthropic 915198916910 nas permissões de uso de chave nessa etapa, a política gerada concede à conta inteira da Anthropic ações mais amplas (como kms:ReEncrypt* e kms:GenerateDataKey*) sem nenhuma condição EncryptionContext, e a validação ainda seria bem-sucedida com ela. Para evitar deixar uma chave com permissões excessivas, conclua o assistente apenas com permissões administrativas e, em seguida, abra a aba Key policy da chave e substitua o JSON pela política com escopo de função mostrada acima (as três declarações com escopo para a função anthropic-cmek-client-us, com a condição EncryptionContext).




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-step-1>",
"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>"
}Valide a chave
Acione uma operação completa de criptografia e descriptografia na 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:
EncryptionContext na política de chave, confirme que substituiu <compartment-uuid> pelo ID de compartimento real do seu workspace (veja a etapa 1). Um valor incorreto ou não substituído faz o KMS retornar um AccessDeniedException opaco. Para descartar essa causa, remova temporariamente o bloco Condition da declaração AllowAnthropicCMEKCrypto e valide novamente.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 essa 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 principals externos que fazem chamadas por meio de políticas baseadas em recursos.aws kms get-key-policy --key-id <id> --policy-name default.Anexe a chave a um workspace
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>"
}'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?