

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configure la rotación alterna de usuarios para AWS Secrets Manager
<a name="tutorials_rotation-alternating"></a>

En este tutorial, aprenderá a configurar la rotación de usuarios alternativos para un secreto que contiene credenciales de bases de datos. La *rotación de usuarios alternativos* es una estrategia de rotación en la que Secrets Manager clona al usuario y, luego, alterna las credenciales del usuario que se actualizan. Esta estrategia es una buena opción si necesita disponibilidad alta para su secreto, ya que uno de los usuarios alternativos tiene credenciales actuales para la base de datos mientras que el otro se actualiza. Para obtener más información, consulte [Estrategia de rotación: usuarios alternativos](rotation-strategy.md#rotating-secrets-two-users). 

Para configurar la rotación de usuarios alternativos, necesita dos secretos:
+ Un secreto con las credenciales que desea rotar.
+ Un segundo secreto que tiene credenciales de administrador. 

  Este usuario tiene permisos para clonar al primer usuario y cambiar la contraseña del primer usuario. En este tutorial, debe hacer que Amazon RDS cree este secreto para un usuario administrador. Amazon RDS también administra la rotación de contraseñas de administrador. Para obtener más información, consulte [Rotación gestionada de AWS Secrets Manager secretos](rotate-secrets_managed.md).

La primera parte de este tutorial consiste en configurar un entorno realista. Para mostrar cómo funciona la rotación, este tutorial incluye un ejemplo de base de datos MySQL en Amazon RDS. Por seguridad, la base de datos se encuentra en una VPC que limita el acceso entrante desde Internet. Para conectarse a la base de datos desde su computadora local a través de Internet, utilice un *host bastión*, un servidor de la VPC que se puede conectar a la base de datos y que también permite conexiones SSH desde Internet. El host bastión de este tutorial es una instancia de Amazon EC2, y los grupos de seguridad de la instancia impiden otros tipos de conexiones. 

Una vez terminado el tutorial, le recomendamos que limpie los recursos del tutorial. No los utilice en un entorno de producción.

La rotación de Secrets Manager utiliza una AWS Lambda función para actualizar el secreto y la base de datos. Para obtener información sobre los costos por usar una función de Lambda, consulte [Precios](intro.md#asm_pricing).

**Topics**
+ [Permisos](#tutorials_rotation-alternating-permissions)
+ [Requisitos previos](#tutorials_rotation-alternating-step-setup)
+ [Paso 1: cree un usuario de base de datos de Amazon RDS](#tutorials_rotation-alternating-step-database)
+ [Paso 2: cree un secreto para las credenciales del usuario](#tutorials_rotation-alternating_step-rotate)
+ [Paso 3: pruebe el secreto rotado](#tutorials_rotation-alternating_step-test-secret)
+ [Paso 4: limpie los recursos](#tutorials_rotation-alternating_step-cleanup)
+ [Siguientes pasos](#tutorials_rotation-alternating_step-next)

## Permisos
<a name="tutorials_rotation-alternating-permissions"></a>

Para los requisitos previos del tutorial, necesita permisos administrativos para su Cuenta de AWS. En una configuración de producción, una práctica recomendada es utilizar diferentes roles para cada uno de los pasos. Por ejemplo, un rol con permisos de administrador de bases de datos creará la base de datos de Amazon RDS, y un rol con permisos de administrador de red configurará la VPC y los grupos de seguridad. Para los pasos del tutorial, le recomendamos que siga utilizando la misma identidad.

Para obtener más información sobre cómo configurar permisos en un entorno de producción, consulte [Autenticación y control de acceso para AWS Secrets Manager](auth-and-access.md).

## Requisitos previos
<a name="tutorials_rotation-alternating-step-setup"></a>

**Topics**
+ [Requisito previo A: Amazon VPC](#tutorials_rotation-alternating-step-vpc)
+ [Requisito previo B: instancia de Amazon EC2](#tutorials_rotation-alternating-step-setup_ec2)
+ [Requisito previo C: base de datos de Amazon RDS y un secreto de Secrets Manager para las credenciales de administrador](#tutorials_rotation-alternating-step-database)
+ [Requisito previo D: permita que su equipo local se conecte a la instancia de EC2](#tutorials_rotation-alternating-step-ec2connect)

### Requisito previo A: Amazon VPC
<a name="tutorials_rotation-alternating-step-vpc"></a>

En este paso, cree una VPC en la que pueda lanzar una base de datos de Amazon RDS y una instancia de Amazon EC2. En un paso posterior, utilizará su computadora para conectarse a través de Internet al bastión y, después, a la base de datos, por lo que tendrá que permitir que el tráfico salga de la VPC. Para ello, Amazon VPC adjunta una puerta de enlace de Internet a la VPC y agrega una ruta en la tabla de enrutamiento de manera que el tráfico destinado fuera de la VPC se envíe a la puerta de enlace de Internet.

Dentro de la VPC, se crean un punto de conexión de Secrets Manager y otro de Amazon RDS. Cuando configure la rotación automática en un paso posterior, Secrets Manager creará la función de rotación de Lambda en la VPC para que tenga acceso a la base de datos. La función de rotación de Lambda también llama a Secrets Manager para actualizar el secreto y a Amazon RDS para obtener la información de conexión a la base de datos. Al crear puntos de enlace dentro de la VPC, se asegura de que las llamadas desde la función Lambda a Secrets Manager y Amazon RDS no abandonen la infraestructura. AWS En su lugar, se dirigen a puntos de conexión dentro de la VPC.

**Para crear una VPC**

1. Abra la consola de Amazon VPC en [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Seleccione **Creación de VPC**.

1. En la página **Create VPC** (Crear VPC), seleccione **VPC and more** (VPC y más).

1. En **Name tag auto-generation** (Generación automática de etiquetas de nombre), ingrese **SecretsManagerTutorial** en **Auto-generate** (Generar automáticamente).

1. En **DNS options** (Opciones de DNS), elija **Enable DNS hostnames** y **Enable DNS resolution**.

1. Seleccione **Creación de VPC**.

**Para crear un punto de conexión de Secrets Manager dentro de la VPC**

1. En la consola de Amazon VPC, en **Endpoints** (Puntos de conexión), elija **Create Endpoint** (Crear punto de conexión).

1. En **Endpoint settings** (Configuración de punto de conexión), ingrese **SecretsManagerTutorialEndpoint** en **Name** (Nombre).

1. En **Services** (Servicios), ingrese **secretsmanager** para filtrar la lista y, luego, seleccione el punto de conexión de Secrets Manager en su Región de AWS. Por ejemplo, en Este de EE. UU. (Norte de Virginia), elija `com.amazonaws.us-east-1.secretsmanager`. 

1. En **VPC**, elija **vpc\$1\$1\$1\$1 (SecretsManagerTutorial)**.

1. En **Subnets** (Subredes), seleccione todas las **Availability Zones** (Zonas de disponibilidad) y, luego, para cada una, elija un **Subnet ID** (ID de subred) para incluir.

1. En **IP address type** ((Tipo de dirección IP), elija **IPv4**.

1. En **Security groups** (Grupos de seguridad), elija el grupo de seguridad predeterminado.

1. En **Policy** (Política), elija **Full access**. 

1. Seleccione **Crear punto de conexión**.

**Para crear un punto de conexión de Amazon RDS dentro de la VPC**

1. En la consola de Amazon VPC, en **Endpoints** (Puntos de conexión), elija **Create Endpoint** (Crear punto de conexión).

1. En **Endpoint settings** (Configuración de punto de conexión), ingrese **RDSTutorialEndpoint** en **Name** (Nombre).

1. En **Services** (Servicios), ingrese **rds** para filtrar la lista y, luego, seleccione el punto de conexión de Amazon RDS en su Región de AWS. Por ejemplo, en Este de EE. UU. (Norte de Virginia), elija `com.amazonaws.us-east-1.rds`. 

1. En **VPC**, elija **vpc\$1\$1\$1\$1 (SecretsManagerTutorial)**.

1. En **Subnets** (Subredes), seleccione todas las **Availability Zones** (Zonas de disponibilidad) y, luego, para cada una, elija un **Subnet ID** (ID de subred) para incluir.

1. En **IP address type** ((Tipo de dirección IP), elija **IPv4**.

1. En **Security groups** (Grupos de seguridad), elija el grupo de seguridad predeterminado.

1. En **Policy** (Política), elija **Full access**. 

1. Seleccione **Crear punto de conexión**.

### Requisito previo B: instancia de Amazon EC2
<a name="tutorials_rotation-alternating-step-setup_ec2"></a>

La base de datos de Amazon RDS que cree en un paso posterior estará en la VPC, por lo que para acceder a ella necesitará un host bastión. El host bastión también está en la VPC, pero en un paso posterior, configurará un grupo de seguridad para permitir que su equipo local se conecte al host bastión con SSH. 

**Para crear una instancia de EC2 para un host bastión**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Elija **Instances** (Instancias) y, luego, elija **Launch Instances** (Lanzar instancias).

1. En **Name and tags** (Nombre y etiquetas), en **Name** (Nombre), introduzca **SecretsManagerTutorialInstance**.

1. En **Application and OS Images** (Imágenes de aplicaciones y sistemas operativos), mantenga el valor predeterminado **Amazon Linux 2 AMI (HMV) Kernel 5.10**.

1. En **Instance type** (Tipo de instancia), mantenga el valor predeterminado **t2.micro**.

1. En **Key pair** (Par de claves), seleccione **Create key pair** (Crear par de claves).

   En el cuadro de diálogo **Create key pair** (Crear par de claves), en **Key pair name** (Nombre del par de claves), ingrese **SecretsManagerTutorialKeyPair** y haga clic en **Create** (Crear).

   La clave privada se descarga automáticamente.

1. En **Network settings** (Configuración de red), elija **Edit** (Editar) y realice lo siguiente:

   1. En **VPC**, elija **vpc-\$1\$1\$1\$1 SecretsManagerTutorial**.

   1. En **Auto-assign Public IP** (Asignar IP pública automáticamente), elija **Enable**.

   1. En **Firewall**, seleccione **Select existing security group** (Seleccionar grupo de seguridad existente).

   1. En **Common security groups** (Grupos de seguridad comunes), elija **default**. 

1. Seleccione **Iniciar instancia**.

### Requisito previo C: base de datos de Amazon RDS y un secreto de Secrets Manager para las credenciales de administrador
<a name="tutorials_rotation-alternating-step-database"></a>

En este paso, cree una base de datos MySQL de Amazon RDS y configúrela de manera que Amazon RDS cree un secreto que contenga las credenciales de administrador. A continuación, Amazon RDS gestionará automáticamente la rotación del secreto de administrador por usted. Para obtener más información, consulte [Rotación administrada](rotate-secrets_managed.md).

Como parte de la creación de la base de datos, debe especificar el host bastión que creó en el paso anterior. A continuación, Amazon RDS configura grupos de seguridad para que la base de datos y la instancia puedan acceder entre sí. Agregue una regla al grupo de seguridad adjunto a la instancia para permitir que su equipo local también se conecte a ella. 

**Para crear una base de datos de Amazon RDS con un secreto de Secrets Manager que contenga las credenciales de administrador**

1. En la consola de Amazon RDS, seleccione **Create database** (Crear base de datos).

1. En la sección **Engine options** (Opciones del motor), en **Engine type** (Tipo de motor) elija **MySQL**.

1. En la sección **Templates** (Plantillas), elija **Free tier**.

1. En la sección **Settings** (Configuración), realice lo siguiente:

   1. En **DB instance identifier** (Identificador de instancia de base de datos), ingrese **SecretsManagerTutorial**.

   1. **En **Configuración de credenciales**, selecciona Administrar credenciales maestras en. AWS Secrets Manager**

1. En la sección **Connectivity** (Conectividad), para **Computer resource** (Recurso de equipo), elija **Connect to an EC2 computer resource** (Conectarse a un recurso de equipo de EC2) y, a continuación, para **EC2 Instance** (Instancia de EC2), elija **SecretsManagerTutorialInstance**.

1. Elija **Creación de base de datos**.

### Requisito previo D: permita que su equipo local se conecte a la instancia de EC2
<a name="tutorials_rotation-alternating-step-ec2connect"></a>

En este paso, configurará la instancia de EC2 que creó en el requisito previo B para permitir que su equipo local se conecte a ella. Para ello, edite el grupo de seguridad que Amazon RDS agregó al requisito previo C para incluir una regla que permita que la dirección IP de su equipo se conecte con SSH. La regla permite que su equipo local (identificado por su dirección IP actual) se conecte al host bastión mediante SSH a través de Internet.

**Para permitir que su equipo local se conecte a la instancia de EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En la instancia EC2 **SecretsManagerTutorialInstance**, en la pestaña **Seguridad**, en **Grupos de seguridad, elija**. **sg-\$1\$1\$1 (ec2-rds-X)**

1. En la pestaña **Inbound rules** (Reglas de entrada), seleccione **Edit inbound rules** (Editar reglas de entrada).

1. Elija **Add Rule** (Agregar regla) y, a continuación para la regla, haga lo siguiente:

   1. En **Type (Tipo)**, elija **SSH**.

   1. En **Tipo de origen**, elija **My IP**.

## Paso 1: cree un usuario de base de datos de Amazon RDS
<a name="tutorials_rotation-alternating-step-database"></a>

Primero, necesita un usuario cuyas credenciales se almacenarán en el secreto. Para crear el usuario, inicie sesión en la base de datos de Amazon RDS con las credenciales de administrador. Para simplificar, en el tutorial se crea un usuario con todos los permisos para acceder a una base de datos. En un entorno de producción, esto no es habitual y le recomendamos que siga el principio de privilegio mínimo.

Para conectarse a la base de datos, utilizará una herramienta de cliente de MySQL. En este tutorial, utilizará MySQL Workbench, una aplicación basada en la interfaz gráfica de usuario (GUI). Para instalar MySQL Workbench, consulte [Download MySQL Workbench](http://dev.mysql.com/downloads/workbench/) (Descargar MySQL Workbench).

Para conectarse a la base de datos, cree una configuración de conexión en MySQL Workbench. Para la configuración, necesita información de Amazon EC2 y Amazon RDS.

**Para crear una conexión de base de datos en MySQL Workbench**

1. En MySQL Workbench, junto a **MySQL Connections** (Conexiones de MySQL), elija el botón (\$1).

1. En el cuadro de diálogo **Setup New Connection** (Configurar una conexión), haga lo siguiente:

   1. En **Connection Name** (Nombre de conexión), ingrese **SecretsManagerTutorial**.

   1. En **Connection Method** (Método de conexión), elija **Standard TCP/IP over SSH**.

   1. En la pestaña **Parameters** (Parámetros), haga lo siguiente:

      1. En **SSH Hostname** (Nombre de host SSH), ingrese la dirección IP pública de la instancia de Amazon EC2.

         Para encontrar la dirección IP en la consola Amazon EC2, seleccione la instancia. **SecretsManagerTutorialInstance** Copie la dirección IP en **Public IPv4 DNS**.

      1. En **SSH Username** (Nombre de usuario SSH), ingrese **ec2-user**.

      1. Para **SSH Keyfile, elija el archivo** de pares de claves **SecretsManagerTutorialKeyPair.pem** que descargó en el requisito previo anterior. 

      1. En **MySQL Hostname** (Nombre de host de MySQL), ingrese la dirección del punto de conexión de Amazon RDS.

         Podrá encontrar la dirección del punto de conexión en la consola de Amazon RDS si elige la instancia de base de datos **secretsmanagertutorialdb**. Copie la dirección en **Endpoint** (Punto de conexión).

      1. En **Username** (Nombre de usuario), ingrese **admin**.

   1. Seleccione **Aceptar**.

**Para recuperar la contraseña de administrador**

1. En la consola de Amazon RDS, acceda a su base de datos.

1. En la pestaña **Configuration** (Configuración), en **Master Credentials ARN** (ARN de credenciales maestras), seleccione **Manage in Secrets Manager** (Administrar en Secrets Manager).

   Se abrirá la consola de Secrets Manager.

1. En la página de detalles del secreto, elija **Retrieve secret value** (Recuperar valor del secreto).

1. La contraseña aparece en la sección **Secret value** (Valor secreto).

**Para crear un usuario de base de datos**

1. En MySQL Workbench, elija la conexión **SecretsManagerTutorial**. 

1. Ingrese la contraseña de administrador que recuperó del secreto. 

1.  En MySQL Workbench, en la ventana **Query** (Consulta), ingrese los siguientes comandos (incluida una contraseña segura) y, luego, elija **Execute** (Ejecutar). La función de rotación prueba el secreto actualizado mediante SELECT, por lo que **appuser** debe tener ese privilegio como mínimo.

   ```
   CREATE DATABASE myDB;
   CREATE USER 'appuser'@'%' IDENTIFIED BY 'EXAMPLE-PASSWORD';
   GRANT SELECT ON myDB . * TO 'appuser'@'%';
   ```

   En la ventana **Output** (Salida), observará que los comandos se ejecutaron correctamente.

## Paso 2: cree un secreto para las credenciales del usuario
<a name="tutorials_rotation-alternating_step-rotate"></a>

A continuación, crea un secreto para almacenar las credenciales del usuario que acaba de crear. Este es el secreto que rotará. Activa la rotación automática y, para indicar la estrategia de usuarios alternativos, elige un secreto de superusuario independiente que tenga permiso para cambiar la contraseña del primer usuario.

1. Abra la consola de Secrets Manager en [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Elija **Almacenar un secreto nuevo**.

1. En la página **Choose secret type (Elegir tipo de secreto)**, haga lo siguiente:

   1. En **Secret type** (Tipo de secreto), elija **Credentials for Amazon RDS database** (Credenciales para base de datos de Amazon RDS).

   1. En **Credentials** (Credenciales), ingrese el nombre de usuario **appuser** y la contraseña que ingresó para el usuario de base de datos que creó mediante MySQL Workbench.

   1. En **Database** (Base de datos), elija **secretsmanagertutorialdb**.

   1. Elija **Siguiente**.

1. En la página **Configure secrect** (Configurar el secreto), en **Secret name** (Nombre del secreto), ingrese **SecretsManagerTutorialAppuser** y, luego, elija **Next** (Siguiente).

1. En la página **Configure rotation** (Configurar la rotación), haga lo siguiente:

   1. Active **Automatic rotation** (Rotación automática).

   1. En **Rotation schedule** (Programación de rotación), configure una programación de **Days** (Días): **2** días con **Duration** (Duración): **2h**. Mantenga seleccionada la opción **Rotate immediately** (Rotar inmediatamente). 

   1. En **Rotation function** (Función de rotación), elija **Create a rotation function** (Crear una función de rotación) y, luego, para el nombre de la función, ingrese **tutorial-alternating-users-rotation**.

   1. En **Utilizar credenciales individuales**, elija **Sí**, y luego en **Secretos**, elija el secreto llamado **rds\$1cluster…** que tiene una **Descripción** que incluye el nombre de la base de datos que creó en este tutorial **secretsmanagertutorial**, como `Secret associated with primary RDS DB instance: arn:aws:rds:Region:AccountId:db:secretsmanagertutorial`.

   1. Elija **Siguiente**.

1. En la página **Review** (Revisar), elija **Store** (Almacenar).

   Secrets Manager vuelve a la página de detalles del secreto. En la parte superior de la página, puede observar el estado de la configuración de la rotación. Secrets Manager se utiliza CloudFormation para crear recursos como la función de rotación de Lambda y un rol de ejecución que ejecuta la función Lambda. Cuando CloudFormation termine, el cartel pasará a ser **Secreto y su rotación está programada**. Se completó la primera rotación.

## Paso 3: pruebe el secreto rotado
<a name="tutorials_rotation-alternating_step-test-secret"></a>

Una vez que el secreto se ha rotado, puede comprobar que contenga nuevas credenciales válidas. La contraseña del secreto cambió con respecto a las credenciales originales.

**Para recuperar la contraseña nueva del secreto**

1. Abra la consola de Secrets Manager en [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Elija **Secrets** (Secretos) y, luego, elija el secreto **SecretsManagerTutorialAppuser**.

1. En la página **Secret details** (Detalles del secreto), deslícese hacia abajo y elija **Retrieve secret value** (Recuperar valor del secreto).

1. En la tabla **Key/value** (Clave/valor), copie el **Secret value** (Valor del secreto) en **password**.

**Para probar las credenciales**

1. En MySQL Workbench, haga clic con el botón derecho en la conexión **SecretsManagerTutorial**y, a continuación, seleccione **Editar conexión**.

1. En el cuadro de diálogo **Manage Server Connections** (Administrar conexiones de servidores), en **Username** (Nombre de usuario), ingrese **appuser** y, luego, elija **Close** (Cerrar).

1. De vuelta en MySQL Workbench, elija la conexión **SecretsManagerTutorial**.

1. En el cuadro de diálogo **Open SSH Connection** (Conexión SSH abierta), en **Password** (Contraseña), pegue la contraseña que recuperó del secreto y, luego, elija **OK** (Aceptar).

   Si las credenciales son válidas, MySQL Workbench abrirá la página de diseño de la base de datos.

Esto indica que la rotación del secreto se realizó correctamente. Las credenciales del secreto se actualizaron y es una contraseña válida para conectarse a la base de datos. 

## Paso 4: limpie los recursos
<a name="tutorials_rotation-alternating_step-cleanup"></a>

Si desea probar otra estrategia de rotación, la *rotación de un solo usuario*, omita la eliminación de recursos y diríjase a [Configurar la rotación de un solo usuario para AWS Secrets Manager](tutorials_rotation-single.md). 

De lo contrario, para evitar posibles cargos y eliminar la instancia de EC2 que tiene acceso a Internet, elimine los siguientes recursos que creó en este tutorial y los requisitos previos:
+ Instancia de base de datos de Amazon RDS. Para obtener instrucciones, consulte [Deleting a DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html) (Eliminar una instancia de base de datos) en la *Guía del usuario de Amazon RDS*.
+ Instancia de Amazon EC2. Para obtener instrucciones, consulte [Terminar una instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#terminating-instances-console) en la *Guía del usuario de Amazon EC2*.
+ Secreto `SecretsManagerTutorialAppuser` de Secrets Manager. Para obtener instrucciones, consulte [Eliminar un AWS Secrets Manager secreto](manage_delete-secret.md).
+ Punto de conexión de Secrets Manager. Para obtener instrucciones, consulte [Delete a VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/delete-vpc-endpoint.html) (Eliminar un punto de conexión de VPC) en la *Guía de AWS PrivateLink *.
+ Punto de conexión de VPC. Para obtener instrucciones, consulte [Delete your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#VPC_Deleting) (Eliminar su VPC) en la *Guía de AWS PrivateLink *.

## Siguientes pasos
<a name="tutorials_rotation-alternating_step-next"></a>
+ Obtenga información sobre cómo [recuperar secretos en sus aplicaciones](retrieving-secrets.md).
+ Obtenga más información sobre [otras programaciones de rotación](rotate-secrets_schedule.md).