Obtención de un secreto o un valor secreto de Secrets Manager
Secrets Manager es un servicio que permite almacenar y administrar de forma segura un secreto, como credenciales de base de datos, contraseñas y claves de API de terceros. Con Secrets Manager, puede almacenar y controlar el acceso a estos secretos de forma centralizada, de modo que pueda reemplazar las credenciales codificadas en su código (incluidas las contraseñas), con una llamada API a Secrets Manager para recuperar el secreto mediante programación. Para obtener más información, consulte ¿Qué es AWS Secrets Manager? en la Guía del usuario de AWS Secrets Manager.
Para utilizar secretos completos o valores secretos que están almacenados en Secrets Manager en las plantillas de CloudFormation, debe utilizar referencias dinámicas secretsmanager
.
Consideraciones
Al utilizar referencias dinámicas de secretsmanager
, hay algunas consideraciones de seguridad importantes que se deben tener en cuenta:
-
La referencia dinámica
secretsmanager
se pueden utilizar en todas las propiedades de recursos. El uso de la referencia dinámicasecretsmanager
indica que ni Secrets Manager ni CloudFormation registren o mantengan valores de secretos resueltos. Sin embargo, el valor del secreto puede mostrarse en el servicio donde se está usando el recurso. Debe revisar el uso para evitar fugas de datos secretos. -
Cuando se actualiza un secreto en Secrets Manager, el secreto no se actualiza automáticamente en CloudFormation. Para que CloudFormation actualice una referencia dinámica de
secretsmanager
, debe ejecutar una actualización de pila que actualice el recurso que contiene la referencia dinámica, ya sea actualizando la propiedad del recurso que contenga la referencia dinámicasecretsmanager
o actualizando otra de las propiedades del recurso.Por ejemplo, supongamos que especifica en la plantilla la propiedad
MasterPassword
de un recurso AWS::RDS::DBInstance para que sea una referencia dinámica desecretsmanager
y después crea una pila a partir de la plantilla. Más tarde, actualice el valor de ese secreto en Secrets Manager, pero no actualice el recurso deAWS::RDS::DBInstance
en la plantilla. En ese caso, aunque actualice la pila, el valor del secreto de la propiedadMasterPassword
no se actualizará y seguirá siendo el valor anterior.Considere también la posibilidad de utilizar Secrets Manager para que cambie automáticamente el secreto en las bases de datos o los servicios protegidos. Para obtener más información, consulte Rotar secretos de AWS Secrets Manager.
-
Las referencias dinámicas de valores seguros, como, por ejemplo,
secretsmanager
, no son compatibles actualmente con los recursos personalizados.
Permisos
Para especificar un secreto almacenado en Secrets Manager, debe tener permiso para llamar a GetSecretValue para el secreto.
Patrón de referencia
Para referenciar secretos de Secrets Manager en una plantilla de CloudFormation, utilice el siguiente patrón de referencia secretsmanager
.
{{resolve:secretsmanager:
secret-id
:secret-string
:json-key
:version-stage
:version-id
}}
secret-id
-
El nombre o el ARN del secreto.
Para obtener acceso a un secreto de su Cuenta de AWS, solo debe especificar el nombre del secreto. Para obtener acceso a un secreto de otra Cuenta de AWS, especifique el ARN completo del secreto.
Obligatorio.
secret-string
-
El único valor admitido es
SecretString
. El valor predeterminado esSecretString
. json-key
-
El nombre de la clave del par clave-valor cuyo valor desea recuperar. Si no se especifica una
json-key
, CloudFormation recupera todo el texto secreto.Este segmento no puede incluir el signo de dos puntos (
:
). version-stage
-
La etiqueta de fase de la versión del secreto que se usará. Secrets Manager utiliza etiquetas provisionales para realizar un seguimiento de las diferentes versiones durante el proceso de rotación. Si usa
version-stage
, no especifiqueversion-id
. Si no especificaversion-stage
niversion-id
, la versión predeterminada es laAWSCURRENT
.Este segmento no puede incluir el signo de dos puntos (
:
). version-id
-
El identificador único de la versión del secreto a utilizar. Si especifica
version-id
, no especifiqueversion-stage
. Si no especificaversion-stage
niversion-id
, la versión predeterminada es laAWSCURRENT
.Este segmento no puede incluir el signo de dos puntos (
:
).
Ejemplos
Temas
Recuperación de valores de nombre de usuario y contraseña de un secreto
El siguiente ejemplo de AWS::RDS::DBInstance recupera los valores de nombre de usuario y contraseña almacenados en el secreto
. La versión del secreto recuperada es la versión con el valor de fase de versión de MySecret
AWSCURRENT
.
JSON
{ "MyRDSInstance": { "Type": "AWS::RDS::DBInstance", "Properties": { "DBName": "MyRDSInstance", "AllocatedStorage": "20", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "MasterUsername": "{{resolve:secretsmanager:
MySecret
:SecretString:username
}}", "MasterUserPassword": "{{resolve:secretsmanager:MySecret
:SecretString:password
}}" } } }
YAML
MyRDSInstance: Type: 'AWS::RDS::DBInstance' Properties: DBName: MyRDSInstance AllocatedStorage: '20' DBInstanceClass: db.t2.micro Engine: mysql MasterUsername: '{{resolve:secretsmanager:
MySecret
:SecretString:username
}}' MasterUserPassword: '{{resolve:secretsmanager:MySecret
:SecretString:password
}}'
Recuperación de la totalidad de SecretString
La siguiente referencia dinámica recupera el valor de SecretString
para
.MySecret
{{resolve:secretsmanager:
MySecret
}}
Otra opción:
{{resolve:secretsmanager:
MySecret
::::}}
Recuperación de un valor de una versión específica de un secreto
La siguiente referencia dinámica recupera el valor de
para la versión password
de AWSPREVIOUS
.MySecret
{{resolve:secretsmanager:
MySecret
:SecretString:password
:AWSPREVIOUS
}}
Recuperación de secretos de otra Cuenta de AWS
La siguiente referencia dinámica recupera el valor de SecretString
para
que hay en otra Cuenta de AWS. Debe especificar el ARN del secreto completo para obtener acceso a otra Cuenta de AWS.MySecret
{{resolve:secretsmanager:
arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret
}}
La siguiente referencia dinámica recupera el valor de
para password
que hay en otra Cuenta de AWS. Debe especificar el ARN del secreto completo para obtener acceso a otra Cuenta de AWS.MySecret
{{resolve:secretsmanager:
arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret
:SecretString:password
}}