Conceitos do AWS Key Management Service - 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á.

Conceitos do AWS Key Management Service

Aprenda os termos e conceitos básicos do AWS Key Management Service (AWS KMS) e como eles trabalham juntos para ajudar a proteger seus dados.

Chaves mestras do cliente (CMKs)

Chaves mestras do cliente são os principais recursos no AWS KMS.

Um Chave mestra do cliente (CMK) é uma representação lógica de um chave mestra. O CMK inclui metadados, como o ID da chave, a data de criação, a descrição e o estado da chave. O CMK também contém o material de chaves usado para criptografar e descriptografar dados.

O AWS KMS é compatível com CMKs simétricas e assimétricas. Uma chave simétricaCMK representa uma chave de 256 bits que é usada para criptografia e descriptografia. Um CMK assimétrico representa um par de chaves RSA que é usado para criptografia e descriptografia ou para assinatura e verificação (mas não ambos) ou um par de chaves de curva elíptica (ECC) que é usado para assinatura e verificação. Para obter informações detalhadas sobre CMKs simétricas e assimétricas, consulte Usar chaves simétricas e assimétricas.

CMKs são criados no AWS KMS. As chaves simétricas CMKs e as chaves privadas de assimétricas CMKs nunca deixam a AWS KMS descriptografadas. Para gerenciar o CMK, você pode usar a Console de gerenciamento da AWS ou a API do AWS KMS. Para usar um CMK em operações criptográficas, você deve usar a API do AWS KMS. Essa estratégia se diferencia das chaves de dados. O AWS KMS não armazena, gerencia nem rastreia as chaves de dados. Você deve usá-las fora do AWS KMS.

Por padrão, o AWS KMS cria o material de chaves para um CMK. Você não pode extrair, exportar, visualizar ou gerenciar esse material de chaves. Além disso, você não pode excluir esse material de chaves, exclua o CMK. No entanto, você pode importar seu próprio material de chaves para um CMK ou criar o material de chaves para um CMK no cluster do AWS CloudHSM associado a um armazenamento de chaves personalizado do AWS KMS.

Para obter informações sobre como criar e gerenciar o CMKs, consulte Conceitos básicos. Para obter informações sobre como usar o CMKs, consulte o AWS Key Management Service API Reference.

O AWS KMS CMKs oferece suporte a três tipos de CMKs: AWS gerenciado pelo cliente, CMKs gerenciado pela AWS e CMKs de propriedade da .

Tipo de CMK Pode visualizar metadados doCMK Pode gerenciar CMK. Usada apenas para a minha conta da AWS Rotação automática
Gerenciado pelo cliente CMK Sim Sim Sim Opcional. A cada 365 dias (1 ano).
AWS gerenciado CMK Sim Não Sim Obrigatório. A cada 1.095 dias (3 anos).
Propriedade da AWS CMK Não Não Não Varia

Para distinguir o CMKs gerenciado pelo cliente do AWS gerenciado pela CMKs, use o campo KeyManager na resposta da operação DescribeKey. Para CMKs gerenciados pelo cliente, o valor de KeyManager é Customer. Em AWS gerenciado do CMKs, o valor de KeyManager é AWS.

Os serviços da AWS que se integram ao AWS KMS diferem no que diz respeito ao suporte ao CMKs. Por padrão, alguns serviços da AWS criptografam seus dados com um AWS de propriedade da CMK ou um AWS gerenciado pela CMK. Outros serviços da AWS oferecem criptografia de dados sob uma CMK gerenciada pelo cliente de sua escolha. E outros serviços da AWS oferecem suporte a todos os tipos de CMKs para permitir a facilidade de um AWS de propriedade da CMK, a visibilidade de um AWS gerenciado pela CMK ou o controle de um CMK gerenciado pelo cliente. Para obter informações detalhadas sobre as opções de criptografia oferecidas por um serviço da AWS, consulte o tópico Criptografia em repouso no guia do usuário ou no guia do desenvolvedor do serviço.

gerenciado pelo clienteCMKs

gerenciado pelo cliente do CMKs são CMKs na sua conta da AWS que você cria, possui e gerencia. Você tem controle total sobre essas CMKs, incluindo estabelecer e manter suas políticas de chaves, políticas do IAM e concessões, habilitar e desabilitar, alternar seu material criptográfico, adicionar tags, criar aliases que se referem à CMK e programar a CMKs para exclusão.

As CMKs gerenciadas pelo cliente são exibidas na página Customer managed keys (Chaves gerenciadas pelo cliente) do Console de gerenciamento da AWS para o AWS KMS. Para identificar definitivamente um CMK gerenciado pelo cliente, use a operação DescribeKey. Para CMKs gerenciados pelo cliente, o valor do campo KeyManager da resposta DescribeKey é CUSTOMER.

Você pode usar o CMKs gerenciado pelo cliente em operações de criptografia e auditar o uso em logs do AWS CloudTrail. Além disso, muitos serviços da AWS que se integram ao AWS KMS permitem que você especifique um CMK gerenciado pelo cliente para proteger os dados que ele armazena e gerencia para você.

As CMKs gerenciadas pelo cliente incorrem em uma taxa mensal e em uma taxa de uso além do nível gratuito. Elas são contabilizadas em relação a cotas do AWS KMS para sua conta. Para obter mais detalhes, consulte AWS Key Management Service Definição de preço e Cotas.

AWSgerenciadoCMKs

são AWS gerenciados pela CMKs em sua conta que são criados, gerenciados e usados em seu nome por um serviço da que está integrado à CMKs.AWSAWS KMS Alguns serviços da AWS oferecem suporte apenas a um AWS gerenciado pela CMK. Outras pessoas usam uma CMK de propriedade da AWS ou oferecem a você a opção de CMKs.

É possível visualizar as AWS gerenciadas pela CMKs em sua conta, visualizar suas políticas de chaves e auditar o uso delas em logs do .AWS CloudTrail Mas não é possível gerenciar essas CMKs, alterná-las ou alterar suas políticas de chaves. Além disso, você não pode usar o AWS gerenciado pelo CMKs em operações de criptografia diretamente; o serviço que as cria, usa-as em seu nome.

As AWS gerenciadas pela CMKs são exibidas na página AWSchaves gerenciadas pela do Console de gerenciamento da AWS para o AWS KMS. Você também pode identificar a maioria das AWS gerenciadas pela CMKs por seus aliases, que têm o formato aws/service-name, como aws/redshift. Para identificar definitivamente um AWS gerenciado pelo CMK, use a operação DescribeKey. Para AWS gerenciados pelo CMKs, o valor do campo KeyManager da resposta DescribeKey é AWS.

Você não paga uma taxa mensal pelo AWS gerenciado pelo CMKs. Elas podem estar sujeitas a taxas de uso que excede o nível gratuito, mas alguns serviços da AWS abrangem esses custos para você. Para obter detalhes, consulte o tópico Criptografia em repouso no guia do usuário ou no guia do desenvolvedor do serviço. Os AWS gerenciados pelo CMKs não contam em relação às cotas de recurso para o número de CMKs em cada região da sua conta. Mas quando elas são usadas em nome de um principal em sua conta, essas CMKs são contabilizadas em relação às cotas de solicitação. Para obter mais detalhes, consulte AWS Key Management Service Definição de preço e Cotas.

AWSpertencido aCMKs

AWS são uma coleção de CMKs que um serviço da possui e gerencia para uso em várias contas da CMKs.AWSAWS Embora as AWS de propriedade da CMKs não estejam na sua conta da AWS, um serviço da AWS pode usar sua AWS de propriedade da CMKs para proteger os recursos na sua conta.

Você não precisa criar ou gerenciar o CMKs de propriedade da AWS. No entanto, não é possível exibi-las, usá-las, rastreá-las ou auditá-las. Não é cobrada taxa mensal nem taxa de uso pela AWS de propriedade da CMKs e elas não são contabilizadas em relação às cotas do AWS KMS da sua conta.

A estratégia de rotação de chaves para uma CMK de propriedade da AWS é determinada pelo serviço da AWS que cria e gerencia a CMK. Para obter informações sobre os tipos de serviço da CMKs compatíveis com um AWS, incluindo AWS de propriedade da CMKs, consulte o tópico Criptografia em repouso no guia do usuário ou no guia do desenvolvedor do serviço.

Chaves de dados

As chaves de dados são as chaves de criptografia que você pode usar para criptografar dados, incluindo grandes quantidades de dados e outras chaves de criptografia de dados.

Você pode usar o AWS KMS chaves mestras do cliente (CMKs) para gerar, criptografar e descriptografar chaves de dados. No entanto, o AWS KMS não armazena, gerencia ou monitora as chaves de dados nem executa operações de criptografia com chaves de dados. Você deve usar e gerenciar as chaves de dados fora do AWS KMS.

Criação de uma chave de dados

Para criar uma chave de dados, chame a operação GenerateDataKey do AWS KMS. O CMK usa o que você especifica para gerar uma chave de dados. A operação retorna uma cópia de texto simples da chave de dados e uma cópia da chave de dados criptografada sob as CMK. A imagem a seguir mostra essa operação.


          Gerar uma chave de dados

O AWS KMS também oferece suporte à operação GenerateDataKeyWithoutPlaintext, que retorna apenas uma chave de dados criptografada. Quando precisar usar a chave de dados, peça ao AWS KMS para descriptografá-la.

Criptografia de dados com uma chave de dados

O AWS KMS não pode usar uma chave de dados para criptografar dados. Mas você pode usar a chave de dados fora do KMS, por exemplo, usando o OpenSSL ou uma biblioteca de criptografia como o SDK de criptografia da AWS.

Depois de usar a chave de dados de texto simples para criptografar dados e remova-a da memória assim que possível. Você pode armazenar seguramente as chaves de dados criptografadas com os dados criptografados para que estejam disponíveis para descriptografar os dados.


          Criptografar dados do usuário fora doAWS KMS

Descriptografia de dados com uma chave de dados

Para descriptografar seus dados, passe a chave de dados criptografada para a operação Decrypt. O AWS KMS usa seu CMK para descriptografar a chave de dados e, em seguida, retorna a chave de dados de texto simples. Use a chave de dados de texto simples para descriptografar seus dados e remove-a da memória assim que possível.

O diagrama a seguir mostra como usar a operação Decrypt para descriptografar uma chave de dados criptografada.


          Descriptografia de uma chave de dados

Pares de chaves de dados

Os pares de chaves de dados são chaves de dados assimétricas que consistem em uma chave pública e uma chave privada relacionadas matematicamente. Eles são projetados para serem usados para criptografia e descriptografia no lado do cliente ou para assinatura e verificação fora do AWS KMS.

Ao contrário dos pares de chaves de dados gerados por ferramentas como OpenSSL, o AWS KMS protege a chave privada em cada par de chaves de dados sob um CMK simétrico no AWS KMS especificado por você. No entanto, o AWS KMS não armazena, gerencia nem rastreia os pares de chaves de dados, nem executa operações criptográficas com pares de chaves de dados. É necessário usar e gerenciar pares de chaves fora do AWS KMS.

O AWS KMS oferece suporte aos seguintes tipos de pares de chaves de dados:

  • Pares de chaves RSA: RSA_2048, RSA_3072 e RSA_4096

  • Pares de chaves de curva elíptica: ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521 e ECC_SECG_P256K1

O tipo de par de chaves de dados selecionado geralmente depende do caso de uso ou dos requisitos regulatórios. A maioria dos certificados exige chaves RSA. As chaves de curva elíptica geralmente são usadas para assinaturas digitais. As chaves ECC_SECG_P256K1 são normalmente usado para criptomoedas.

Criar um par de chaves de dados

Para criar um par de chaves de dados, chame as operações GenerateDataKeyPair ou GenerateDataKeyPairWithoutPlaintext. Especifique a CMK simétrica que deseja usar para criptografar a chave privada.

GenerateDataKeyPair retorna uma chave pública de texto não criptografado, uma chave privada de texto não criptografado e uma chave privada criptografada. use essa operação quando precisar imediatamente de uma chave privada de texto não criptografado, como para gerar uma assinatura digital.

GenerateDataKeyPairWithoutPlaintext retorna uma chave pública de texto não criptografado e uma chave privada criptografada, mas não uma chave privada de texto não criptografado. Use essa operação quando não precisar imediatamente de uma chave privada de texto não criptografado, como quando você está criptografando uma chave pública. Posteriormente, quando precisar de uma chave privada de texto não criptografado para descriptografar os dados, poderá chamar a operação Decrypt.

A imagem a seguir mostra a operação GenerateDataKeyPair. A operação GenerateDataKeyWithoutPlaintext omite a chave privada de texto não criptografado.


          Gerar um par de chaves de dados

Criptografar dados com um par de chaves de dados

Ao criptografar com um par de chaves de dados, você usa a chave pública do par para criptografar os dados e a chave privada do mesmo par para descriptografar os dados. Normalmente, os pares de chaves de dados são usados quando muitas partes precisam criptografar dados que só a parte que tem a chave privada pode descriptografar.

As partes com a chave pública usam essa chave para criptografar dados, conforme mostrado no diagrama a seguir.


          Criptografar dados do usuário com a chave pública de um par de chaves de dados fora doAWS KMS

Descriptografar dados com um par de chaves de dados

Para descriptografar seus dados, use a chave privada no par de chaves de dados. Para que a operação seja bem-sucedida, as chaves pública e privada devem ser do mesmo par de chaves de dados e você deve usar o mesmo algoritmo de criptografia.

Para descriptografar a chave privada criptografada, transmita-a para a operação Decrypt. Use a chave privada de texto não criptografado para descriptografar os dados. Depois, remova a chave privada de texto não criptografado da memória assim que possível.

O diagrama a seguir mostra como usar a chave privada em um par de chaves de dados para descriptografar texto cifrado.


          Descriptografe os dados com a chave privada em um par de chaves de dados fora do AWS KMS.

Assinar mensagens com um par de chaves de dados

Para gerar uma assinatura criptográfica para uma mensagem, use a chave privada no par de chaves de dados. Qualquer pessoa com a chave pública pode usá-la para verificar se a mensagem foi assinada com a chave privada e se ela não foi alterada desde que foi assinada.

Se a chave privada estiver criptografada, passe a chave privada criptografada para a operação Decrypt. O AWS KMS usa o CMK para descriptografar a chave de dados e, em seguida, retorna a chave privada de texto não criptografado. Use a chave privada de texto não criptografado para gerar a assinatura. Depois, remova a chave privada de texto não criptografado da memória assim que possível.

Para assinar uma mensagem, crie um resumo de mensagens usando uma função hash criptográfica, como o comando dgst na OpenSSL. Depois, passe a chave privada de texto não criptografado para o algoritmo de assinatura. O resultado é uma assinatura que representa os conteúdos da mensagem.

O diagrama a seguir mostra como usar a chave privada em um par de chaves para assinar a mensagem.


          Gere uma assinatura criptográfica com a chave privada em um par de chaves de dados fora do AWS KMS.

Verificar uma assinatura com um par de chaves de dados

Qualquer pessoa que tenha a chave pública no par de chaves de dados pode usá-la para verificar a assinatura gerada com sua chave privada. A verificação confirma que um usuário autorizado assinou a mensagem com a chave privada e o algoritmo de assinatura especificados, e que a mensagem não foi alterada desde que foi assinada.

Para ser bem-sucedida, a parte que está verificando a assinatura deve gerar o mesmo tipo de resumo, usar o mesmo algoritmo e usar a chave pública que corresponde à chave privada usada para assinar a mensagem.

O diagrama a seguir mostra como usar a chave pública em um par de chaves para verificar a assinatura de uma mensagem.


          Verifique uma assinatura criptográfica com a chave pública em um par de chaves de dados fora do AWS KMS.

Aliases

Um alias é um nome amigável para uma CMK. Por exemplo, você pode se referir a uma CMK como test-key em vez de 1234abcd-12ab-34cd-56ef-1234567890ab.

Os aliases facilitam a identificação de uma CMK no Console de gerenciamento da AWS. Também é possível usar um alias para identificar uma CMK em algumas operações da AWS KMS, incluindo operações criptográficas. Em aplicativos, é possível usar um único alias para fazer referência a CMKs diferentes em cada região da AWS.

No AWS KMS, os aliases são recursos independentes, e não propriedades de uma CMK. Dessa forma, você pode adicionar, alterar e excluir um alias sem afetar a CMK associada.

Saiba mais:

Operações criptográficas

No AWS KMS, operações criptográficas são operações da API que usam o CMKs para proteger dados. Como CMKs permanece dentro de AWS KMS, você deve chamar AWS KMS para usar um CMK em uma operação criptográfica.

Para executar operações criptográficas com o CMKs, use o AWS SDKs, o AWS Command Line Interface (AWS CLI) ou o AWS Tools para PowerShell. Não é possível executar operações criptográficas no console do AWS KMS. Para obter exemplos de chamadas de operações criptográficas em várias linguagens de programação, consulte Programação da API do AWS KMS.

A tabela a seguir lista as operações criptográficas do AWS KMS. Ela também mostra os requisitos de tipo de chave e uso de chave para o CMKs usado na operação.

Operation Tipo de chave doCMK Uso da chave doCMK
Decrypt Quaisquer ENCRYPT_DECRYPT
Encrypt Quaisquer ENCRYPT_DECRYPT
GenerateDataKey Simétrica ENCRYPT_DECRYPT
GenerateDataKeyPair Simétrica [1] ENCRYPT_DECRYPT
GenerateDataKeyPairWithoutPlaintext Simétrica [1] ENCRYPT_DECRYPT
GenerateDataKeyWithoutPlaintext Simétrica ENCRYPT_DECRYPT
GenerateRandom N/D Essa operação não usa um CMK. N/A
ReEncrypt Quaisquer ENCRYPT_DECRYPT
Sign Assimétrica SIGN_VERIFY
Verificar Assimétrica SIGN_VERIFY

[1] GenerateDataKeyPair e GenerateDataKeyPairWithoutPlaintext geram um par de chaves de dados assimétricas que é protegido por uma CMK simétrica.

Para obter informações sobre as permissões para operações criptográficas, consulte a AWS KMS Permissões API: Referência de ações e recursos.

Para tornar o AWS KMS responsivo e eficaz para todos os usuários, o AWS KMS estabelece cotas para o número de operações criptográficas que podem ser chamadas em cada segundo. Para obter mais detalhes, consulte Cotas compartilhadas para operações criptográficas.

Identificadores de chave (KeyId)

Os identificadores de chave atuam como nomes para o AWS KMS chaves mestras do cliente (CMKs). Eles ajudam você a reconhecer o CMKs no console. Use-os para indicar qual CMKs você deseja usar em operações de API do AWS KMS, políticas do IAM e concessões.

O AWS KMS define vários identificadores de chave. Quando você cria um CMK, o AWS KMS gera um ARN e um ID de chave, que são propriedades do CMK. Quando você cria um alias, o AWS KMS gera o ARN de um alias com base no nome do alias definido. É possível exibir os identificadores de chave e alias no Console de gerenciamento da AWS e na API do AWS KMS.

No console do AWS KMS, você pode visualizar e filtrar CMKs pelo ARN da chave, ID da chave ou nome do alias e classificar por ID da chave e nome do alias. Para obter ajuda para encontrar os identificadores de chave no console, consulte Encontrar o ID de chave e o ARN.

Na API do AWS KMS, os parâmetros que você usa para identificar um CMK são chamados KeyId ou uma variação, como TargetKeyId ou DestinationKeyId. No entanto, os valores desses parâmetros não estão limitados à chave IDs. Qualquer identificador de chave válido pode ser necessário para alguns. Para obter informações sobre os valores de cada parâmetro, consulte a descrição do parâmetro na AWS Key Management Service API Reference.

nota

Ao usar a API do AWS KMS, preste atenção ao identificador de chave usado. Diferentes APIs exigem diferentes identificadores de chave. Em geral, use o identificador de chave mais completo que seja prático para sua tarefa.

O AWS KMS é compatível com os seguintes identificadores de chave.

ARN de chave

O ARN da chave é o nome de recurso da Amazon (ARN) de uma CMK. É um identificador exclusivo e totalmente qualificado para o CMK. Um ARN de chave inclui a conta da AWS, a região e o ID de chave. Para obter ajuda para encontrar o ARN da chave de uma CMK, consulte Encontrar o ID de chave e o ARN.

O formato de um ARN de chave é o seguinte:

arn:<partition>:kms:<region>:<account-id>:key/<key-id>

Veja a seguir um exemplo de ARN de chave.

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
ID da chave

O ID de chave identifica exclusivamente um CMK em uma conta e uma região. Para obter ajuda para encontrar o ID de chave de uma CMK, consulte Encontrar o ID de chave e o ARN.

Veja a seguir um exemplo de ID de chave.

1234abcd-12ab-34cd-56ef-1234567890ab
ARN do alias

O ARN do alias é o nome de recurso da Amazon (ARN) de um alias do AWS KMS. É um identificador exclusivo e totalmente qualificado para o alias e para o CMK que ele representa. Um ARN de alias inclui a conta da AWS, a região e o nome do alias.

Em determinado momento, um ARN de alias identifica um CMK específico. No entanto, como você pode alterar o CMK associado ao alias, o ARN do alias pode identificar diferentes CMKs em diferentes momentos. Para obter ajuda para encontrar o ARN do alias de uma CMK, consulte Encontrar o nome e o ARN do alias.

O formato de um ARN de alias é o seguinte:

arn:<partition>:kms:<region>:<account-id>:alias/<alias-name>

Veja a seguir o ARN de alias de um ExampleAlias fictício.

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
Nome do alias

O nome do alias identifica exclusivamente um CMK associado em uma conta e uma região. Na API do AWS KMS, os nomes de alias sempre começam com alias. Para obter ajuda para encontrar o nome do alias de uma CMK, consulte Encontrar o nome e o ARN do alias.

O formato de um nome de alias é o seguinte:

alias/<alias-name>

Por exemplo:

alias/ExampleAlias

O prefixo aws/ de um nome de alias é reservado para AWS gerenciados pela CMKs. Não é possível criar um alias com esse prefixo. Por exemplo, o nome do alias da AWS gerenciada pela CMK para o Amazon Simple Storage Service (Amazon S3) é o seguinte.

alias/aws/s3

Origem do material de chave

Origem do material de chave é uma propriedade CMK que identifica a origem do material de chave no CMK. Você escolhe a origem do material de chave ao criar o CMK e não é possível alterá-la. Para encontrar a origem do material de chave de uma CMK, use a operação DescribeKey ou consulte o valor Origin (Origem) na guia Cryptographic configuration (Configuração criptográfica) da página de detalhes de uma CMK no console do AWS KMS. Para obter ajuda, consulte Visualizar chaves.

pode ter um dos seguintes valores de origem de material de chave.CMKs

KMS (padrão)

Valor da API: AWS_KMS

O AWS KMS CMK cria e gerencia o material de chaves para o em seu próprio armazenamento de chaves. Esse é o valor padrão e recomendado para a maioria dos CMKs.

Para obter ajuda na criação de chaves com material de chave do AWS KMS, consulte Criar chaves.

Externo

Valor da API: EXTERNAL

O CMK tem material de chave importada. Quando você cria um CMK com uma origem de material de chave do External, o CMK não tem material de chave. Posteriormente, você pode importar o material de chaves para o CMK. Ao usar material de chave importada, é necessário proteger e gerenciar esse material de chave fora do AWS KMS, incluindo a substituição do material de chave se ele expirar. Para obter mais detalhes, consulte Sobre o material de chave importada.

Para obter ajuda na criação de um CMK para o material de chave importada, consulte Etapa 1 Criar uma CMK sem material chave.

Armazenamento de chaves personalizado (CloudHSM)

Valor da API: AWS_CLOUDHSM

O AWS KMS CMK criou o material de chaves para o no armazenamento de chaves personalizado.

Para obter ajuda para criar um CMK em um armazenamento de chaves personalizado, consulte Criar CMKs numa loja chave personalizada.

Especificação da chave

Especificação da chave do é uma propriedade CMK que representa a configuração criptográfica do CMK. A especificação de chave determina se o CMK é simétrico ou assimétrico, o tipo de material de chave no CMK e os algoritmos de criptografia ou de assinatura que podem ser usados com o CMK.

Normalmente, a especificação de chave escolhida para o CMK é baseada em seu caso de uso e nos requisitos regulatórios. Você escolhe a especificação de chave ao criar o CMK e não é possível alterá-la. Se você escolheu a especificação de chave errada, exclua o CMK e crie um novo.

Para obter uma lista de especificações de chave e ajuda com a escolha de uma especificação de chave, consulte Selecionar a especificação de chave. Para encontrar a especificação de chave de um CMK, use a operação DescribeKey ou consulte a guia Cryptographic configuration (Configuração criptográfica) na página de detalhes de um CMK no console do AWS KMS. Para obter ajuda, consulte Visualizar chaves.

nota

Em operações de API do AWS KMS, a especificação de chave para CMKs é conhecida como CustomerMasterKeySpec. Isso a distingue da especificação de chave para chaves de dados (KeySpec) e pares de chaves de dados (KeyPairSpec), e a especificação de chave usada ao encapsular o material de chaves para importação (WrappingKeySpec). Cada tipo de especificação de chave tem valores diferentes.

Para limitar as especificações de chave que os principais podem usar ao criar CMKs, use a chave de condição kms:CustomerMasterKeySpec. Também é possível usar a chave de condição kms:CustomerMasterKeySpec para permitir que os principais chamem operações do AWS KMS para uma CMK com base em sua especificação de chave. Por exemplo, você pode negar permissão para programar a exclusão de CMK com uma especificação de chave RSA_4096.

Uso da chave

Key usage é uma propriedade CMK que determina se um CMK é usado para criptografia e descriptografia ou para assinatura e verificação. Não é possível escolher ambos. Usar uma CMK para mais de um tipo de operações torna o produto de ambas as operações mais vulnerável a ataques.

O uso de chave para CMKs simétrica é sempre criptografia e descriptografia. O uso de chave para curva elíptica (ECC) CMKs é sempre assinatura e verificação. Você só precisa escolher um uso de chave para RSA CMKs. Você escolhe o uso de chave ao criar o CMK e não é possível alterá-lo. Se você escolheu o uso de chave errado, exclua o CMK e crie um novo.

Para escolher o uso de chave, consulte Selecionar o uso de chave. Para encontrar o uso de chave de uma CMK, use a operação DescribeKey ou escolha a guia Cryptographic configuration (Configuração criptográfica) na página de detalhes de uma CMK no console do AWS KMS. Para obter ajuda, consulte Visualizar chaves.

Para permitir que os principais criem CMKs somente para assinatura e verificação ou somente para criptografia e descriptografia, use a chave de condição kms:CustomerMasterKeyUsage. Também é possível usar a chave de condição kms:CustomerMasterKeyUsage para permitir que os principais chamem operações de API para uma CMK com base em seu uso de chave. Por exemplo, você pode conceder permissão para desativar um CMK somente se seu uso de chave for SIGN_VERIFY.

Criptografia de envelope

Quando você criptografa seus dados, os dados são protegidos, mas é necessário proteger a chave de criptografia. Uma estratégia é para criptografá-la. Criptografia de envelope é a prática de criptografar dados de texto simples com uma chave de dados e criptografar a chave de dados em outra chave.

Você pode até mesmo criptografar a chave de criptografia de dados em outra chave de criptografia e criptografar essa chave de criptografia em outra chave de criptografia. Mas em algum momento deverá manter uma chave em texto simples para que possa descriptografar as chaves e seus dados. Essa chave de criptografia de chave de texto simples de nível superior é conhecida como chave mestra.


        Criptografia de envelope

O AWS KMS chaves mestras ajuda você a proteger suas armazenando e gerenciando-as com segurança. As chaves mestras armazenadas no AWS KMS, conhecidas como chaves mestras do cliente (CMKs), nunca deixam descriptografados os AWS KMS módulos de segurança de hardware validados pelo FIPS. Para usar um AWS KMS CMK, você deve chamar AWS KMS.


        Criptografia de envelope com várias chaves de criptografia de chave

A criptografia de envelope oferece vários benefícios:

  • Proteção de chaves de dados

    Quando você criptografa uma chave de dados, não precisa se preocupar em armazenar a chave de dados criptografada porque a chave de dados é inerentemente protegida pela criptografia. A chave de dados criptografada pode ser armazenada com segurança junto com os dados criptografados.

  • Criptografar os mesmos dados sob várias chaves mestras

    As operações de criptografia podem ser demoradas, especialmente quando os dados que estão sendo criptografados são objetos grandes. Em vez de recriptografar dados brutos várias vezes com diferentes chaves, você pode recriptografar somente as chaves de dados que protegem os dados brutos.

  • Combinação de pontos fortes de vários algoritmos

    Em geral, os algoritmos de chave simétrica são mais rápidos e geram textos cifrados menores do que os algoritmos de chave pública. No entanto, os algoritmos de chave pública fornecem separação inerente de funções e gerenciamento de chaves mais fácil. A criptografia de envelope permite associar os pontos fortes de cada estratégia.

Contexto de criptografia

Todas as AWS KMS operações criptográficas com CMKs simétricas aceitam um contexto de criptografia, um conjunto opcional de pares de chave–valor que pode conter mais informações contextuais sobre os dados. O AWS KMS usa o contexto de criptografia como dados autenticados adicionais (AAD) para oferecer suporte à criptografia autenticada.

Não é possível especificar um contexto de criptografia em uma operação criptográfica com uma CMK assimétrica. Os algoritmos de criptografia assimétrica padrão que o AWS KMS usa não oferecem suporte a um contexto de criptografia.

Ao incluir um contexto de criptografia em uma solicitação de criptografia, ele é vinculado de maneira criptográfica ao texto cifrado, de modo que o mesmo contexto de criptografia seja necessário para descriptografar (ou descriptografar e criptografar novamente) os dados. Se o contexto de criptografia fornecido na solicitação de descriptografia não é uma correspondência exata, com distinção entre maiúsculas e minúsculas, a solicitação de descriptografia falha. Somente a ordem dos pares de chave-valor no contexto de criptografia pode variar.

O contexto de criptografia não é secreto. Ele é exibido em texto simples em Logs do AWS CloudTrail, para você possa usá-lo para identificar e categorizar suas operações de criptografia.

Um contexto de criptografia pode consistir em quaisquer chaves e valores. No entanto, como ele não é secreto nem criptografado, seu contexto de criptografia não deve incluir informações confidenciais. Recomendamos que o seu contexto de criptografia descreva os dados que estão sendo criptografados ou descriptografados. Por exemplo, quando você criptografar um arquivo, poderá usar parte do caminho do arquivo como contexto de criptografia.

A chave e o valor em um par de contexto de criptografia devem ser strings literais simples. Não podem ser números inteiros, objetos, ou qualquer tipo que não esteja totalmente resolvido. Se você usar um tipo diferente, como um inteiro ou flutuante, o AWS KMS o interpretará como uma string.

"encryptionContext": { "department": "10103.0" }

A chave e o valor de contexto de criptografia podem incluir caracteres especiais, como sublinhados (_), traços (-), barras (/, \) e dois pontos (:).

Por exemplo, o Amazon Simple Storage Service (Amazon S3) usa um contexto de criptografia em que a chave é aws:s3:arn. O valor é o caminho do bucket do S3 para o arquivo que está sendo criptografado.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name" }

Você também pode usar o contexto de criptografia para refinar ou limitar o acesso ao chaves mestras do cliente (CMKs) na sua conta. Você pode usar o contexto de criptografia como uma restrição em concessões e como uma condição nas declarações de política.

Para saber como usar o contexto de criptografia para proteger a integridade dos dados criptografados, consulte a publicação Como proteger a integridade dos seus dados criptografados usando o AWS Key Management Service e o EncryptionContext no blog de segurança da AWS.

Mais informações sobre contexto de criptografia.

O contexto de criptografia é usado principalmente para verificar a integridade e a autenticidade. Mas também é possível usar o contexto de criptografia para controlar o acesso ao chaves mestras do cliente (CMKs) simétrico em políticas de chaves e políticas do IAM.

As chaves de condição kms:EncryptionContext: e kms:EncryptionContextKeys concedem (ou negam) uma permissão somente quando a solicitação inclui chaves de contexto de criptografia ou pares de chave–valor específicos.

Por exemplo, a declaração de política de chaves a seguir permite que a função do RoleForExampleApp use o CMK nas operações do Decrypt. Ela usa a chave da condição kms:EncryptionContext: para conceder essa permissão somente quando o contexto de criptografia na solicitação inclui um par de contexto de criptografia AppName:ExampleApp.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Para obter mais informações sobre essas chaves de condição de contexto de criptografia, consulte Usar condições de política com o AWS KMS.

Ao criar uma concessão, você pode incluir restrições de concessão que permitem acesso somente quando uma solicitação inclui um contexto de criptografia ou chaves de contexto de criptografia específicos. Para obter detalhes sobre as restrições de concessão EncryptionContextEquals e EncryptionContextSubset, consulte Restrições de concessão.

Para especificar uma restrição de contexto de criptografia em uma concessão para uma CMK simétrica, use o parâmetro Constraints na operação CreateGrant. Este exemplo usa a AWS Command Line Interface, mas é possível usar qualquer AWS SDK. A concessão que esse comando cria concede a permissão exampleUser para chamar a operaçãoDecrypt. Mas essa permissão entrará em vigor somente quando o contexto de criptografia na solicitação Decrypt incluir um par de contexto de criptografia "Department": "IT".

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

A concessão resultante é semelhante à seguinte. Observe que a permissão concedida a exampleUser entrará em vigor somente quando a solicitação Decrypt incluir o par de contexto de criptografia especificado na restrição de concessão. Para encontrar as concessões em um CMK, use a operação ListGrants.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }

Os serviços da AWS CMKs geralmente usam restrições de contexto de criptografia nas concessões que dão a eles permissão para usar o AWS em sua conta da . Por exemplo, o Amazon DynamoDB usa uma concessão como a seguinte para obter permissão para usar o AWS gerenciado pelo CMK para o em sua conta.DynamoDB A restrição de concessão EncryptionContextSubset nessa concessão colocará em vigor as permissões na concessão somente quando o contexto de criptografia na solicitação incluir os pares "subscriberID": "111122223333" e "tableName": "Services". Essa restrição de concessão significa que a concessão permite que o DynamoDB use o CMK especificado somente para uma tabela específica em sua conta da AWS.

Para obter essa saída, execute a operação ListGrants na AWS gerenciada pela CMK para o DynamoDB em sua conta.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }

O AWS KMS AWS CloudTrail usa o CMKs para registrar em log o contexto de criptografia, para que você possa determinar quais e dados foram acessados. A entrada de log mostra exatamente qual CMK foi usado para criptografar ou descriptografar dados específicos referenciados pelo contexto de criptografia na entrada de log.

Importante

Como o contexto de criptografia é registrado em log, ele não deve conter informações confidenciais.

Para simplificar o uso de qualquer contexto de criptografia quando você chama as operações Decrypt ou ReEncrypt, é possível armazenar o contexto de criptografia com os dados criptografados. Recomendamos que você armazene apenas o suficiente do contexto de criptografia para ajudar a criar o contexto de criptografia por completo quando você precisar dele para criptografia ou descriptografia.

Por exemplo, se o contexto de criptografia é o caminho para um arquivo, armazene apenas parte desse caminho com o conteúdo do arquivo criptografado. Quando você precisar do contexto de criptografia completo, reconstrua-o do fragmento armazenado. Se alguém tentar violar o arquivo, como renomear ou mover para um local diferente, o valor do contexto de criptografia será alterado e a solicitação de descriptografia falhará.

Políticas de chaves

Ao criar um CMK, você determina quem pode usar e gerenciar esse CMK. Essas permissões estão contidas em um documento chamado política de chaves. Você pode usar a política de chaves para adicionar, remover ou alterar permissões a qualquer momento para um CMK gerenciado pelo cliente. Mas você não pode editar a política de chaves para um AWS gerenciado pela CMK. Para obter mais informações, consulte Autenticação e controle de acesso para o AWS KMS.

Grants

Uma concessão é outro mecanismo para fornecer permissões. É uma alternativa às políticas de chaves. Como as concessões podem ser muito específicas, e são fáceis de criar e revogar, elas são frequentemente usadas para fornecer permissões temporárias ou permissões mais granulares.

Tokens de concessão

Quando você cria uma concessão, as permissões especificadas nela talvez não entrem em vigor imediatamente devido à consistência eventual. Se for necessário minimizar o atraso potencial, use o token de concessão recebido na resposta à sua solicitação CreateGrant. Você pode passar o token de concessão com algumas solicitações de API do AWS KMS para fazer as permissões da concessão entrarem em vigor imediatamente. As seguintes operações da API do AWS KMS aceitam tokens de concessão:

O token de concessão não é secreto. Um token de concessão contém informações sobre o destinatário da concessão e, portanto, quem pode usá-lo para fazer com que as permissões da concessão entrem em vigor com mais rapidez.

Auditoria de uso daCMK

Use AWS CloudTrail para auditar o uso da chave. O CloudTrail cria arquivos de log que contêm um histórico de chamadas de API da AWS e eventos relacionados da sua conta. Esses arquivos de log incluem todas as solicitações de API do AWS KMS feitas com o Console de Gerenciamento da AWS, o AWS SDKs e as ferramentas da linha de comando. Os arquivos de log também incluem solicitações para o AWS KMS que os serviços da AWS fazem em seu nome. Você pode usar esses arquivos de log para encontrar informações importantes, incluindo quando o CMK foi usado, a operação solicitada, a identidade do solicitante e o endereço IP de origem. Para obter mais informações, consulte Fazer login com o AWS CloudTrail e o AWS CloudTrail User Guide.

Infraestrutura de gerenciamento de chaves

Uma prática comum na criptografia é criptografar e descriptografar com um algoritmo revisado em pares e publicamente disponível, por exemplo, AES (Advanced Encryption Standard) e uma chave secreta. Um dos principais problemas na criptografia é a grande dificuldade de manter uma chave secreta. Geralmente esse é o trabalho de uma infraestrutura de gerenciamento de chaves (KMI). O AWS KMS opera a KMI para você. O AWS KMS cria e armazena com segurança o chaves mestras, chamado chaves mestras do cliente. Para obter mais informações sobre como o AWS KMS opera, consulte o Whitepaper Detalhes criptográficos do AWS Key Management Service.