Quero compartilhar meu segredo do AWS Secrets Manager com outra conta da AWS.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Você deve criar e especificar uma chave personalizada do AWS Key Management Service (AWS KMS) para compartilhar segredos entre contas. Não é possível usar a chave KMS padrão ao compartilhar segredos entre contas. A chave padrão do KMS é criada, gerenciada e usada em seu nome por um serviço da AWS executado no AWS KMS. Ele é exclusivo da sua conta e da região da AWS, e só é possível usá-lo com o serviço que o criou. Para obter mais informações, consulte chaves do AWS KMS.
Configure a conta que possui o segredo
Se você não tiver um segredo, crie um segredo do Secrets Manager. Certifique-se de especificar o nome do recurso da Amazon (ARN) no parâmetro de ID da chave KMS para o segredo.
Se você tiver um segredo existente que usa um alias, modifique o segredo. Certifique-se de especificar o ARN da chave KMS no parâmetro ID da chave KMS para o segredo. Você deve usar o ARN completo da chave KMS para acessar um segredo de outra conta.
Importante: nas políticas a seguir, substitua o ARN Principal pelo ARN da sua conta de destino, o SecretARN pelo ARN da sua conta de origem e o ARN da chave KMS pelo ARN da sua conta de origem. Também substitua YOUR-REGION pela sua região.
Adicione a seguinte declaração à política de chaves e, em seguida, substitua os valores de exemplo pelos seus valores:
{ "Sid": "AllowUseOfTheKey",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:user/username"
},
"Action": [
"kms:Decrypt"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.YOUR-REGION.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:YOUR-REGION:111122223333:secret:secretname??????"
}
}
}
Em seguida, anexe uma política baseada em recursos para conceder ao perfil do AWS Identity and Access Management (AWS IAM) permissões para acessar o segredo.
Exemplo de política secreta baseada em recursos:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:user/username"
},
"Action": "secretsmanager:GetSecretValue",
"Resource": "*"
}
]
}
Configure as permissões na outra conta que precisa do segredo
O usuário do IAM precisa ter a permissão secretsmanager:GetSecretValue para recuperar o segredo. Além disso, o usuário do IAM precisa ter permissões de descriptografia quando o segredo é criptografado com uma chave KMS.
Anexe as permissões secretsmanager:GetSecretValue à identidade do IAM que você deseja recuperar o segredo.
Exemplo de política:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGetSecretValue",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:your-region:777788889999:secret:secretname-??????"
]
},
{
"Sid": "AllowKMSDecrypt",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:YOUR-REGION:777788889999:key/secretnameKMS_id"
]
}
]
}
Em seguida, execute o seguinte comando get-secret-value para recuperar o segredo como o valor secreto de origem:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:YOUR-REGION:777788889999:secret:secretname --version-stage AWSCURRENT --region YOUR-REGION
Informações relacionadas
Acessar os segredos do AWS Secrets Manager de outra conta
How to access secrets across AWS accounts by attaching resource-based policies (Como acessar segredos em todas as contas da AWS anexando políticas baseadas em recursos)
Como resolvo erros de acesso à chave do AWS KMS depois de tentar recuperar um segredo criptografado do Secrets Manager?