Generación de credenciales de base de datos para una identidad de IAM mediante la CLI o la API de Amazon Redshift - Amazon Redshift

Generación de credenciales de base de datos para una identidad de IAM mediante la CLI o la API de Amazon Redshift

Para generar credenciales temporales de usuario de base de datos mediante programación, Amazon Redshift proporciona el comando get-cluster-credentials para la AWS Command Line Interface (AWS CLI) y la operación de la API GetClusterCredentials. También puede configurar su cliente SQL con controladores JDBC u ODBC de Amazon Redshift que administren el proceso de llamar a la operación GetClusterCredentials, recuperar las credenciales de usuario de base de datos y establecer una conexión entre su cliente SQL y la base de datos de Amazon Redshift. Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.

nota

Recomendamos el uso de controladores JDBC u ODBC de Amazon Redshift para generar credenciales de usuario de base de datos.

En esta sección, encontrará los pasos para llamar mediante programación a la operación GetClusterCredentials o el comando get-cluster-credentials, recuperar las credenciales de usuario de base de datos y conectarse a la base de datos.

Para generar y usar credenciales temporales de base de datos
  1. Cree o modifique un usuario o rol con los permisos necesarios. Para obtener más información sobre los permisos de IAM, consulte Paso 3: Crear un rol de IAM con permisos para llamar a GetClusterCredentials.

  2. Como el usuario o el rol que autorizó en el paso anterior, ejecute el comando de la CLI get-cluster-credentials o llame a la operación de la API GetClusterCredentials y proporcione los siguientes valores:

    • Identificador del clúster: nombre del clúster que contiene la base de datos.

    • Nombre de usuario de base de datos: nombre de un usuario de base de datos nuevo o existente.

      • Si el usuario no existe en la base de datos y AutoCreate está establecido en true, se crea un nuevo usuario con la contraseña deshabilitada.

      • Si el usuario no existe y AutoCreate está establecido en false, la solicitud produce un error.

      • En este ejemplo, el nombre de usuario de base de datos es temp_creds_user.

    • Creación automática (opcional): crea un usuario nuevo si el nombre de usuario de base de datos no existe.

    • Nombre de base de datos (opcional): nombre de la base de datos en la que el usuario tiene autorización para iniciar sesión. Si no se especifica el nombre de la base de datos, el usuario puede iniciar sesión en cualquier base de datos del clúster.

    • Grupos de bases de datos (opcional): lista de grupos de usuarios de bases de datos existentes. Tras iniciar sesión correctamente, el usuario de base de datos se agrega a los grupos de usuarios especificados. Si no se especifica ningún grupo, el usuario sólo tiene permisos PUBLIC. Los nombres de los grupos de usuarios deben coincidir con los ARN de los recursos de dbgroup especificados en la política de IAM asociada al usuario o rol.

    • Fecha de vencimiento (opcional): fecha de vencimiento, en segundos, de las credenciales temporales. Puede especificar un valor comprendido entre 900 segundos (15 minutos) y 3 600 segundos (60 minutos). El valor predeterminado es de 900 segundos.

  3. Amazon Redshift verifica que el usuario tenga permiso para llamar a la operación GetClusterCredentials con los recursos especificados.

  4. Amazon Redshift devuelve una contraseña temporal y el nombre de usuario de la base de datos.

    En el siguiente ejemplo, se utiliza la CLI de Amazon Redshift para generar credenciales temporales de base de datos para un usuario existente denominado temp_creds_user.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600

    El resultado es el siguiente.

    {
      "DbUser": "IAM:temp_creds_user", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }

    En el siguiente ejemplo, se utiliza la CLI de Amazon Redshift para crear automáticamente credenciales temporales de base de datos para un usuario nuevo y agregar el usuario al grupo example_group.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600

    El resultado es el siguiente.

    {
      "DbUser": "IAMA:temp_creds_user:example_group", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }
  5. Establezca una conexión de autenticación de capa de conexión segura (SSL) con el clúster de Amazon Redshift y envíe una solicitud de inicio de sesión con el nombre de usuario y la contraseña de la respuesta de GetClusterCredentials. Incluya el prefijo IAM: o IAMA: con el nombre de usuario; por ejemplo IAM:temp_creds_user o IAMA:temp_creds_user.

    importante

    Configure el cliente SQL para que requiera SSL. En caso contrario, si el cliente SQL intenta conectarse automáticamente con SSL, puede cambiar a una conexión distinta de SSL en caso de que se produzca algún error. En tal caso, el primer intento de conexión podría producir un error porque las credenciales han caducado o no son válidas, y el segundo intento de conexión podría producir un error porque la conexión no es SSL. Si eso ocurre, el primer mensaje de error podría pasarse por alto. Para obtener más información acerca de la conexión al clúster mediante SSL, consulte Configuración de las opciones de seguridad para las conexiones.

  6. Si la conexión no usa SSL, el intento de conexión produce un error.

  7. El clúster envía una solicitud authentication al cliente SQL.

  8. El cliente SQL envía entonces la contraseña temporal al clúster.

  9. Si la contraseña es válida y no ha caducado, el clúster realiza la conexión.