AWS KMS chaveiros - AWS Criptografia de banco SDK

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á.

AWS KMS chaveiros

Nossa biblioteca de criptografia do lado do cliente foi renomeada para SDK de criptografia de AWS banco de dados. Este guia do desenvolvedor ainda fornece informações sobre o DynamoDB Encryption Client.

Um AWS KMS chaveiro usa criptografia simétrica ou RSA assimétrica AWS KMS keyspara gerar, criptografar e descriptografar chaves de dados. AWS Key Management Service (AWS KMS) protege suas chaves KMS e executa operações criptográficas dentro do limite do FIPS. Recomendamos que você use um AWS KMS chaveiro ou um chaveiro com propriedades de segurança semelhantes, sempre que possível.

Você também pode usar uma chave KMS multirregional simétrica em um chaveiro. AWS KMS Para obter mais detalhes e exemplos de uso de várias regiões AWS KMS keys, consulteUsando várias regiões AWS KMS keys. Para obter mais informações sobre chaves multirregionais, consulte Usar chaves multirregionais no Guia do Desenvolvedor do AWS Key Management Service .

AWS KMS os chaveiros podem incluir dois tipos de chaves de embrulho:

  • Chave geradora: gera uma chave de dados em texto simples e a criptografa. Um token de autenticação que criptografa dados deve ter uma chave geradora.

  • Chaves adicionais: criptografa a chave de dados em texto simples gerada pela chave do gerador. AWS KMS os chaveiros podem ter zero ou mais chaves adicionais.

Você deve ter uma chave geradora para criptografar registros. Quando um AWS KMS chaveiro tem apenas uma AWS KMS chave, essa chave é usada para gerar e criptografar a chave de dados.

Como todos os chaveiros, os AWS KMS chaveiros podem ser usados de forma independente ou em um chaveiro múltiplo com outros chaveiros do mesmo tipo ou de um tipo diferente.

Permissões necessárias para tokens de autenticação do AWS KMS

O SDK AWS de criptografia de banco de dados não exige um Conta da AWS e não depende de nenhum AWS service (Serviço da AWS). No entanto, para usar um AWS KMS chaveiro, você precisa de uma Conta da AWS e das seguintes permissões mínimas AWS KMS keys no seu chaveiro.

  • Para criptografar com um AWS KMS chaveiro, você precisa da GenerateDataKey permissão kms: na chave do gerador. Você precisa da permissão KMS:Encrypt em todas as chaves adicionais no chaveiro. AWS KMS

  • Para descriptografar com um AWS KMS chaveiro, você precisa da permissão kms:Decrypt em pelo menos uma chave no chaveiro. AWS KMS

  • Para criptografar com um chaveiro múltiplo composto por AWS KMS chaveiros, você precisa da GenerateDataKey permissão kms: na chave do gerador no chaveiro do gerador. Você precisa da permissão KMS:Encrypt em todas as outras chaves em todos os outros chaveiros. AWS KMS

  • Para criptografar com um AWS KMS chaveiro RSA assimétrico, você não precisa de kms: GenerateDataKey ou kms:Encrypt porque você deve especificar o material de chave pública que deseja usar para criptografia ao criar o chaveiro. Nenhuma AWS KMS chamada é feita ao criptografar com este chaveiro. Para descriptografar com um AWS KMS chaveiro RSA assimétrico, você precisa da permissão KMS:Decrypt.

Para obter informações detalhadas sobre permissões para AWS KMS keys, consulte Autenticação e controle de acesso no Guia do AWS Key Management Service desenvolvedor.

Identificação AWS KMS keys em um AWS KMS chaveiro

Um AWS KMS chaveiro pode incluir um ou mais AWS KMS keys. Para especificar um AWS KMS key em um AWS KMS chaveiro, use um identificador de AWS KMS chave compatível. Os identificadores de chave que você pode usar para identificar um AWS KMS key em um chaveiro variam de acordo com a operação e a implementação da linguagem. Para obter detalhes sobre os identificadores de chave de uma AWS KMS key, consulteIdentificadores de chave no Guia do Desenvolvedor do AWS Key Management Service .

Como prática recomendada, use o identificador de chave mais específico que seja prático para sua tarefa.

  • Para criptografar com um AWS KMS chaveiro, você pode usar um ID de chave, ARN de chave, nome de alias ou ARN de alias para criptografar dados.

    nota

    Se você especificar um nome de alias ou um ARN de alias para uma chave do KMS em um token de autenticação de criptografia, a operação de criptografia salvará o ARN de chave atualmente associado ao alias nos metadados da chave de dados criptografada. Isso não salva o alias. As alterações no alias não afetam a chave do KMS usada para descriptografar suas chaves de dados criptografadas.

  • Para decifrar com um AWS KMS chaveiro, você deve usar um ARN de chave para identificar. AWS KMS keys Para obter detalhes, consulte Seleção de chaves de encapsulamento.

  • Em um token de autenticação usado para criptografia e descriptografia, você deve usar um ARN de chave para identificar AWS KMS keys.

Ao descriptografar, o SDK de criptografia AWS de banco de dados pesquisa no AWS KMS chaveiro uma AWS KMS key que possa descriptografar uma das chaves de dados criptografadas. Especificamente, o SDK AWS de criptografia de banco de dados usa o seguinte padrão para cada chave de dados criptografada na descrição do material.

  • O SDK AWS de criptografia de banco de dados obtém o ARN da chave que criptografou AWS KMS key a chave de dados a partir dos metadados da descrição do material.

  • O SDK AWS de criptografia de banco de dados pesquisa no chaveiro de descriptografia por um ARN com AWS KMS key uma chave correspondente.

  • Se encontrar um ARN AWS KMS key com uma chave correspondente no chaveiro, o SDK de criptografia de AWS banco de dados solicitará o uso da chave KMS AWS KMS para descriptografar a chave de dados criptografada.

  • Caso contrário, ele passará para a próxima chave de dados criptografada, se houver.

Criando um AWS KMS chaveiro

Você pode configurar cada AWS KMS chaveiro com um único AWS KMS key ou vários AWS KMS keys iguais ou diferentes Contas da AWS e. Regiões da AWS O AWS KMS key deve ser uma chave de criptografia simétrica (SYMMETRIC_DEFAULT) ou uma chave RSA KMS assimétrica. Também é possível usar uma chave KMS multirregional criptografia simétrica. Você pode usar um ou mais AWS KMS chaveiros em um chaveiro múltiplo.

Você pode criar um AWS KMS chaveiro que criptografe e descriptografe dados, ou você pode criar AWS KMS chaveiros especificamente para criptografar ou descriptografar. Ao criar um AWS KMS chaveiro para criptografar dados, você deve especificar uma chave geradora, AWS KMS key que é usada para gerar uma chave de dados em texto simples e criptografá-la. A chave de dados não tem relação matemática com a chave KMS. Em seguida, se quiser, você pode especificar outras AWS KMS keys que criptografem a mesma chave de dados de texto sem formatação. Para descriptografar um campo criptografado protegido por esse chaveiro, o chaveiro de decodificação que você usa deve incluir pelo menos um dos definidos no chaveiro, ou não. AWS KMS keys AWS KMS keys(Um AWS KMS chaveiro sem AWS KMS keys é conhecido como chaveiro AWS KMS Discovery.)

Todas as chaves empacotadas em um token de autenticação de criptografia ou em vários tokens de autenticação devem ser capazes de criptografar a chave de dados. Se alguma chave de empacotamento falhar na criptografia, o método de criptografia falhará. Como resultado, o chamador deve ter as permissões necessárias para todas as chaves no token de autenticação. Se você usar um token de autenticação para criptografar dados, sozinho ou em um token de autenticação múltiplo, a operação de criptografia falhará.

Os exemplos a seguir usam o CreateAwsKmsMrkMultiKeyring método para criar um AWS KMS chaveiro com uma chave KMS de criptografia simétrica. O CreateAwsKmsMrkMultiKeyring método cria automaticamente o AWS KMS cliente e garante que o chaveiro manipule corretamente as chaves de região única e multirregião. Esses exemplos usam uma chave ARNs para identificar as chaves KMS. Para obter detalhes, consulte Identificação AWS KMS keys em um AWS KMS chaveiro

Java
final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput keyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyArn) .build(); final IKeyring kmsKeyring = matProv.CreateAwsKmsMrkMultiKeyring(keyringInput);
C# / .NET
var matProv = new MaterialProviders(new MaterialProvidersConfig()); var createAwsKmsMrkMultiKeyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = kmsKeyArn }; var awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);

Os exemplos a seguir usam o CreateAwsKmsRsaKeyring método para criar um AWS KMS chaveiro com uma chave RSA KMS assimétrica. Para criar um AWS KMS chaveiro RSA assimétrico, forneça os seguintes valores.

  • kmsClient: criar um novo AWS KMS cliente

  • kmsKeyID: o ARN da chave que identifica sua chave RSA KMS assimétrica

  • publicKey: a ByteBuffer de um arquivo PEM codificado em UTF-8 que representa a chave pública da chave para a qual você passou kmsKeyID

  • encryptionAlgorithm: o algoritmo de criptografia deve ser RSAES_OAEP_SHA_256 ou RSAES_OAEP_SHA_1

Java
final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsRsaKeyringInput createAwsKmsRsaKeyringInput = CreateAwsKmsRsaKeyringInput.builder() .kmsClient(KmsClient.create()) .kmsKeyId(rsaKMSKeyArn) .publicKey(publicKey) .encryptionAlgorithm(EncryptionAlgorithmSpec.RSAES_OAEP_SHA_256) .build(); IKeyring awsKmsRsaKeyring = matProv.CreateAwsKmsRsaKeyring(createAwsKmsRsaKeyringInput);
C# / .NET
var matProv = new MaterialProviders(new MaterialProvidersConfig()); var createAwsKmsRsaKeyringInput = new CreateAwsKmsRsaKeyringInput { KmsClient = new AmazonKeyManagementServiceClient(), KmsKeyId = rsaKMSKeyArn, PublicKey = publicKey, EncryptionAlgorithm = EncryptionAlgorithmSpec.RSAES_OAEP_SHA_256 }; IKeyring awsKmsRsaKeyring = matProv.CreateAwsKmsRsaKeyring(createAwsKmsRsaKeyringInput);

Usando várias regiões AWS KMS keys

Você pode usar a multirregião AWS KMS keys como chaves de encapsulamento no SDK de criptografia de AWS banco de dados. Se você criptografar com uma chave multirregional em uma Região da AWS, poderá descriptografar usando uma chave multirregional relacionada em outra. Região da AWS

As chaves KMS multirregionais são um conjunto de AWS KMS keys chaves diferentes Regiões da AWS que têm o mesmo material de chave e ID de chave. É possível usar essas chaves relacionadas como se fossem a mesma chave em regiões diferentes. As chaves multirregionais oferecem suporte a cenários comuns de recuperação de desastres e backup que exigem criptografia em uma região e descriptografia em uma região diferente sem fazer uma chamada entre regiões para. AWS KMS Para obter mais informações sobre chaves multirregionais, consulte Usar chaves multirregionais no Guia do Desenvolvedor do AWS Key Management Service .

Para oferecer suporte a chaves multirregionais, o SDK de criptografia AWS de banco de dados inclui chaveiros com reconhecimento de AWS KMS várias regiões. O método CreateAwsKmsMrkMultiKeyring oferece suporte a chaves de região única e de várias regiões.

  • Para chaves de região única, o símbolo compatível com várias regiões se comporta exatamente como o token de autenticação do AWS KMS de região única. Ele tenta descriptografar o texto cifrado somente com a chave de região única que criptografou os dados. Para simplificar sua experiência com o AWS KMS chaveiro, recomendamos usar o CreateAwsKmsMrkMultiKeyring método sempre que você usar uma chave KMS de criptografia simétrica.

  • Para chaves multirregionais, o símbolo com reconhecimento de várias regiões tenta descriptografar o texto cifrado com a mesma chave multirregional que criptografou os dados ou com a chave multirregional relacionada na região especificada.

Nos tokens de autenticação com reconhecimento de várias regiões que usam mais de uma chave KMS, é possível especificar várias chaves de região única e de várias regiões. No entanto, é possível especificar somente uma chave de cada conjunto de chaves de várias regiões relacionadas. Se você especificar mais de um identificador de chave com o mesmo ID de chave, a chamada do construtor falhará.

Os exemplos a seguir criam um AWS KMS chaveiro com uma chave KMS multirregional. Os exemplos especificam uma chave multirregional como chave geradora e uma chave de região única como chave secundária.

Java
final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateAwsKmsMrkMultiKeyringInput createAwsKmsMrkMultiKeyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(multiRegionKeyArn) .kmsKeyIds(Collections.singletonList(kmsKeyArn)) .build(); IKeyring awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);
C# / .NET
var matProv = new MaterialProviders(new MaterialProvidersConfig()); var createAwsKmsMrkMultiKeyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = multiRegionKeyArn, KmsKeyIds = new List<String> { kmsKeyArn } }; var awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);

Ao usar AWS KMS chaveiros multirregionais, você pode descriptografar texto cifrado no modo estrito ou no modo de descoberta. Para descriptografar o texto cifrado no modo estrito, instancie o símbolo compatível com várias regiões com o ARN da chave multirregional relacionada na região em que você está descriptografando o texto cifrado. Se você especificar o ARN da chave de uma chave multirregional relacionada em uma região diferente (por exemplo, a região em que o registro foi criptografado), o símbolo compatível com várias regiões fará uma chamada entre regiões para essa AWS KMS key.

Ao descriptografar no modo estrito, o símbolo com reconhecimento de várias regiões requer um ARN de chave. Ele aceita somente um ARN de chave de cada conjunto de chaves de várias regiões relacionadas.

Também é possível descriptografar no modo de descoberta com chaves do AWS KMS multirregionais. Ao descriptografar no modo de descoberta, você não especifica nenhuma AWS KMS keys. (Para obter informações sobre chaveiros de AWS KMS descoberta de uma única região, consulteUsando um chaveiro AWS KMS Discovery.)

Se você criptografou com uma chave multirregional, o símbolo compatível com várias regiões no modo de descoberta tentará descriptografar usando uma chave multirregional relacionada na região local. Se não existir nenhuma, a chamada falhará. No modo de descoberta, o SDK AWS de criptografia de banco de dados não tentará fazer uma chamada entre regiões para a chave multirregional usada para criptografia.

Usando um chaveiro AWS KMS Discovery

Ao descriptografar, é uma prática recomendada especificar as chaves de encapsulamento que o SDK de criptografia de AWS banco de dados pode usar. Para seguir essa prática recomendada, use um chaveiro de AWS KMS decodificação que limite as chaves de AWS KMS encapsulamento às que você especificar. No entanto, você também pode criar um chaveiro de AWS KMS descoberta, ou seja, um AWS KMS chaveiro que não especifique nenhuma chave de agrupamento.

O SDK AWS de criptografia de banco de dados fornece um chaveiro de AWS KMS descoberta padrão e um chaveiro de descoberta para AWS KMS chaves multirregionais. Para obter informações sobre como usar chaves de várias regiões com o SDK de criptografia de banco de dados da AWS , consulte Usando várias regiões AWS KMS keys.

Como ele não especifica nenhuma chave de empacotamento, um token de autenticação de descoberta não pode criptografar dados. Se você usar um token de autenticação para criptografar dados, sozinho ou em um token de autenticação múltiplo, a operação de criptografia falhará.

Ao descriptografar, um chaveiro de descoberta permite que o SDK de criptografia AWS de banco de dados solicite AWS KMS a decodificação de qualquer chave de dados criptografada usando AWS KMS key aquela que a criptografou, independentemente de quem a possui ou tem acesso a ela. AWS KMS key A chamada será bem-sucedida somente quando o chamador tiver a permissão kms:Decrypt na AWS KMS key.

Importante

Se você incluir um chaveiro de AWS KMS descoberta em um chaveiro de decodificação múltipla, o chaveiro de descoberta substituirá todas as restrições de chave KMS especificadas por outros chaveiros no chaveiro múltiplo. O token de autenticação múltiplo se comporta como o token de autenticação menos restritivo. Se você usar um token de autenticação de descoberta para criptografar dados, sozinho ou em um token de autenticação múltiplo, a operação de criptografia falhará

O SDK AWS de criptografia de banco de dados fornece um chaveiro de AWS KMS descoberta para sua conveniência. No entanto, recomendamos que você use um token de autenticação mais limitado sempre que possível pelas razões a seguir.

  • Autenticidade — Um chaveiro de AWS KMS descoberta pode usar qualquer AWS KMS key chave usada para criptografar uma chave de dados na descrição do material, desde que o chamador tenha permissão para usá-la para descriptografar. AWS KMS key Isso pode não ser o AWS KMS key que o chamador pretende usar. Por exemplo, uma das chaves de dados criptografadas pode ter sido criptografada de forma menos segura AWS KMS key que qualquer pessoa possa usar.

  • Latência e desempenho — Um chaveiro de AWS KMS descoberta pode ser visivelmente mais lento do que outros chaveiros porque o SDK de criptografia de AWS banco de dados tenta descriptografar todas as chaves de dados criptografadas, incluindo aquelas criptografadas por AWS KMS keys outras regiões Contas da AWS e AWS KMS keys que o chamador não tem permissão para usar para descriptografia.

Se você usa um chaveiro de descoberta, recomendamos que você use um filtro de descoberta para limitar as chaves KMS que podem ser usadas para aquelas em partições Contas da AWS e partições especificadas. Para obter ajuda para encontrar seu ID de conta e partição, consulte Seus Conta da AWS identificadores e formato ARN no. Referência geral da AWS

Os exemplos de código a seguir instanciam um chaveiro de AWS KMS descoberta com um filtro de descoberta que limita as chaves KMS que o SDK de criptografia AWS de banco de dados pode usar às da partição e da aws conta de exemplo. 111122223333

Antes de usar esse código, substitua os valores de exemplo Conta da AWS e de partição por valores válidos para sua partição Conta da AWS e. Se as chaves do KMS estiverem em regiões da China, use o valor de partição aws-cn. Se as chaves do KMS estiverem em AWS GovCloud (US) Regions, use o valor de partição aws-us-gov. Para todas as outras Regiões da AWS, use o valor de partição aws.

Java
// Create discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("aws") .accountIds(111122223333) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);
C# / .NET
// Create discovery filter var discoveryFilter = new DiscoveryFilter { Partition = "aws", AccountIds = 111122223333 }; // Create the discovery keyring var createAwsKmsMrkDiscoveryMultiKeyringInput = new CreateAwsKmsMrkDiscoveryMultiKeyringInput { DiscoveryFilter = discoveryFilter }; var decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);

Usando um chaveiro de descoberta AWS KMS regional

Um token de autenticação de descoberta regional AWS KMS é um token de autenticação que não especifica os ARNs das chaves do KMS. Em vez disso, ele permite que o SDK AWS de criptografia de banco de dados seja descriptografado usando somente as chaves KMS em particular. Regiões da AWS

Ao descriptografar com um chaveiro de descoberta AWS KMS regional, o SDK de criptografia de AWS banco de dados descriptografa qualquer chave de dados criptografada que tenha sido criptografada de acordo com um no especificado. AWS KMS key Região da AWS Para ter sucesso, o chamador deve ter kms:Decrypt permissão em pelo menos um dos AWS KMS keys itens especificados Região da AWS que criptografou uma chave de dados.

Como outros tokens de autenticação de descoberta, o token de autenticação de descoberta regional não tem efeito na criptografia. Ele funciona somente ao descriptografar campos criptografados. Se você usar um token de autenticação de descoberta regional em um token de autenticação múltiplo usado para criptografar e descriptografar, ele só será efetivo durante a descriptografia. Se você usar um token de autenticação de descoberta multirregional para criptografar dados, sozinho ou em um token de autenticação com vários tokens de autenticação, a operação de criptografia falhará.

Importante

Se você incluir um chaveiro de descoberta AWS KMS regional em um chaveiro de descriptografia múltiplo, o chaveiro de descoberta regional substituirá todas as restrições de chave KMS especificadas por outros chaveiros no chaveiro múltiplo. O token de autenticação múltiplo se comporta como o token de autenticação menos restritivo. Um token de autenticação de descoberta do AWS KMS não tem efeito na criptografia quando usado sozinho ou em um multitoken de autenticação.

O chaveiro de descoberta regional no SDK AWS de criptografia de banco de dados tenta descriptografar somente com chaves KMS na região especificada. Ao usar um chaveiro de descoberta, você configura a região no AWS KMS cliente. Essas implementações do SDK de criptografia de AWS banco de dados não filtram as chaves do KMS por região, mas AWS KMS falharão na solicitação de descriptografia das chaves do KMS fora da região especificada.

Se você usa um chaveiro de descoberta, recomendamos que você use um filtro de descoberta para limitar as chaves KMS usadas na descriptografia àquelas em partições e partições especificadas. Contas da AWS

Por exemplo, o código a seguir cria um chaveiro de descoberta AWS KMS regional com um filtro de descoberta. Esse chaveiro limita o SDK AWS de criptografia de banco de dados às chaves KMS na conta 111122223333 na região Oeste dos EUA (Oregon) (us-west-2).

Java
// Create the discovery filter DiscoveryFilter discoveryFilter = DiscoveryFilter.builder() .partition("aws") .accountIds(111122223333) .build(); // Create the discovery keyring CreateAwsKmsMrkDiscoveryMultiKeyringInput createAwsKmsMrkDiscoveryMultiKeyringInput = CreateAwsKmsMrkDiscoveryMultiKeyringInput.builder() .discoveryFilter(discoveryFilter) .regions("us-west-2") .build(); IKeyring decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);
C# / .NET
// Create discovery filter var discoveryFilter = new DiscoveryFilter { Partition = "aws", AccountIds = 111122223333 }; // Create the discovery keyring var createAwsKmsMrkDiscoveryMultiKeyringInput = new CreateAwsKmsMrkDiscoveryMultiKeyringInput { DiscoveryFilter = discoveryFilter, Regions = us-west-2 }; var decryptKeyring = matProv.CreateAwsKmsMrkDiscoveryMultiKeyring(createAwsKmsMrkDiscoveryMultiKeyringInput);