Configurar o AWS KMS para CMEK
Use o AWS KMS para fornecer uma chave de criptografia para sua organização.
Claude Code
Deixe o Claude Code configurar este recurso para você
/claude-api me ajude a configurar uma chave de criptografia gerenciada pelo cliente com o AWS KMSEste guia orienta a configuração de uma chave do AWS KMS como uma chave de criptografia gerenciada pelo cliente (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:CreateKeyekms:PutKeyPolicy). - Uma chave de API de 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 fornecer à função 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-usConfiguração da chave de criptografia
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. Três declarações são necessárias:
- Admin raiz da conta: o padrão KMS padrão. Sua conta mantém controle administrativo total.
- Criptografar e descriptografar da Anthropic: as ações
kms:Encryptekms:Decrypt, que a Anthropic usa para criptografar e descriptografar as chaves de dados que protegem os dados do seu workspace (criptografia de envelope). - Describe da Anthropic: a leitura de metadados que a Anthropic realiza na inicialização. É concedida separadamente porque
DescribeKeynão tem parâmetroEncryptionContext, então uma condiçãoEncryptionContextnesta ação sempre negaria.
Para encontrar o ID da sua conta AWS, execute
aws sts get-caller-identity --query Account --output text.Na política, substitua
<AWS_ACCOUNT_ID>pelo ID da sua conta AWS e<ORGANIZATION_UUID>pelo ID da sua organização. A condiçãoStringEqualsemkms:EncryptionContext:anthropic:org_uuidvincula a chave à sua organização Anthropic, e a validação recusa uma chave sem ela. Para compartilhar uma chave entre várias organizações Anthropic, liste o ID de cada organização no valor da condição.Salve a política como
key-policy.json. Para criar a chave no AWS Console em vez disso, cole a política lá, conforme descrito mais adiante nesta etapa.key-policy.json{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccountRootAdmin", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AWS_ACCOUNT_ID>: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:org_uuid": ["<ORGANIZATION_UUID>"] } } }, { "Sid": "AllowAnthropicCMEKDescribe", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::915198916910:role/anthropic-cmek-client-us" }, "Action": "kms:DescribeKey", "Resource": "*" } ] }aws kms create-key \ --region <REGION> \ --description "Anthropic CMEK" \ --key-usage ENCRYPT_DECRYPT \ --policy file://key-policy.jsonCapture
KeyMetadata.Arnda saída. Você precisará dele ao registrar a chave na próxima etapa.A Anthropic valida a chave quando você a verifica ou a anexa a um workspace. Cada validação adiciona quatro erros de acesso negado ao CloudTrail. Isso é esperado. Se você precisar filtrá-los, filtre pelos três valores a seguir. O primeiro sozinho não é suficiente, porque qualquer chamador pode defini-lo:
requestParameters.encryptionContext.associatedData:Y21lay12YWxpZGF0aW9uuserIdentity.accountId:915198916910resources.ARN:arn:aws:kms:<REGION>:<AWS_ACCOUNT_ID>:key/<KEY_ID>
Você também pode criar a chave no AWS Console. Escolha uma chave simétrica com o uso de chave de 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 em sua etapa Review: Se você adicionar o ID da conta da Anthropic
915198916910nas permissões de uso de chave lá, a política gerada concede à conta inteira da Anthropic ações mais amplas (comokms:ReEncrypt*ekms:GenerateDataKey*) sem condiçãoEncryptionContext, e a validação a recusa. 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íticakey-policy.jsonmostrada anteriormente nesta etapa.
Configure key: symmetric, encrypt and decrypt, single-region key. 
Add an alias and description for the key. 
Define key administrative permissions (optional). Your account retains full admin control. 
Do not add Anthropic's account ID here. This wizard step produces an over-permissive policy. Leave usage permissions empty and edit the Key policy JSON after creation (see the preceding key policy).
Registrar a chave com a Anthropic
Como você registra a chave depende de qual produto você usa.
Você pode configurar a chave no Claude Console ou através da Admin API, com o mesmo resultado.
Registre a chave com a Anthropic
No Claude Console, acesse a página Data retention (
platform.claude.com/settings/privacy). Se você não vir Encryption keys, selecione Organization no menu suspenso no topo da página. Em Encryption keys, clique em Add key. Insira um nome de exibição, escolha AWS KMS e clique em Continue. Cole o ARN da chave em KMS key ARN e clique em Add.A etapa de detalhes da chave mostra o ID da sua organização. Adicione-o à política de chave antes de clicar em Add.
Valide a chave
Na lista Encryption keys, clique em Verify ao lado da chave. Connected aparece quando a verificação é aprovada. Se falhar, uma mensagem informa o motivo.
Anexe a chave a um workspace
No Claude Console, acesse a página Data retention (
platform.claude.com/settings/privacy) e selecione o workspace no menu suspenso no topo da página. Em Encryption key, selecione a chave, clique em Save e confirme. Anexar uma chave não pode ser desfeito. Para um workspace que já recebe solicitações, a chave pode levar até um dia para entrar em vigor.
Registre a chave com a Anthropic
Crie uma configuração de chave externa através da Admin API.
Pythonclient = anthropic.Anthropic() external_key = client.organization.external_keys.create( display_name="<friendly-name>", geo="us", provider_config={"type": "aws", "kms_arn": "<key-arn-from-create-key-step>"}, ) 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>" }Valide a chave
Acione uma ida e volta de criptografar e descriptografar contra sua chave.
Pythonclient = anthropic.Anthropic() validation = client.organization.external_keys.validate("ekey_<id>") print(f"status: {validation.status}") print(f"error: {validation.error}")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:
- Incompatibilidade de contexto de criptografia: Se a política tiver uma condição
kms:EncryptionContext:anthropic:compartment_uuid, certifique-se de que ela liste o ID de compartimento de cada workspace ao qual a chave está anexada. A validação envia o ID de compartimento do workspace que verifica. Uma chave mais antiga cuja declaração de compartimento ainda permitekms:Encrypté validada com o valor todo-zeros (00000000-0000-0000-0000-000000000000) enquanto não está anexada, então mantenha esse valor em sua lista. - Políticas de controle de recursos (RCPs): Se sua organização AWS tiver uma RCP que nega operações KMS quando
aws:PrincipalOrgIDnã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. Políticas de controle de serviço não se aplicam aqui, porque não são avaliadas para principais externos que chamam através de políticas baseadas em recursos. - Acesso concedido através do 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 através de uma política IAM em 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.
- Incompatibilidade de contexto de criptografia: Se a política tiver uma condição
Anexe a chave a um workspace
Uma vez que a chave é validada, anexe-a a um novo workspace antes de enviar qualquer solicitação a esse workspace. Para um workspace que já recebe solicitações, a chave pode levar até um dia para entrar em vigor.
Pythonclient = anthropic.Anthropic() workspace = client.organization.workspaces.update( "<workspace-id>", external_key_id="ekey_<id>" ) print(f"id: {workspace.id}") print(f"external_key_id: {workspace.external_key_id}")
Em claude.ai > Organization settings > Data and privacy, abra Encryption keys e clique em Add key. Escolha AWS e clique em Continue, depois cole o Key ARN da etapa anterior e clique em Add. A Anthropic valida a chave com uma ida e volta de criptografar e descriptografar. Uma vez que ela apareça como verificada, sua organização está protegida por CMEK a partir desse ponto.
A etapa de detalhes da chave deste fluxo exibe seu Organization ID for the key policy com um botão de copiar. Substitua esse valor por <ORGANIZATION_UUID> na política de chave. Você pode abrir o fluxo para copiar o ID antes de criar a chave.
No Claude Enterprise, o CMEK se aplica a toda a organização, então não há uma etapa separada de anexação de workspace, e uma organização pode ter apenas uma chave.
Configurar o CMEK no Claude Platform on AWS
No Claude Platform on AWS, o CMEK usa apenas chaves do AWS KMS, e a configuração difere das seções anteriores nestes aspectos:
- Principal: Sua política de chave concede acesso ao principal de serviço da AWS
aws-external-anthropic.amazonaws.com. A função IAM e o ID da conta da Anthropic não são usados, então o ARN para a Anthropic não se aplica. - Requisitos da chave: A chave deve ser uma chave KMS simétrica com uso de criptografar e descriptografar, de região única, e na mesma conta e região AWS do workspace ao qual você a anexa. Chaves entre contas não são suportadas: a chave deve estar na conta AWS que hospeda sua organização. Chaves multirregião (IDs de chave que começam com
mrk-) e ARNs de alias são rejeitados quando você registra a chave; use o ARN da chave. - Sem etapa de validação separada: Além dessas verificações no ARN da chave no registro, a chave é validada quando você a anexa a um workspace. A chamada de anexação realiza uma ida e volta de criptografar/descriptografar contra a chave com o ID de compartimento desse workspace como contexto de criptografia, então um problema na política de chave aparece no momento da anexação em vez de no registro. Uma condição
EncryptionContextportanto não precisa de entrada todo-zeros. - Onde você gerencia chaves: Registre e anexe chaves no Claude Console, conectado através da AWS com a função Admin. Os endpoints de chave externa também estão disponíveis no Claude Platform on AWS, autorizados através de ações IAM; lá, uma chave é identificada por seu ARN de chave KMS em vez de um ID
ekey_.
Pré-requisitos
- A conta AWS que hospeda sua organização Claude Platform on AWS, com permissões para criar chaves KMS e definir políticas de chave (
kms:CreateKeyekms:PutKeyPolicy). - A função Admin no Claude Console para Claude Platform on AWS. Consulte Usando o Claude Console.
- Para o principal IAM com o qual você se conecta ao Claude Console: além de
aws-external-anthropic:AssumeConsole, as ações IAM para as operações que você realiza lá, porque registrar, listar e anexar chaves passam pelo gateway da AWS. Registrar uma chave éRegisterKey(comListKeyseGetKeypara visualizar registros), e anexar uma éUpdateWorkspaceouCreateWorkspace. As ações de chave externa (eCreateWorkspace) têm escopo de conta, então conceda-as emResource: "*"; uma política limitada a ARNs de workspace não as inclui. - Para o principal IAM que anexa a chave a um workspace (a identidade com a qual você se conectou ao Claude Console):
kms:DescribeKey,kms:Encryptekms:Decryptna chave. O acesso do seu principal à chave é verificado quando você a anexa, além do principal de serviço. - Opcional, para o seletor de chave no Claude Console:
kms:ListKeysekms:DescribeKeypara o principal com o qual você se conecta. Sem eles, cole o ARN da chave em vez disso.
Criar a chave KMS
A política de chave tem três declarações: a declaração de administrador raiz da sua conta; uma declaração que permite ao principal de serviço do Claude Platform on AWS criptografar, descriptografar e gerar chaves de dados; e uma declaração separada para kms:DescribeKey. A declaração de criptografia contém uma condição EncryptionContext opcional que vincula a chave aos workspaces que você listar. DescribeKey é concedida separadamente porque não tem o parâmetro EncryptionContext, portanto uma condição EncryptionContext nessa ação sempre negaria o acesso.
Se você planeja usar a condição EncryptionContext opcional mostrada aqui, crie o workspace primeiro (sem uma chave), copie seu ID de compartimento e substitua <compartment-uuid> por ele. Para encontrar o ID no Claude Console, acesse a página Data retention (platform.claude.com/settings/privacy) e selecione o workspace no menu suspenso no topo da página. O ID fica em Encryption key, no campo Compartment ID. Você também pode lê-lo no campo compartment_id retornado pelo endpoint Get Workspace. Se você não planeja usar a condição, exclua o bloco Condition dessa declaração.
export YOUR_ACCOUNT=$(aws sts get-caller-identity --query Account --output text)
aws kms create-key \
--region <workspace-region> \
--description "Anthropic CMEK (Claude Platform on AWS)" \
--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\": \"AllowClaudePlatformOnAWSCrypto\",
\"Effect\": \"Allow\",
\"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
\"Action\": [\"kms:Encrypt\", \"kms:Decrypt\", \"kms:GenerateDataKey\"],
\"Resource\": \"*\",
\"Condition\": {
\"StringEquals\": {
\"kms:EncryptionContext:anthropic:compartment_uuid\": [
\"<compartment-uuid>\"
]
}
}
},
{
\"Sid\": \"AllowClaudePlatformOnAWSDescribe\",
\"Effect\": \"Allow\",
\"Principal\": {\"Service\": \"aws-external-anthropic.amazonaws.com\"},
\"Action\": \"kms:DescribeKey\",
\"Resource\": \"*\"
}
]
}"Capture KeyMetadata.Arn da saída. Você precisará dele ao registrar a chave.
A condição EncryptionContext é opcional. Toda chamada de criptografia, descriptografia e chave de dados feita para um workspace, incluindo a verificação no momento da anexação, carrega o ID de compartimento desse workspace como anthropic:compartment_uuid, portanto a condição lista o ID de compartimento de cada workspace ao qual você anexa a chave e não precisa de entrada todo-zeros. Adicioná-la também vincula a chave aos workspaces que você listar na camada do IAM. Como um ID de compartimento só existe depois que o workspace correspondente existe, a ordem é: criar o workspace, colocar o ID de compartimento dele na condição (na criação da chave ou posteriormente com kms:PutKeyPolicy) e, em seguida, anexar a chave. Antes de anexar a chave a cada workspace adicional, adicione o ID de compartimento desse workspace da mesma forma. Para começar sem ela, exclua o bloco Condition da declaração AllowClaudePlatformOnAWSCrypto; se você adicioná-la depois, inclua o ID de compartimento de cada workspace ao qual a chave já está anexada.
Você pode restringir ainda mais as duas declarações do principal de serviço com uma condição aws:SourceArn. O serviço passa o ARN do workspace (arn:aws:aws-external-anthropic:<region>:<account-id>:workspace/<workspace-id>) como ARN de origem em toda chamada que faz com sua chave, portanto "ArnLike": {"aws:SourceArn": "arn:aws:aws-external-anthropic:*:<account-id>:workspace/*"} limita a concessão aos workspaces da sua própria conta AWS, e uma lista de ARNs completos de workspaces a limita a esses workspaces. Essa condição não é obrigatória; a condição EncryptionContext por si só vincula a chave aos workspaces que você listar.
Você também pode criar a chave no AWS Console: escolha uma chave simétrica com o uso de chave de criptografar e descriptografar, uma chave de região única e origem de material de chave KMS, na região do workspace. Deixe as permissões de uso de chave vazias no assistente de criação de chave, depois abra a aba Key policy da chave e substitua o JSON pela política mostrada aqui.
Registrar e anexar a chave
Registre a chave
No Claude Console, acesse a página Data retention (
platform.claude.com/settings/privacy). Se você não vir Encryption keys, selecione Organization no menu suspenso no topo da página. Em Encryption keys, clique em Add key. Insira um nome de exibição, depois escolha a chave no seletor de chave ou escolha Enter ARN manually e cole o ARN da chave, e clique em Add. A chave deve estar na conta AWS que hospeda sua organização; chaves entre contas não são suportadas. O seletor lista as chaves habilitadas, gerenciadas pelo cliente, simétricas e de região única na sua conta em uma das regiões da sua organização; para uma chave que o seletor não lista, insira o ARN. Ele lista chaves apenas se o principal com o qual você se conectou puder chamarkms:ListKeysekms:DescribeKey.Anexe a chave a um workspace
Anexe a chave a um novo workspace antes de enviar qualquer solicitação a esse workspace. Para um workspace que já recebe solicitações, a chave pode levar até um dia para entrar em vigor. No Claude Console, acesse a página Data retention (
platform.claude.com/settings/privacy) e selecione o workspace no menu suspenso no topo da página. Em Encryption key, selecione a chave, clique em Save e confirme. Você também pode selecionar uma chave ao criar um workspace no Claude Console, mas somente se sua política de chave ainda não nomear workspaces específicos (sem condiçãoEncryptionContext), porque o ID de compartimento do workspace é atribuído na criação. Depois de anexada, a chave de um workspace não pode ser alterada.É quando a chave é validada: a chamada de anexação verifica o acesso do seu principal à chave e realiza uma ida e volta de criptografar/descriptografar contra ela com o ID de compartimento do workspace como contexto de criptografia, então um problema com a política de chave ou com as permissões do seu principal aparece como um erro nessa chamada. Se a anexação falhar com um erro de acesso KMS, verifique o seguinte:
- A política de chave nomeia o principal de serviço
aws-external-anthropic.amazonaws.come concedekms:Encrypt,kms:Decryptekms:GenerateDataKey, além dekms:DescribeKeyem uma declaração separada que não tem condiçãoEncryptionContext. - Qualquer condição
EncryptionContextinclui o ID de compartimento deste workspace, e qualquer condiçãoaws:SourceArnque você adicionou corresponde ao ARN deste workspace. - A chave está habilitada, é de região única e está na mesma conta e região AWS do workspace.
- O principal com o qual você está conectado tem
kms:DescribeKey,kms:Encryptekms:Decryptna chave. - Nenhuma política de controle de serviço ou política de controle de recursos em sua organização AWS impede o principal de serviço ou seu principal de usar a chave.
- Se a política parecer correta e a anexação ainda falhar, encontre o evento
kms:negado no CloudTrail na conta da chave (ele mostra o principal chamador e, para chamadas criptográficas, o contexto de criptografia), depois corrija a condição comkms:PutKeyPolicye tente novamente.
- A política de chave nomeia o principal de serviço
Terraform
Para implantações de infraestrutura como código, as mesmas etapas mapeiam para o provedor aws com os recursos aws_kms_key e aws_kms_alias.
Was this page helpful?