Administración de las contraseñas de administrador de Amazon Redshift mediante AWS Secrets Manager - Amazon Redshift

Administración de las contraseñas de administrador de Amazon Redshift mediante AWS Secrets Manager

Amazon Redshift se puede integrar con AWS Secrets Manager para generar y administrar sus credenciales de administrador dentro de un secreto cifrado. Con AWS Secrets Manager, puede sustituir sus contraseñas de administrador por una llamada a la API para recuperar el secreto mediante programación cuando sea necesario. Usar secretos en lugar de credenciales con codificación rígida reduce el riesgo de que dichas credenciales queden expuestas o se vean comprometidas. Para obtener más información sobre AWS Secrets Manager, consulte la Guía del usuario de AWS Secrets Manager.

Puede especificar que Amazon Redshift administre la contraseña de administrador con AWS Secrets Manager cuando realice una de las siguientes operaciones:

  • Crear un clúster aprovisionado o un espacio de nombres sin servidor.

  • Restaurar un clúster o un espacio de nombres sin servidor a partir de una instantánea.

Al especificar que Amazon Redshift administre la contraseña de administrador en AWS Secrets Manager, Amazon Redshift genera la contraseña y la almacena en Secrets Manager. Puede acceder al secreto directamente en AWS Secrets Manager para recuperar las credenciales del usuario administrador. Si lo desea, también puede especificar una clave administrada por el cliente para cifrar el secreto si necesita acceder a él desde otra cuenta de AWS. También puede usar la clave de KMS que proporciona AWS Secrets Manager.

Amazon Redshift administra la configuración del secreto y lo rota cada 30 días de forma predeterminada. Puede rotar el secreto manualmente en cualquier momento. Si elimina un clúster aprovisionado o un espacio de nombres sin servidor que administra un secreto en AWS Secrets Manager, también se eliminarán el secreto y sus metadatos asociados.

Para conectarse a un clúster o espacio de nombres sin servidor con las credenciales administradas de forma secreta, puede recuperar el secreto de AWS Secrets Manager desde la consola de Secrets Manager o la llamada a la API GetSecretValue de Secrets Manager. Para obtener más información, consulte Recuperar secretos de AWS Secrets Manager y Conexión a una base de datos SQL con credenciales en un secreto de AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

Permisos necesarios para la integración de AWS Secrets Manager

Los usuarios deben tener los permisos necesarios para realizar las operaciones relacionadas con la integración de AWS Secrets Manager. Cree políticas de IAM que concedan permisos para realizar operaciones de la API concretas en los recursos especificados que necesiten. A continuación, asocie esas políticas a los roles o conjuntos de permisos de IAM que necesiten esos permisos. Para obtener más información, consulte Administración de identidades y accesos en Amazon Redshift.

El usuario que especifica que Amazon Redshift administre la contraseña de administrador en AWS Secrets Manager debe tener permisos para realizar las siguientes operaciones:

  • secretsmanager:CreateSecret

  • secretsmanager:RotateSecret

  • secretsmanager:DescribeSecret

  • secretsmanager:UpdateSecret

  • secretsmanager:DeleteSecret

  • secretsmanager:GetRandomPassword

  • secretsmanager:TagResource

Si el usuario quiere introducir una clave de KMS en el parámetro MasterPasswordSecretKmsKeyId de los clústeres aprovisionados o en el parámetro AdminPasswordSecretKmsKeyId de los espacios de nombres sin servidor, necesitará los siguientes permisos además de los permisos enumerados anteriormente.

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:CreateGrant

  • kms:RetireGrant

Rotación del secreto de la contraseña de administrador

De forma predeterminada, Amazon Redshift rota automáticamente el secreto cada 30 días para garantizar que sus credenciales no permanezcan iguales durante períodos prolongados. Cuando Amazon Redshift rota el secreto de una contraseña de administrador, AWS Secrets Manager actualiza el secreto existente para incluir una nueva contraseña de administrador. Amazon Redshift cambia la contraseña de administrador del clúster para que coincida con la contraseña del secreto actualizado.

Puede rotar un secreto inmediatamente con AWS Secrets Manager en lugar de esperar a que se programe una rotación. Para obtener más información acerca de la rotación de secretos, consulte Rotar secretos de AWS Secrets Manager en la Guía del usuario de AWS Secrets Manager.

Recuperación del nombre de recurso de Amazon (ARN) del secreto en Amazon Redshift

Puede ver el nombre de recurso de Amazon (ARN) de cualquier secreto que administre AWS Secrets Manager desde la consola de Amazon Redshift. Una vez que tenga el ARN del secreto, podrá ver los detalles de su secreto y los datos cifrados de su secreto con AWS Secrets Manager. Para obtener más información sobre cómo recuperar secretos con el ARN, consulte Recuperar secretos en la Guía del usuario de AWS Secrets Manager.

Visualización de los detalles de un secreto para un clúster aprovisionado por Amazon Redshift

Para ver el nombre de recurso de Amazon (ARN) del secreto del clúster desde la consola de Amazon Redshift, siga este procedimiento:

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Redshift.

  2. En el panel de Información general acerca del clúster, elija el clúster cuyo secreto desea ver.

  3. Elija la pestaña Propiedades.

  4. Puede ver el ARN del secreto en ARN de credenciales de administrador. Este ARN es el identificador del secreto, que puede utilizar en AWS Secrets Manager para ver los detalles del secreto.

Visualización de los detalles de un secreto para un espacio de nombres de Amazon Redshift sin servidor

Para ver el nombre de recurso de Amazon (ARN) del secreto del espacio de nombres sin servidor desde la consola de Amazon Redshift, siga este procedimiento:

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Redshift.

  2. En el panel Clústeres aprovisionados, elija Ir a la solución sin servidor en la parte superior derecha de la página.

  3. En Panel de la solución sin servidor, desplácese hasta el panel Espacios de nombres / Grupos de trabajo y elija el espacio de nombres cuyo secreto desea ver.

  4. En el panel Información general, consulte el ARN del secreto en ARN de credenciales de administrador. Este ARN es el identificador del secreto, que puede utilizar en AWS Secrets Manager para ver los detalles del secreto.

Creación de un secreto para las credenciales de conexión a la base de datos

Puede crear un secreto de Secrets Manager para almacenar las credenciales utilizadas para conectarse a un clúster aprovisionado de Amazon Redshift o a un espacio de nombres y grupo de trabajo de Redshift sin servidor. También puede utilizar este secreto al programar una consulta en el editor de consultas de Amazon Redshift v2.

Creación de un secreto para una base de datos en un clúster aprovisionado por Amazon Redshift mediante la consola de Secrets Manager
  1. Abra la consola de Secrets Manager (https://console.aws.amazon.com/secretsmanager/).

  2. Vaya a la lista de Secretos y elija Almacenar un secreto nuevo.

  3. Elija Credenciales para el almacenamiento de datos de Amazon Redshift. Ingrese la información en los pasos para crear un secreto de la siguiente manera:

    • En Credenciales para Nombre de usuario, ingrese el nombre del usuario administrativo del almacenamiento de datos.

    • En Credenciales para Contraseña, ingrese la contraseña del Nombre de usuario.

    • En Clave de cifrado, elija la clave de cifrado.

    • Para Almacenamiento de datos, elija el clúster aprovisionado de Amazon Redshift que contiene los datos.

    • Para Nombre del secreto, ingrese un nombre para el secreto.

    • Para Descripción, escriba una descripción del secreto.

    • Para Etiquetas, ingrese una Clave de etiqueta con la palabra Redshift. Esta clave de etiqueta es necesaria para mostrar los secretos cuando intenta conectarse al almacenamiento de datos mediante el editor de consultas de Amazon Redshift v2. El secreto también debe tener una clave de etiqueta que empiece por la cadena Redshift para que el secreto se muestre en AWS Secrets Manager en la consola de administración.

  4. Siga ingresando la información sobre el secreto a través de varios pasos hasta Almacenar los cambios en el paso Revisar.

    Los valores específicos de las credenciales, el motor, el host, el puerto y el identificador de clúster se almacenan en el secreto. Además, el secreto está etiquetado con la clave de la etiqueta Redshift.

Creación de un secreto para una base de datos en un espacio de nombres de Redshift sin servidor mediante la consola de Redshift sin servidor
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Redshift en https://console.aws.amazon.com/redshiftv2/.

  2. Elija Redshift sin servidor y vaya a Configuración de espacio de nombres.

  3. Elija un espacio de nombres para el que desee crear las credenciales secretas.

  4. Abra Acciones, Editar credenciales de administrador.

  5. En Contraseña de administrador, seleccione Administrar credenciales de administrador en AWS Secrets Manager.

  6. Elija Guardar cambios para guardar los cambios.

Confirme que aparezca un mensaje que indique que la contraseña se ha cambiado correctamente. También puede ver el secreto en la consola de Secrets Manager. Puede usar este secreto para conectarse a una base de datos de un grupo de trabajo en la consola de Redshift sin servidor y el editor de consultas de Amazon Redshift v2 mediante el método de conexión de AWS Secrets Manager. El secreto también debe tener una clave de etiqueta que empiece por la cadena “Redshift” para que el secreto aparezca en la aplicación web del editor de consultas v2. El secreto también debe tener una clave de etiqueta que empiece por la cadena Redshift para que el secreto se muestre en AWS Secrets Manager en la consola de administración.

Creación de un secreto para una base de datos en un espacio de nombres de Redshift sin servidor mediante la consola de Secrets Manager
  1. Abra la consola de Secrets Manager (https://console.aws.amazon.com/secretsmanager/).

  2. Vaya a la lista de Secretos y elija Almacenar un secreto nuevo.

  3. Elija Credenciales para el almacenamiento de datos de Amazon Redshift. Ingrese la información en los pasos para crear un secreto de la siguiente manera:

    • En Credenciales para Nombre de usuario, ingrese el nombre del usuario administrativo del almacenamiento de datos.

    • En Credenciales para Contraseña, ingrese la contraseña del Nombre de usuario.

    • En Clave de cifrado, elija la clave de cifrado.

    • Para Almacenamiento de datos, elija el espacio de nombres de Redshift sin servidor que contiene los datos.

    • Para Nombre del secreto, ingrese un nombre para el secreto.

    • Para Descripción, escriba una descripción del secreto.

    • Para Etiquetas, ingrese una Clave de etiqueta con la palabra Redshift. Esta clave de etiqueta es necesaria para mostrar los secretos cuando intenta conectarse al almacenamiento de datos mediante el editor de consultas de Amazon Redshift v2. El secreto también debe tener una clave de etiqueta que empiece por la cadena Redshift para que el secreto se muestre en AWS Secrets Manager en la consola de administración.

  4. Siga ingresando la información sobre el secreto a través de varios pasos hasta Almacenar los cambios en el paso Revisar.

    Los valores específicos de las credenciales, el nombre de la base de datos, el host, el puerto, el espacio de nombres y el motor se almacenan en el secreto. Además, el secreto está etiquetado con la clave de la etiqueta Redshift.

Creación de un secreto para una base de datos en un espacio de nombres de Redshift sin servidor mediante la AWS CLI

Puede utilizar la AWS CLI para crear un secreto. Un método consiste en usar AWS CloudShell para ejecutar el comando de la AWS CLI de Secrets Manager de la siguiente manera. Debe tener los permisos adecuados para ejecutar los comandos de la AWS CLI que se muestran en el procedimiento siguiente.

  1. En la consola de AWS, abra el símbolo del sistema de AWS CloudShell. Para obtener más información acerca de AWS CloudShell, consulte ¿Qué es AWS CloudShell? en la Guía del usuario de AWS CloudShell.

  2. Por ejemplo, para el secreto MyTestSecret, ingrese un comando de Secrets Manager para almacenar el secreto que se utiliza para conectarse a una base de datos o programar una consulta del editor de consultas de Amazon Redshift v2. Sustituya los valores siguientes en el comando por valores para el entorno:

    • admin es el nombre de usuario del administrador del almacenamiento de datos.

    • passw0rd es la contraseña del administrador.

    • dev es el nombre inicial de la base de datos en el almacenamiento de datos.

    • region es la Región de AWS que contiene el almacenamiento de datos. Por ejemplo, us-east-1.

    • 123456789012 es la Cuenta de AWS.

    • namespace-id es el identificador del espacio de nombres similar a c3928f0e-c889-4d2b-97a5-5738324d5d3e. Puede encontrar este identificador en la página de detalles de la consola de Amazon Redshift del espacio de nombres sin servidor.

    aws secretsmanager create-secret \ --name MyTestSecret \ --description "My test secret created with the CLI." \ --secret-string "{\"username\":\"admin\",\"password\":\"passw0rd\",\"dbname\":\"dev\",\"engine\":\"redshift\"}" \ --tags "[{\"Key\":\"redshift-serverless:namespaceArn\",\"Value\":\"arn:aws:redshift-serverless:region:123456789012:namespace/namespace-id\"}]"

Consideraciones sobre el uso de AWS Secrets Manager con Amazon Redshift

Cuando utilice AWS Secrets Manager para administrar las credenciales de administrador del clúster aprovisionado o del espacio de nombres sin servidor, tenga en cuenta lo siguiente:

  • Si pausa un clúster cuyas credenciales de administrador las administra AWS Secrets Manager, el secreto del clúster no se eliminará y se le seguirá cobrando por él. Los secretos solo se eliminan cuando se elimina el clúster.

  • Si el clúster está pausado cuando Amazon Redshift intenta rotar el secreto que tiene asociado, la rotación fallará. En este caso, Amazon Redshift detiene la rotación automática y no intentará rotarlo de nuevo, incluso después de reanudar el clúster. Debe reiniciar el programa de rotación automática mediante la llamada a la API secretsmanager:RotateSecret para que AWS Secrets Manager siga rotando automáticamente el secreto.

  • Si su espacio de nombres sin servidor no tiene ningún grupo de trabajo asociado cuando Amazon Redshift intente rotar el secreto que tiene asociado, la rotación fallará y no volverá a intentar rotarlo, incluso después de adjuntar un grupo de trabajo. Debe reiniciar el programa de rotación automática mediante la llamada a la API secretsmanager:RotateSecret para que AWS Secrets Manager siga rotando automáticamente el secreto.