Configuración de rotación de usuarios alternativos para AWS Secrets Manager - AWS Secrets Manager

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.

Configuración de rotación de usuarios alternativos para AWS Secrets Manager

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.

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 administrada para secretos de AWS Secrets Manager.

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 función de AWS Lambda 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.

Permisos

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 de AWS Secrets Manager.

Requisitos previos

Requisito previo A: Amazon VPC

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 conexión en la VPC, se asegura de que las llamadas de la función de Lambda a Secrets Manager y Amazon RDS no salgan de la infraestructura de 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/.

  2. Seleccione Crear VPC.

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

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

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

  6. Seleccione Crear 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).

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

  3. 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.

  4. En VPC, elija vpc**** (SecretsManagerTutorial).

  5. 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.

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

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

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

  9. 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).

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

  3. 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.

  4. En VPC, elija vpc**** (SecretsManagerTutorial).

  5. 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.

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

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

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

  9. Seleccione Crear punto de conexión.

Requisito previo B: instancia de Amazon EC2

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/.

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

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

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

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

  6. 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.

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

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

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

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

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

  8. Seleccione Iniciar instancia.

Requisito previo C: base de datos de Amazon RDS y un secreto de Secrets Manager para las credenciales de administrador

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.

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).

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

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

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

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

    2. En Configuración de credenciales, seleccione Administrar credenciales maestras en AWS Secrets Manager.

  5. 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.

  6. Elija Crear base de datos.

Requisito previo D: permita que su equipo local se conecte a la instancia de EC2

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/.

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

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

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

    1. En Type (Tipo), elija SSH.

    2. En Tipo de origen, elija My IP.

Paso 1: cree un usuario de base de datos de Amazon RDS

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 (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 (+).

  2. 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.

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

    3. 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.

        Podrá encontrar la dirección IP en la consola de Amazon EC2 si elige la instancia SecretsManagerTutorialInstance. Copie la dirección IP en Public IPv4 DNS (DNS IPv4 público).

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

      3. En SSH Keyfile (Archivo de claves SSH), elija el archivo de par de claves SecretsManagerTutorialKeyPair.pem que descargó en el requisito previo anterior.

      4. 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).

      5. En Username (Nombre de usuario), ingrese admin.

    4. Seleccione Aceptar.

Para recuperar la contraseña de administrador
  1. En la consola de Amazon RDS, acceda a su base de datos.

  2. 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.

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

  4. 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.

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

  3. 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 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 enhttps://console.aws.amazon.com/secretsmanager/.

  2. Elija Almacenar un secreto nuevo.

  3. 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).

    2. 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.

    3. En Database (Base de datos), elija secretsmanagertutorialdb.

    4. Elija Siguiente.

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

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

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

    2. 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).

    3. 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.

    4. En Utilizar credenciales individuales, elija , y luego en Secretos, elija el secreto llamado rds!cluster… 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.

    5. Elija Siguiente.

  6. 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 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 termina, el banner cambia a Secret scheduled for rotation (Secreto programado para rotación). Se completó la primera rotación.

Paso 3: pruebe el secreto rotado

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/.

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

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

  4. 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, luego, elija Edit Connection (Editar conexión).

  2. 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).

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

  4. 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

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 Configuración de la rotación de un solo usuario para AWS Secrets Manager.

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 (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 en la Guía del usuario de Amazon EC2.

  • Secreto SecretsManagerTutorialAppuser de Secrets Manager. Para obtener instrucciones, consulte Eliminación de un secreto de AWS Secrets Manager.

  • Punto de conexión de Secrets Manager. Para obtener instrucciones, consulte Delete a VPC endpoint (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 (Eliminar su VPC) en la Guía de AWS PrivateLink.

Siguientes pasos