Deseo compartir mi secreto de AWS Secrets Manager con otra cuenta de AWS.
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Debes crear y especificar una clave personalizada de AWS Key Management Service (AWS KMS) para compartir secretos entre cuentas. No puedes usar la clave de KMS predeterminada cuando compartes secretos entre cuentas. La clave de KMS predeterminada la crea, administra y utiliza en tu nombre un servicio de AWS que se ejecuta en AWS KMS. Es exclusiva de tu cuenta y región de AWS y solo puedes usarla con el servicio que la creó. Para obtener más información, consulta Claves de AWS KMS.
Configuración de la cuenta que posee el secreto
Si no tienes ningún secreto, crea uno en Secrets Manager. Asegúrate de especificar el nombre de recurso de Amazon (ARN) en el parámetro de ID de clave de KMS para el secreto.
Si tienes un secreto existente que usa un alias, modifica el secreto. Asegúrate de especificar el ARN de la clave de KMS en el parámetro de ID de clave de KMS del secreto. Debes utilizar el ARN completo de la clave de KMS para acceder a un secreto desde otra cuenta.
Importante: En las siguientes políticas, sustituye Principal ARN por el ARN de tu cuenta de destino, SecretARN por el ARN de tu cuenta de origen y KMS key ARN por el ARN de tu cuenta de origen. Sustituye también YOUR-REGION por tu región.
Agrega la siguiente instrucción a la política clave y, a continuación, sustituye los valores de ejemplo por tus 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??????"
}
}
}
A continuación, adjunta una política basada en recursos para conceder al rol de AWS Identity and Access Management (IAM) permisos para acceder al secreto.
Ejemplo de política de secretos basada en recursos:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::444455556666:user/username"
},
"Action": "secretsmanager:GetSecretValue",
"Resource": "*"
}
]
}
Configuración de los permisos en la otra cuenta que necesita el secreto
El usuario de IAM debe tener el permiso secretsmanager:GetSecretValue para recuperar el secreto. Además, el usuario de IAM debe tener permisos de descifrado cuando el secreto se cifra con una clave de KMS.
Adjunta los permisos secretsmanager:GetSecretValue a la identidad de IAM de la que quieres recuperar el secreto.
Ejemplo 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"
]
}
]
}
A continuación, ejecuta el siguiente comando get-secret-value para recuperar el secreto como valor de secreto de origen:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:YOUR-REGION:777788889999:secret:secretname --version-stage AWSCURRENT --region YOUR-REGION
Información relacionada
Access AWS Secrets Manager secrets from a different account (Acceso a los secretos de AWS Secrets Manager desde otra cuenta)
How to access secrets across AWS accounts by attaching resource-based policies (Cómo acceder a los secretos en cuentas de AWS adjuntando políticas basadas en recursos)
¿Cómo soluciono los errores de acceso a las claves de AWS KMS después de intentar recuperar un secreto cifrado de Secrets Manager?