

# Obtención de un valor de cadena segura del Almacén de parámetros de Systems Manager
<a name="dynamic-references-ssm-secure-strings"></a>

En CloudFormation, puede usar datos confidenciales, como contraseñas o claves de licencia, sin exponerlos directamente en sus plantillas al almacenar los datos confidenciales como una “cadena segura” en el Almacén de parámetros de AWS Systems Manager. Para obtener una introducción al Almacén de parámetros, consulte [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) en la *Guía del usuario de AWS Systems Manager*.

Para utilizar una cadena segura del Almacén de parámetros en la plantilla, debe usar una referencia dinámica `ssm-secure`. CloudFormation no almacena nunca el valor real de cadena segura. En su lugar, solo almacena la referencia dinámica literal, que contiene el nombre de parámetro en texto sin formato de la cadena segura. 

Durante la creación o las actualizaciones de la pila, CloudFormation accede al valor de cadena segura según sea necesario, sin exponer el valor real. Las cadenas seguras solo se pueden usar para las propiedades de recursos que admiten el patrón de referencia dinámica `ssm-secure`. Para obtener más información, consulte [Recursos que admiten patrones de parámetros dinámicos para SecureStrings o cadenas seguras](#template-parameters-dynamic-patterns-resources).

CloudFormation no devuelve el valor del parámetro real para las cadenas seguras en ninguna llamada a la API. Solo devuelve la referencia dinámica literal. Al comparar los cambios con el conjunto de cambios, CloudFormation solo compara la cadena de referencia dinámica literal. No resuelve ni compara los valores reales de la cadena segura.

Al utilizar referencias dinámicas `ssm-secure`, debe tener en cuenta varios aspectos:
+ CloudFormation no puede acceder a los valores del Almacén de parámetros desde otras Cuentas de AWS.
+ CloudFormation no es compatible con el uso de etiquetas de parámetros de Systems Manager o parámetros públicos en las referencias dinámicas.
+ En las regiones `cn-north-1` y `cn-northwest-1`, las cadenas seguras no son compatibles con Systems Manager.
+ Las referencias dinámicas de valores seguros, como, por ejemplo, `ssm-secure`, no son compatibles actualmente con los recursos personalizados.
+ Si CloudFormation necesita reversionar la actualización de la pila, y la versión especificada anteriormente de un parámetro de cadena segura ya no está disponible, se producirá un error en dicha operación de reversión. En esos casos, existen dos opciones:
  + Use `CONTINUE_UPDATE_ROLLBACK` para omitir el recurso.
  + Vuelva a crear el parámetro SecureString o de cadena segura en el almacén de parámetros de Administrador de sistemas y actualícelo hasta que la versión del parámetro llegue a la versión que se utiliza en la plantilla. Luego use `CONTINUE_UPDATE_ROLLBACK` sin omitir el recurso.

## Recursos que admiten patrones de parámetros dinámicos para SecureStrings o cadenas seguras
<a name="template-parameters-dynamic-patterns-resources"></a>

Los recursos compatibles con el patrón de referencia dinámica `ssm-secure` son:


| Recurso | Tipo de propiedad | Propiedades | 
| --- | --- | --- | 
| [AWS::DirectoryService::MicrosoftAD](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-microsoftad.html) |  | `Password` | 
| [AWS::DirectoryService::SimpleAD](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-directoryservice-simplead.html) |  | `Password` | 
| [AWS::ElastiCache::ReplicationGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticache-replicationgroup.html) |  | `AuthToken` | 
| [AWS::IAM::User](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-user.html) | [LoginProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-iam-user-loginprofile.html) | `Password` | 
| [AWS::KinesisFirehose::DeliveryStream](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-kinesisfirehose-deliverystream.html) | [RedshiftDestinationConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-kinesisfirehose-deliverystream-redshiftdestinationconfiguration.html) | `Password` | 
| [AWS::OpsWorks::App](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-app.html) | [Origen](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-app-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [CustomCookbooksSource](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-source.html) | `Password` | 
| [AWS::OpsWorks::Stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-opsworks-stack.html) | [RdsDbInstances](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-opsworks-stack-rdsdbinstance.html) | `DbPassword` | 
| [AWS::RDS::DBCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbcluster.html) |  | `MasterUserPassword` | 
| [AWS::RDS::DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) |  | `MasterUserPassword`  | 
| [AWS::Redshift::Cluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-redshift-cluster.html) |  | `MasterUserPassword` | 

## Patrón de referencia
<a name="dynamic-references-ssm-secure-pattern"></a>

Para referenciar un valor de cadena segura del Almacén de parámetros de Systems Manager en una plantilla de CloudFormation, utilice el siguiente patrón de referencia `ssm-secure`.

```
{{resolve:ssm-secure:parameter-name:version}}
```

Su referencia debe cumplir el siguiente patrón de expresión regular para nombre-parámetro y versión:

```
{{resolve:ssm-secure:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
El nombre del parámetro en el almacén de parámetros de . El nombre de parámetro distingue entre mayúsculas y minúsculas.  
Obligatorio.

`version`  
Un número entero que especifica la versión del parámetro que se va a utilizar. Si no especifica la versión exacta, CloudFormation utiliza la última versión del parámetro cada vez que cree o actualice la pila. Para obtener más información, consulte [Trabajo con versiones de parámetros](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html) en la *Guía del usuario de AWS Systems Manager*.  
Opcional.

## Ejemplo
<a name="dynamic-references-ssm-secure-example"></a>

En el siguiente ejemplo, se utiliza una referencia dinámica `ssm-secure` para establecer la contraseña de un usuario de IAM para una cadena segura almacenada en el Almacén de parámetros. Tal y como se especifica, CloudFormation usará la versión *`10`* del parámetro `IAMUserPassword` para las operaciones de pila y de conjunto de cambios.

### JSON
<a name="dynamic-references-ssm-secure-example.json"></a>

```
  "MyIAMUser": {
    "Type": "AWS::IAM::User",
    "Properties": {
      "UserName": "MyUserName",
      "LoginProfile": {
        "Password": "{{resolve:ssm-secure:IAMUserPassword:10}}"
      }
    }
  }
```

### YAML
<a name="dynamic-references-ssm-secure-example.yaml"></a>

```
  MyIAMUser:
    Type: AWS::IAM::User
    Properties:
      UserName: 'MyUserName'
      LoginProfile:
        Password: '{{resolve:ssm-secure:IAMUserPassword:10}}'
```