Trabalhar com chaves - AWS Key Management Service

Trabalhar com chaves

Os exemplos neste tópico usam a API do AWS KMS para criar, visualizar, habilitar e desabilitar AWS KMS AWS KMS keys e para gerar chaves de dados.

Criar uma chave do KMS

Para criar uma AWS KMS key (chave do KMS), use a operação CreateKey. Os exemplos nesta seção criam uma chave do KMS de criptografia simétrica. O parâmetro Description usado nesses exemplos é opcional.

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Para obter ajuda com a criação de chaves do KMS no console do AWS KMS, consulte Criar chaves.

Java

Para obter detalhes, consulte o Método createKey, na Referência de APIs do AWS SDK for Java.

// Create a KMS key // String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest().withDescription(desc); CreateKeyResult result = kmsClient.createKey(req);
C#

Para obter detalhes, consulte o Método CreateKey no AWS SDK for .NET.

// Create a KMS key // String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest() { Description = desc }; CreateKeyResponse response = kmsClient.CreateKey(req);
Python

Para obter detalhes, consulte o Método create_key no AWS SDK for Python (Boto3).

# Create a KMS key desc = 'Key for protecting critical data' response = kms_client.create_key( Description=desc )
Ruby

Para obter detalhes, consulte o método de instância create_key no AWS SDK for Ruby.

# Create a KMS key desc = 'Key for protecting critical data' response = kmsClient.create_key({ description: desc })
PHP

Para obter detalhes, consulte o Método CreateKey no AWS SDK for PHP.

// Create a KMS key // $desc = "Key for protecting critical data"; $result = $KmsClient->createKey([ 'Description' => $desc ]);
Node.js

Para obter mais detalhes, consulte a propriedade createKey, no AWSSDK for JavaScript in Node.js.

// Create a KMS key // const Description = 'Key for protecting critical data'; kmsClient.createKey({ Description }, (err, data) => { ... });
PowerShell

Para criar uma chave do KMS no PowerShell, use o cmdlet New-KmsKey.

# Create a KMS key $desc = 'Key for protecting critical data' New-KmsKey -Description $desc

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.

Gerar uma chave de dados

Para gerar uma chave de dados simétrica, use a operação GenerateDataKey. Essa operação retorna uma chave de dados de texto simples e uma cópia dessa chave de dados criptografada com a chave do KMS de criptografia simétrica que você especifica. É necessário especificar um KeySpec ou NumberOfBytes (mas não ambos) em cada comando.

Para obter ajuda para usar a chave de dados para criptografar dados, consulte o AWS Encryption SDK. Você também pode usar a chave de dados em operações de Hash-based message authentication code (HMAC – Código de autenticação de mensagem por hash).

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Java

Para obter detalhes, consulte o Método generateDataKey, na Referência de APIs do AWS SDK for Java.

// Generate a data key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest(); dataKeyRequest.setKeyId(keyId); dataKeyRequest.setKeySpec("AES_256"); GenerateDataKeyResult dataKeyResult = kmsClient.generateDataKey(dataKeyRequest); ByteBuffer plaintextKey = dataKeyResult.getPlaintext(); ByteBuffer encryptedKey = dataKeyResult.getCiphertextBlob();
C#

Para obter detalhes, consulte o Método GenerateDataKey no AWS SDK for .NET.

// Generate a data key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest() { KeyId = keyId, KeySpec = DataKeySpec.AES_256 }; GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest); MemoryStream plaintextKey = dataKeyResponse.Plaintext; MemoryStream encryptedKey = dataKeyResponse.CiphertextBlob;
Python

Para obter detalhes, consulte o Método generate_data_key no AWS SDK for Python (Boto3).

# Generate a data key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.generate_data_key( KeyId=key_id, KeySpec='AES_256' ) plaintext_key = response['Plaintext'] encrypted_key = response['CiphertextBlob']
Ruby

Para obter detalhes, consulte o método de instância generate_data_key no AWS SDK for Ruby.

# Generate a data key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.generate_data_key({ key_id: key_id, key_spec: 'AES_256' }) plaintext_key = response.plaintext encrypted_key = response.ciphertext_blob
PHP

Para obter detalhes, consulte o Método GenerateDataKey no AWS SDK for PHP.

// Generate a data key // // Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $keySpec = 'AES_256'; $result = $KmsClient->generateDataKey([ 'KeyId' => $keyId, 'KeySpec' => $keySpec, ]); $plaintextKey = $result['Plaintext']; $encryptedKey = $result['CiphertextBlob'];
Node.js

Para obter mais detalhes, consulte a propriedade generateDataKey, no AWSSDK for JavaScript in Node.js.

// Generate a data key // // Replace the following example key ARN with any valid key identfier const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; const KeySpec = 'AES_256'; kmsClient.generateDataKey({ KeyId, KeySpec }, (err, data) => { if (err) console.log(err, err.stack); else { const { CiphertextBlob, Plaintext } = data; ... } });
PowerShell

Para gerar uma chave de dados simétrica, use o cmdlet New-KMSDataKey.

Na saída, a chave de texto simples (na propriedade Plaintext) e a chave criptografada (na propriedade CiphertextBlob) são objetos MemoryStream. Para convertê-los em strings, use os métodos da classe MemoryStream ou um cmdlet ou uma função que converta objetos MemoryStream em strings, como as funções ConvertFrom-MemoryStream e ConvertFrom-Base64 no módulo Convert.

# Generate a data key # Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' $keySpec = 'AES_256' $response = New-KmsDataKey -KeyId $keyId -KeySpec $keySpec $plaintextKey = $response.Plaintext $encryptedKey = $response.CiphertextBlob

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.

Como visualizar um AWS KMS key

Para obter informações detalhadas sobre uma AWS KMS key, incluindo o ARN e o estado da chave da chave do KMS, use a operação DescribeKey.

DescribeKey não recebe aliases. Para a lista de alias, use a operação ListAliases. Para ver exemplos, consulte Trabalhar com aliases.

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Para obter ajuda com a visualização de chaves do KMS no console do AWS KMS, consulte Visualizar chaves.

Java

Para obter detalhes, consulte o Método describeKey, na Referência de APIs do AWS SDK for Java.

// Describe a KMS key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DescribeKeyRequest req = new DescribeKeyRequest().withKeyId(keyId); DescribeKeyResult result = kmsClient.describeKey(req);
C#

Para obter detalhes, consulte o Método DescribeKey no AWS SDK for .NET.

// Describe a KMS key // // Replace the following example key ARN with any valid key identfier String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DescribeKeyRequest describeKeyRequest = new DescribeKeyRequest() { KeyId = keyId }; DescribeKeyResponse describeKeyResponse = kmsClient.DescribeKey(describeKeyRequest);
Python

Para obter detalhes, consulte o Método describe_key no AWS SDK for Python (Boto3).

# Describe a KMS key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.describe_key( KeyId=key_id )
Ruby

Para obter detalhes, consulte o método de instância describe_key no AWS SDK for Ruby.

# Describe a KMS key # Replace the following example key ARN with any valid key identfier key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.describe_key({ key_id: key_id })
PHP

Para obter detalhes, consulte o Método DescribeKey no AWS SDK for PHP.

// Describe a KMS key // // Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $result = $KmsClient->describeKey([ 'KeyId' => $keyId, ]);
Node.js

Para obter mais detalhes, consulte a propriedade describeKey, no AWSSDK for JavaScript in Node.js.

// Describe a KMS key // // Replace the following example key ARN with any valid key identfier const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; kmsClient.describeKey({ KeyId }, (err, data) => { ... });
PowerShell

Para obter informações detalhadas sobre uma chave do KMS, use o cmdlet Get-KmsKey.

# Describe a KMS key # Replace the following example key ARN with any valid key identfier $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' Get-KmsKey -KeyId $keyId

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.

Obter IDs e ARNs de chaves do KMS

Para obter os IDs de chaves e os ARNs de chaves das AWS KMS keys, use a operação ListKeys. Esses exemplos usam o parâmetro Limit opcional, que define o número máximo de chaves do KMS retornadas em cada chamada. Para obter ajuda para identificar uma chave do KMS em uma operação do AWS KMS, consulte Identificadores de chave (KeyId).

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Para obter ajuda sobre como localizar IDs e ARNs de chaves no console do AWS KMS, consulte Como encontrar o ID e o ARN da chave.

Java

Para obter detalhes, consulte o Método listKeys, na Referência de APIs do AWS SDK for Java.

// List KMS keys in this account // Integer limit = 10; ListKeysRequest req = new ListKeysRequest().withLimit(limit); ListKeysResult result = kmsClient.listKeys(req);
C#

Para obter detalhes, consulte o Método ListKeys no AWS SDK for .NET.

// List KMS keys in this account // int limit = 10; ListKeysRequest listKeysRequest = new ListKeysRequest() { Limit = limit }; ListKeysResponse listKeysResponse = kmsClient.ListKeys(listKeysRequest);
Python

Para obter detalhes, consulte o Método list_keys no AWS SDK for Python (Boto3).

# List KMS keys in this account response = kms_client.list_keys( Limit=10 )
Ruby

Para obter detalhes, consulte o método de instância list_keys no AWS SDK for Ruby.

# List KMS keys in this account response = kmsClient.list_keys({ limit: 10 })
PHP

Para obter detalhes, consulte o Método ListKeys no AWS SDK for PHP.

// List KMS keys in this account // $limit = 10; $result = $KmsClient->listKeys([ 'Limit' => $limit, ]);
Node.js

Para obter mais detalhes, consulte a propriedade listKeys, no AWSSDK for JavaScript in Node.js.

// List KMS keys in this account // const Limit = 10; kmsClient.listKeys({ Limit }, (err, data) => { ... });
PowerShell

Para obter o ID de chave e o ARN de chave de todas as chaves do KMS na conta e região, use o cmdlet Get-KmsKeyList.

Para limitar o número de objetos de saída, este exemplo usa o cmdlet Select-Object em vez do parâmetro Limit, que está defasado nos cmdlets da lista. Para obter ajuda com a saída da paginação no AWS Tools for PowerShell, consulte Paginação de saída com o AWS Tools for PowerShell.

# List KMS keys in this account $limit = 10 Get-KmsKeyList | Select-Object -First $limit

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.

Habilitar o AWS KMS keys

Para habilitar uma AWS KMS key desabilitada, use a operação EnableKey.

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Para obter ajuda sobre como habilitar e desabilitar chaves do KMS no console do AWS KMS, consulte Habilitar e desabilitar chaves.

Java

Para obter detalhes sobre a implementação de Java, consulte o Método enableKey, na Referência de APIs do AWS SDK for Java.

// Enable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; EnableKeyRequest req = new EnableKeyRequest().withKeyId(keyId); kmsClient.enableKey(req);
C#

Para detalhes, consulte o Método EnableKey no AWS SDK for .NET.

// Enable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; EnableKeyRequest enableKeyRequest = new EnableKeyRequest() { KeyId = keyId }; kmsClient.EnableKey(enableKeyRequest);
Python

Para obter detalhes, consulte o Método enable_key no AWS SDK for Python (Boto3).

# Enable a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.enable_key( KeyId=key_id )
Ruby

Para obter detalhes, consulte o método de instância enable_key no AWS SDK for Ruby.

# Enable a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.enable_key({ key_id: key_id })
PHP

Para detalhes, consulte o Método EnableKey no AWS SDK for PHP.

// Enable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $result = $KmsClient->enableKey([ 'KeyId' => $keyId, ]);
Node.js

Para obter mais detalhes, consulte a propriedade enableKey, no AWSSDK for JavaScript in Node.js.

// Enable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; kmsClient.enableKey({ KeyId }, (err, data) => { ... });
PowerShell

Para habilitar uma chave do KMS, use o cmdlet Enable-KmsKey.

# Enable a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' Enable-KmsKey -KeyId $keyId

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.

Desabilitar as AWS KMS key

Para desabilitar uma chave do KMS, use a operação DisableKey. A desabilitação de uma chave do KMS impede que ela seja usada em operações de criptografia.

Em linguagens que exigem um objeto cliente, esses exemplos usam o objeto cliente do AWS KMS criado em Criar um cliente.

Para obter ajuda sobre como habilitar e desabilitar chaves do KMS no console do AWS KMS, consulte Habilitar e desabilitar chaves.

Java

Para obter detalhes, consulte o Método disableKey, na Referência de APIs do AWS SDK for Java.

// Disable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DisableKeyRequest req = new DisableKeyRequest().withKeyId(keyId); kmsClient.disableKey(req);
C#

Para obter detalhes, consulte o Método DisableKey no AWS SDK for .NET.

// Disable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN String keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; DisableKeyRequest disableKeyRequest = new DisableKeyRequest() { KeyId = keyId }; kmsClient.DisableKey(disableKeyRequest);
Python

Para obter detalhes, consulte o Método disable_key no AWS SDK for Python (Boto3).

# Disable a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kms_client.disable_key( KeyId=key_id )
Ruby

Para obter detalhes, consulte o método de instância disable_key no AWS SDK for Ruby.

# Disable a KMS key # Replace the following example key ARN with a valid key ID or key ARN key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' response = kmsClient.disable_key({ key_id: key_id })
PHP

Para obter detalhes, consulte o Método DisableKey no AWS SDK for PHP.

// Disable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; $result = $KmsClient->disableKey([ 'KeyId' => $keyId, ]);
Node.js

Para obter mais detalhes, consulte a propriedade disableKey, no AWS SDK for JavaScript in Node.js.

// Disable a KMS key // // Replace the following example key ARN with a valid key ID or key ARN const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'; kmsClient.disableKey({ KeyId }, (err, data) => { ... });
PowerShell

Para desabilitar uma chave do KMS, use o cmdlet Disable-KmsKey.

# Disable a KMS key # Replace the following example key ARN with a valid key ID or key ARN $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab' Disable-KmsKey -KeyId $keyId

Para usar os cmdlets do PowerShell AWS KMS, instale o módulo AWS.Tools.KeyManagementService. Para obter mais informações, consulte o Manual do usuário do AWS Tools for Windows PowerShell.