View a markdown version of this page

Configuração de chave KMS personalizada para serviço de retenção de dados - AWS Wickr

Este guia documenta o novo console de administração do AWS Wickr, lançado em 13 de março de 2025. Para obter a documentação sobre a versão clássica do console de administração do AWS Wickr, consulte o Classic Administration Guide.

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

Configuração de chave KMS personalizada para serviço de retenção de dados

Para usar suas próprias chaves KMS com o serviço de retenção de dados, crie chaves com as seguintes configurações antes de lançar o produto:

Chave de retenção
  • Tipo de chave: Simétrico () SYMMETRIC_DEFAULT

  • Uso da chave: criptografar e descriptografar

  • Rotação de chaves: recomendado para ativar

Chave de recuperação de senha
  • Tipo de chave: Assimétrico () ECC_NIST_P384

  • Uso da chave: acordo chave

  • Rotação de chaves: não suportada para teclas assimétricas

Configuração personalizada da política de chaves KMS

  1. Crie suas chaves KMS com as configurações necessárias acima.

  2. Copie o ID da chave de cada chave do console KMS.

  3. Inicie o produto de retenção de dados no Service Catalog, inserindo as IDs de chave PasswordRecoveryKeyId nos campos KmsKeyId e.

  4. Depois que a pilha for concluída, navegue até a guia Saídas.

  5. Copie os valores de DRSCustomerCrossAccountRoleArn DecryptionLambdaRoleArn e.

  6. Abra o console KMS e selecione sua chave de retenção personalizada.

  7. Na seção Key Policy (Política de chaves), selecione Switch to policy view (Alternar para a visualização da política).

  8. Escolha Editar.

  9. Adicione as seguintes declarações à "Statement" matriz da sua política de chaves, substituindo os ARNs do espaço reservado pelos valores da etapa 5.

  10. Escolha Salvar alterações.

  11. Repita as etapas 6 a 10 para a chave de recuperação de senha usando as instruções de recuperação de senha abaixo.

Chave de retenção — declarações a serem adicionadas

{ "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DecryptLambdaDecrypt", "Effect": "Allow", "Principal": { "AWS": "{DecryptionLambdaRoleArn}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } }

A finalidade de cada declaração pode ser encontrada na Criptografia inativa seção Configurando permissões para usar uma chave KMS gerenciada pelo cliente.

Chave de recuperação de senha — Declarações a serem adicionadas

{ "Sid": "EnclaveDeriveSharedSecret", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" } } }, { "Sid": "CustomerGetPublicKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": [ "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*" }

Objetivo de cada declaração:

EnclaveDeriveSharedSecret

  • kms: DeriveSharedSecret — Invocado pelo Nitro Enclave para realizar o acordo de chave ECDH usando a chave privada da chave de recuperação de senha. Isso deriva de um segredo compartilhado que é usado para descriptografar sua senha durante o fluxo de trabalho de migração. Só é permitido quando o enclave fornece um documento de atestado válido do Nitro Enclave (PCR0/1/2 condições), garantindo que o acordo chave não ocorra fora do enclave.

CustomerGetPublicKey

  • kms: GetPublicKey — Permite a recuperação da chave pública ECC P-384 da chave de recuperação de senha. Isso é usado pelo script de coleta de senhas executado na máquina do cliente para realizar a criptografia ECDH local da senha.

  • kms: DescribeKey — Permite a recuperação dos metadados principais (especificação da chave, uso, status) para validação.

Exemplo — Chave de retenção

Antes:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." } ] }

Depois:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." }, { "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DecryptLambdaDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/{DecryptionLambdaRoleName}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } } ] }