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.
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 ao papel IAM da Anthropic uma chave KMS que ela possa usar para criptografar dados. O ARN para o 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 ao papel IAM da Anthropic acesso entre contas. 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 parâmetro EncryptionContext, então 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 do compartimento do seu workspace no contexto de criptografia, então o texto cifrado é 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.
Encontrando seu ID de compartimento: Onde encontrar seu ID de compartimento difere entre Claude Platform e Claude Enterprise. Consulte as abas Claude Platform e Claude Enterprise em Registre a chave na Anthropic.
Você também pode criar a chave pelo Console da AWS. Escolha uma chave simétrica com o uso de chave de criptografia e descriptografia, uma chave de região única e origem de material de chave KMS. O assistente Create-key confirma uma política de chave em sua etapa de Review: se você adicionar o ID de conta da Anthropic 915198916910 nas permissões de uso de 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 com permissões excessivas, 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 papel mostrada anteriormente (as três declarações com escopo no papel anthropic-cmek-client-us, com a condição EncryptionContext).




Como você registra a chave depende de qual produto você usa.
Encontrando seu ID de compartimento: Cada workspace tem um ID de compartimento que delimita 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 anterior.
A validação da chave sempre envia o UUID de compartimento com todos os zeros (00000000-0000-0000-0000-000000000000) como contexto de criptografia, porque a validação é executada antes de a chave ser anexada a qualquer workspace. O tráfego real envia o ID de compartimento de cada workspace anexado.
Qualquer condição EncryptionContext deve permitir o valor com todos os zeros mais o ID de compartimento de cada workspace ao qual a chave está anexada. A validação também é executada novamente sempre que a configuração da chave é refeita, então mantenha a entrada com todos os zeros permanentemente.
Para anexar a chave a um workspace adicional, adicione o ID de compartimento desse workspace à condição com kms:PutKeyPolicy antes de anexar.
Registre a chave na Anthropic
Crie uma configuração de chave externa por meio da Admin API.
Para organizações no Claude Platform on AWS, os endpoints de chave externa ainda não estão disponíveis. Em vez disso, registre, valide e anexe sua chave no Claude Console.
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>"
}Valide a chave
Dispare uma ida e volta de criptografia e descriptografia contra 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 se parece com isto:
{ "type": "external_key_validation", "status": "success", "error": null }Se a validação falhar, as causas comuns são:
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 com todos os 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 a condição completamente, remova temporariamente o bloco Condition da declaração AllowAnthropicCMEKCrypto e valide novamente.aws:PrincipalOrgID não corresponde à sua organização, ela bloqueia o papel entre contas da Anthropic. A RCP precisa de uma exceção para esta chave ou para o ARN do papel da Anthropic. Service control policies não se aplicam aqui, porque elas não são avaliadas para principais externos que chamam 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 provedor aws com os recursos aws_kms_key e aws_kms_alias.
Was this page helpful?