Controlar o acesso ao armazenamento de chaves externas - AWS Key Management Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Controlar o acesso ao armazenamento de chaves externas

Todos os recursos de controle de acesso do AWS KMS (políticas de chave, políticas do IAM e concessões) que você usa com chaves do KMS padrão funcionam da mesma forma para chaves do KMS em um armazenamento de chaves externas. Você pode usar políticas do IAM para controlar o acesso às operações de API que criam e gerenciam armazenamentos de chaves externas. Use políticas do IAM e políticas de chaves para controlar o acesso às AWS KMS keys no armazenamento de chaves externas. Você também pode usar políticas de controle de serviço para sua organização da AWS e políticas de endpoint da VPC para controlar o acesso às chaves do KMS em seu armazenamento de chaves externas.

Recomendamos que você forneça aos usuários e perfis apenas as permissões necessárias para as tarefas que possivelmente executarão.

Autorizar gerenciadores de armazenamento de chaves externas

As entidades principais que criam e gerenciam um armazenamento de chaves externas precisam de permissões para as operações de armazenamento de chaves personalizado. A lista a seguir descreve as permissões mínimas necessárias para os gerenciadores de armazenamento de chaves externas. Como um armazenamento de chaves personalizado não é um recurso da AWS, você não pode fornecer permissão a um armazenamento de chaves externas para entidades principais de outras Contas da AWS.

  • kms:CreateCustomKeyStore

  • kms:DescribeCustomKeyStores

  • kms:ConnectCustomKeyStore

  • kms:DisconnectCustomKeyStore

  • kms:UpdateCustomKeyStore

  • kms:DeleteCustomKeyStore

As entidades principais que criam um armazenamento de chaves externas precisam de permissão para criar e configurar os componentes do armazenamento de chaves externas. Elas podem criar armazenamentos de chaves externas somente em suas próprias contas. Para criar um armazenamento de chaves externas com conectividade de serviço de endpoint da VPC, as entidades principais devem ter permissão para criar os seguintes componentes:

  • Uma Amazon VPC

  • Sub-redes públicas e privadas

  • Um balanceador de carga de rede e grupo de destino

  • Um serviço de endpoint da Amazon VPC

Para obter detalhes, consulte Identity and Access Management para a Amazon VPC, Gerenciamento de identidade e acesso para endpoints da VPC e serviços de endpoint da VPC e Elastic Load Balancing API permissions (Permissões de API do Elastic Load Balancing).

Autorizar usuários de chaves do KMS em armazenamentos de chaves externas

As entidades principais que criam e gerenciam AWS KMS keys no armazenamento de chaves externas exigem as mesmas permissões que as que criam e gerenciam qualquer chave do KMS no AWS KMS. A política de chaves padrão para a chave do KMS em um armazenamento de chaves externas é idêntica à política de chaves padrão para chaves do KMS no AWS KMS. O controle de acesso por atributo (ABAC), que usa etiquetas e aliases para controlar o acesso a chaves do KMS, também é eficaz em chaves do KMS em armazenamentos de chaves externas.

As entidades principais que usam as chaves do KMS no seu armazenamento de chaves personalizado para operações de criptografia precisam de permissão para executar a operação criptográfica com a chaves do KMS, como kms:Decrypt. Você pode fornecer essas permissões em uma política do IAM ou em uma política de chaves. No entanto, elas não precisam de permissões adicionais para usar uma chave do KMS em um armazenamento de chaves personalizado.

Para definir uma permissão que se aplique somente às chaves do KMS em um armazenamento de chaves externas, use a condição de política kms:KeyOrigin com um valor de EXTERNAL_KEY_STORE. Você pode usar essa condição para limitar a CreateKey permissão kms: ou qualquer permissão específica de um recurso de chave KMS. Por exemplo, a política do IAM a seguir permite que a identidade à qual está anexada chame as operações especificadas em todas as chaves do KMS da conta, desde que as chaves do KMS estejam em um armazenamento de chaves externas. É possível limitar a permissão às chaves do KMS em um armazenamento de chaves externas e às chaves do KMS em uma Conta da AWS, mas não a qualquer armazenamento de chaves externas específico na conta.

{ "Sid": "AllowKeysInExternalKeyStores", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/*", "Condition": { "StringEquals": { "kms:KeyOrigin": "EXTERNAL_KEY_STORE" } } }

Autorizar o AWS KMS a se comunicar com o proxy de armazenamento de chaves externas

O AWS KMS se comunica com seu gerenciador de chaves externas somente por meio do proxy de armazenamento de chaves externas que você fornece. O AWS KMS autentica o proxy assinando suas solicitações usando o processo Signature Version 4 (SigV4) com a credencial de autenticação de proxy de armazenamento de chaves externas que você especifica. Se você estiver usando conectividade de endpoint público para seu proxy de armazenamento de chaves externas, o AWS KMS não precisará de outras permissões.

No entanto, se você estiver usando a conectividade do serviço de endpoint da VPC, deverá conceder permissão para o AWS KMS criar um endpoint de interface para seu serviço de endpoint da Amazon VPC. Essa permissão é necessária, independentemente se o proxy de armazenamento de chaves externas está em sua VPC ou se o proxy de armazenamento de chaves externas está localizado em outro lugar, mas usa o serviço de endpoint da VPC para se comunicar com o AWS KMS.

Para permitir AWS KMS a criação de um endpoint de interface, use o console Amazon VPC ou ModifyVpcEndpointServicePermissionsa operação. Conceda permissões para a seguinte entidade principal: cks.kms.<region>.amazonaws.com.

Por exemplo, o comando da AWS CLI a seguir permite que o AWS KMS se conecte ao serviço de endpoint da VPC na região Oeste dos EUA (Oregon) (us-west-2). Antes de usar esse comando, substitua o ID do serviço da Amazon VPC e a Região da AWS por valores válidos para sua configuração.

modify-vpc-endpoint-service-permissions --service-id vpce-svc-12abc34567def0987 --add-allowed-principals '["cks.kms.us-west-2.amazonaws.com"]'

Para remover essa permissão, use o console da Amazon VPC ou o ModifyVpcEndpointServicePermissionscom o RemoveAllowedPrincipals parâmetro.

Autorização de proxy de armazenamento de chaves externas (opcional)

Alguns proxies de armazenamento de chaves externas implementam requisitos de autorização para o uso de suas chaves externas. O proxy de armazenamento de chaves externas é permitido, mas não obrigatório, para criar e implementar um esquema de autorização que permita que usuários específicos solicitem operações específicas somente sob certas condições. Por exemplo, o proxy pode ser configurado para dar ao usuário A permissão para criptografar com uma chave externa específica, mas não para descriptografar com ela.

A autorização de proxy é independente da autenticação de proxy baseada em SIGv4 que o AWS KMS exige para todos os proxies de armazenamento de chaves externas. Também é independente das políticas de chave, políticas do IAM e concessões que autorizam o acesso a operações que afetam o armazenamento de chaves externas ou suas chaves do KMS.

Para habilitar a autorização pelo proxy de armazenamento de chaves externas, o AWS KMS inclui metadados em cada solicitação da API de proxy, incluindo o autor da chamada, a chave do KMS, a operação do AWS KMS e o AWS service (Serviço da AWS) (se houver). Veja a seguir os metadados da solicitação para a versão 1 (v1) da API de proxy de chave externa.

"requestMetadata": { "awsPrincipalArn": string, "awsSourceVpc": string, // optional "awsSourceVpce": string, // optional "kmsKeyArn": string, "kmsOperation": string, "kmsRequestId": string, "kmsViaService": string // optional }

Por exemplo, você pode configurar o proxy para permitir solicitações de uma entidade principal específica (awsPrincipalArn), mas somente quando a solicitação é feita em nome da entidade principal por um AWS service (Serviço da AWS) específico (kmsViaService).

Se a autorização do proxy falhar, a operação do AWS KMS relacionada falhará com uma mensagem que explica o erro. Para obter mais detalhes, consulte Problemas de autorização de proxy.

Autenticação mTLS (opcional)

Para habilitar o proxy de armazenamento de chaves externas para autenticar solicitações do AWS KMS, o AWS KMS assina todas as solicitações para seu proxy de armazenamento de chaves externas com uma credencial de autenticação Signature V4 (SigV4) para o armazenamento de chaves externas.

Para assegurar que o proxy de armazenamento de chaves externas responda somente às solicitações do AWS KMS, alguns proxies de chave externa oferecem suporte à Transport Layer Security mútua (mTLS), na qual as duas partes da transação usam certificados para se autenticar. O mTLS adiciona a autenticação do lado do cliente (em que o servidor de proxy do armazenamento de chaves externas autentica o cliente do AWS KMS) à autenticação do lado do servidor fornecida pelo TLS padrão. Caso a credencial de autenticação de proxy esteja comprometida, o que raramente acontece, o mTLS impede que terceiros façam solicitações de API bem-sucedidas ao proxy do armazenamento de chaves externas.

Para implementar o mTLS, configure seu proxy de armazenamento de chaves externas para aceitar somente certificados TLS do lado do cliente com as seguintes propriedades:

  • O nome comum da entidade no certificado TLS deve ser cks.kms.<Region>.amazonaws.com, por exemplo, cks.kms.eu-west-3.amazonaws.com.

  • O certificado deve estar vinculado a uma autoridade de certificação associada ao Amazon Trust Services.