Mover las credenciales de base de datos codificadas a 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.

Mover las credenciales de base de datos codificadas a AWS Secrets Manager

Si tienes credenciales de base de datos de texto sin formato en el código, te recomendamos que muevas las credenciales a Secrets Manager y luego las rotes inmediatamente. Al mover las credenciales a Secrets Manager se soluciona el problema de que sean visibles para cualquiera que vea el código porque, en el futuro, el código recupera las credenciales directamente de Secrets Manager. Al rotar el secreto se actualiza la contraseña y, a continuación, se anula la contraseña codificada actual para que ya no sea válida.

Para Amazon RDS, Amazon Redshift y Amazon DocumentDB, siga los pasos de esta página para mover credenciales codificadas a Secrets Manager. Para otro tipo de credenciales y otros secretos, consulte Mueva los secretos codificados a AWS Secrets Manager.

Antes de comenzar, debe determinar quién necesita acceso al secreto. Recomendamos utilizar dos roles de IAM para administrar el permiso a su secreto:

  • Un rol que administra los secretos de su organización. Para obtener más información, consulte Permisos de Secrets Manager. Creará y rotará el secreto utilizando este rol.

  • Un rol que puede usar las credenciales en tiempo de ejecución, RoleToRetrieveSecretAtRuntimeen este tutorial. El código asume esta función para recuperar el secreto.

Paso 1: Crear el secreto

El primer paso consiste en copiar las credenciales codificadas existentes en un secreto en Secrets Manager. Para obtener la menor latencia, guarde el secreto en la misma región que la base de datos.

Para crear un secreto
  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 secreto), elija el tipo de credenciales de base de datos que desea almacenar:

      • Bases de datos de Amazon RDS

      • Base de datos de Amazon DocumentDB

      • Almacén de datos de Amazon Redshift.

      • Para otro tipo de secretos, consulte Reemplazar secretos codificados .

    2. En Credenciales, ingrese las credenciales existentes para la base de datos.

    3. Para Clave encriptada, seleccione aws/secretsmanager para utilizar Clave administrada de AWS para Secrets Manager. No se aplica ningún cargo por el uso de esta clave. También puede utilizar su propia clave administrada por el cliente, por ejemplo, para acceder al secreto desde otro Cuenta de AWS. Para obtener información sobre los costos por usar una clave administrada por el cliente, consulte Precios.

    4. En Database (Base de datos), elija la base de datos.

    5. Elija Siguiente.

  4. En la página Configure secret (Configurar el secreto), haga lo siguiente:

    1. Ingrese un Nombre de secreto descriptivo y una Descripción.

    2. En Permisos de recursos, seleccione Edit permissions (Editar permisos). Pegue la siguiente política, que permite RoleToRetrieveSecretAtRuntimerecuperar el secreto y, a continuación, seleccione Guardar.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountId:role/RoleToRetrieveSecretAtRuntime" }, "Action": "secretsmanager:GetSecretValue", "Resource": "*" } ] }
    3. En la parte inferior de la página, elija Siguiente.

  5. En la página Configure rotation (Configurar rotación), mantenga la rotación desactivada por ahora. La activará más tarde. Elija Siguiente.

  6. En la página Review (Revisar), revise los detalles del secreto y, a continuación, elija Store (Almacenar).

Paso 2: Actualización del código

El código debe asumir la función de IAM RoleToRetrieveSecretAtRuntimepara poder recuperar el secreto. Para obtener más información, consulte Cambiar a un rol de IAM (AWS API).

A continuación, actualice el código para recuperar el secreto de Secrets Manager utilizando el código de ejemplo proporcionado por Secrets Manager.

Para encontrar el código de muestra
  1. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  2. En la página Secrets (Secretos), elija el secreto.

  3. Baje hasta Código de muestra. Elija su idioma y, a continuación, copie el fragmento de código.

En la aplicación, elimine las credenciales codificadas y pegue el fragmento de código. Según el idioma del código, es posible que tenga que añadir una llamada a la función o método del fragmento.

Compruebe que su aplicación funciona según lo esperado con el secreto en lugar de las credenciales codificadas.

Paso 3: rote el secreto

El último paso es anular las credenciales codificadas rotando el secreto. La rotación es el proceso de actualización periódica de un secreto. Cuando se rota un secreto, se actualizan las credenciales tanto en el secreto como en la base de datos. Secrets Manager puede configurar la rotación de un secreto automáticamente en el horario que usted establezca.

Parte de la configuración de la rotación consiste en garantizar que la función de rotación de Lambda pueda acceder tanto a Secrets Manager como a su base de datos. Cuando activa la rotación automática, Secrets Manager crea la función de rotación Lambda en la misma VPC que la base de datos para que tenga acceso en red a la base de datos. La función de rotación de Lambda también debe poder realizar llamadas a Secrets Manager para actualizar el secreto. Le recomendamos que cree un punto final de Secrets Manager en la VPC para que las llamadas de Lambda a Secrets Manager no salgan de la infraestructura. AWS Para ver instrucciones, consulte Uso de un punto de conexión de VPC de AWS Secrets Manager.

Activar la rotación
  1. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  2. En la página Secrets (Secretos), elija el secreto.

  3. En la página Secret details (Detalles del secreto), en la sección Rotation configuration (Configuración de la rotación), elija Edit rotation (Editar rotación).

  4. En el cuadro de diálogo Edit rotation configuration (Configuración para editar la rotación), haga lo siguiente:

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

    2. En la sección Programación de rotación, ingrese su horario en la zona horaria UTC.

    3. Elija Rotate immediately when the secret is stored (Rotar inmediatamente cuando se almacene el secreto) a fin de rotar su secreto en cuanto guarde los cambios.

    4. En la sección Función de rotación, seleccione Create a new Lambda function (Crear una nueva función de Lambda) e ingrese un nombre para la nueva función. Secrets Manager agrega “SecretsManager” al principio del nombre de la función.

    5. Para la estrategia de rotación, elija un solo usuario.

    6. Seleccione Guardar.

Para comprobar que el secreto ha rotado
  1. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  2. Seleccione Secrets (Secretos) y luego elija el secreto.

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

    Si el valor secreto ha cambiado, la rotación se realizó correctamente. Si el valor secreto no ha cambiado, consulte Solución de problemas de rotación de los CloudWatch registros para ver la función de rotación.

Compruebe que su aplicación funciona según lo esperado con el secreto rotado.

Siguientes pasos

A continuación, algunas ideas a tener en cuenta después de eliminar un secreto codificado de su código: