Creación de credenciales de IAM temporales - Amazon Redshift

Creación de credenciales de IAM temporales

En esta sección, puede encontrar cómo configurar el sistema para generar credenciales temporales de usuario de base de datos basadas en IAM e iniciar sesión en la base de datos con las nuevas credenciales.

En líneas generales, el proceso es el siguiente:

  1. Paso 1: Crear un rol de IAM para el acceso de inicio de sesión único de IAM

    (Opcional) Puede autenticar a los usuarios para que obtengan acceso a una base de datos de Amazon Redshift integrando la autenticación de IAM y un proveedor de identidad (IdP) de terceros.

  2. Paso 2: Configurar aserciones SAML para su IdP

    (Opcional) Para usar la autenticación de IAM mediante un IdP, necesita definir una regla de notificación en la aplicación de su IdP que asigne los usuarios o grupos de su organización a un rol de IAM. Opcionalmente, puede incluir elementos de atributo para definir parámetros GetClusterCredentials.

  3. Paso 3: Crear un rol de IAM con permisos para llamar a GetClusterCredentials

    La aplicación de cliente de SQL asume el usuario cuando llama a la operación GetClusterCredentials. Si ha creado un rol de IAM para el acceso al proveedor de identidad, puede agregar el permiso necesario a ese rol.

  4. Paso 4: Crear un usuario de base de datos y grupos de usuarios de base de datos

    (Opcional) De forma predeterminada, GetClusterCredentials devuelve credenciales crear un nuevo usuario si el nombre de usuario no existe. También puede elegir especificar grupos de usuarios a los que se unan los usuarios cuando inicien sesión. De forma predeterminada, los usuarios de la base de datos se unen al grupo PUBLIC.

  5. Paso 5: Configurar una conexión JDBC u ODBC para usar credenciales de IAM

    Para conectarse a la base de datos de Amazon Redshift, tiene que configurar el cliente SQL para que use un controlador JDBC u ODBC de Amazon Redshift.

Paso 1: Crear un rol de IAM para el acceso de inicio de sesión único de IAM

Si no utiliza un proveedor de identidad para el acceso de inicio de sesión único, puede omitir este paso.

Si ya administra las identidades de los usuarios fuera de AWS, puede autenticar a los usuarios para que tengan acceso a una base de datos de Amazon Redshift integrando la autenticación de IAM y un proveedor de identidad (IdP) SAML-2.0 de terceros.

Para obtener más información, consulte Federación y proveedores de identidades en la Guía del usuario de IAM.

Antes de poder utilizar la autenticación de IdP de Amazon Redshift, cree un proveedor de identidad SAML de AWS. El IdP se crea en la consola de IAM para informar a AWS del IdP y de su configuración. Esto establece una relación de confianza entre la cuenta de AWS y el IdP. Si desea ver los pasos necesarios para crear un rol, consulte Creación de un rol para una federación SAML 2.0 (consola) en la Guía del usuario de IAM.

Paso 2: Configurar aserciones SAML para su IdP

Después de crear el rol de IAM, necesita definir una regla de reclamación en la aplicación de su IdP que asigne los usuarios o grupos de su organización al rol de IAM. Para obtener más información, consulte Configuración de aserciones SAML para la respuesta de autenticación en la Guía del usuario de IAM.

Si elige utilizar los parámetros GetClusterCredentials opcionales DbUser, AutoCreate, y DbGroups, tiene dos opciones. Puede establecer los valores de los parámetros con su conexión JDBC u ODBC, o bien puede establecer los valores agregando elementos de atributo SAML a su IdP. Para obtener más información acerca de los parámetros DbUser, AutoCreate y DbGroups, consulte Paso 5: Configurar una conexión JDBC u ODBC para usar credenciales de IAM.

nota

Si utiliza una variable de política de IAM ${redshift:DbUser}, como se describe en Políticas de recursos de GetClusterCredentials, el valor de DbUser se sustituye por el valor obtenido por el contexto de la solicitud de la operación de la API. Los controladores de Amazon Redshift utilizan el valor de la variable DbUser proporcionado por la URL de conexión en lugar del valor proporcionado como atributo SAML.

Para ayudar a proteger esta configuración, recomendamos que utilice una condición en una política de IAM para validar el valor de DbUser con el RoleSessionName. Puede encontrar ejemplos de cómo establecer una condición utilizando una política de IAM en Política de ejemplo para usar GetClusterCredentials.

Para configurar el IdP para que establezca los parámetros DbUser, AutoCreate y DbGroups, incluya los siguientes elementos de Attribute:

  • Un elemento Attribute con el atributo Name establecido en "https://redshift.amazon.com/SAML/Attributes/DbUser"

    Establezca el elemento AttributeValue en el nombre del usuario que se va a conectar a la base de datos de Amazon Redshift.

    El valor del elemento AttributeValue debe estar en mayúsculas, empezar por una letra, contener solo caracteres alfanuméricos, guion bajo ('_'), signo más ('+'), punto ('.'), arroba ('@') o guion ('-') y tener menos de 128 caracteres. Normalmente, el nombre de usuario es un ID de usuario (por ejemplo, bobsmith) o una dirección de correo electrónico (por ejemplo, bobsmith@example.com). El valor no puede incluir un espacio (por ejemplo, un nombre de visualización de un usuario como Bob Smith).

    <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>user-name</AttributeValue> </Attribute>
  • Un elemento Attribute con el atributo Name establecido en "https://redshift.amazon.com/SAML/Attributes/AutoCreate"

    Establezca el elemento AttributeValue en true para crear un nuevo usuario de base de datos si no existe ninguno. Establezca el elemento AttributeValue en false para especificar que el usuario de la base de datos debe existir en la base de datos de Amazon Redshift.

    <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute>
  • Un elemento Attribute con el atributo Name establecido en "https://redshift.amazon.com/SAML/Attributes/DbGroups"

    Este elemento contiene uno o más elementos AttributeValue. Establezca cada elemento AttributeValue en un nombre de grupo de bases de datos al que DbUser debe unirse durante la sesión cuando se conecta a la base de datos de Amazon Redshift.

    <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group1</AttributeValue> <AttributeValue>group2</AttributeValue> <AttributeValue>group3</AttributeValue> </Attribute>

Paso 3: Crear un rol de IAM con permisos para llamar a GetClusterCredentials

El cliente SQL necesita autorización para llamar a la operación GetClusterCredentials en su nombre. Para proporcionar esta autorización, cree un usuario o rol y asocie una política que conceda los permisos necesarios.

Para crear un rol de IAM con permisos para llamar a GetClusterCredentials
  1. Mediante el servicio IAM, cree un usuario o rol. También puede utilizar un usuario o rol existente. Por ejemplo, si ha creado un rol de IAM para el acceso al proveedor de identidad, puede asociar las políticas de IAM necesarias a ese rol.

  2. Asocie una política de permisos con permiso para llamar a la operación redshift:GetClusterCredentials. En función de los parámetros opcionales que especifique, también puede permitir o restringir acciones y recursos adicionales en la política:

    • Para permitir que el cliente SQL recupere el ID de clúster, la región de AWS y el puerto, debe incluir el permiso para llamar a la operación redshift:DescribeClusters con el recurso del clúster de Redshift.

    • Si utiliza la opción AutoCreate, incluya el permiso para llamar a redshift:CreateClusterUser con el recurso dbuser. El siguiente formato de nombre de recurso de Amazon (ARN) especifica el dbuser de Amazon Redshift. Reemplace region, account-id y cluster-name por los valores correspondientes a su región, cuenta y clúster de AWS. Para dbuser-name, especifique el nombre de usuario que se utilizará para iniciar sesión en la base de datos del clúster.

      arn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name
    • (Opcional) Agregue un ARN que especifique el recurso dbname de Amazon Redshift en el siguiente formato. Reemplace region, account-id y cluster-name por los valores correspondientes a su región, cuenta y clúster de AWS. En database-name, especifique el nombre de una base de datos en la que el usuario va a iniciar sesión.

      arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
    • Si utiliza la opción DbGroups, incluya el permiso para llamar a la operación redshift:JoinGroup con el recurso dbgroup de Amazon Redshift en el siguiente formato. Reemplace region, account-id y cluster-name por los valores correspondientes a su región, cuenta y clúster de AWS. En dbgroup-name, especifique el nombre del grupo de usuarios al que se unirá el usuario cuando inicie sesión.

      arn:aws:redshift:region:account-id:dbgroup:cluster-name/dbgroup-name

Para obtener más información y ejemplos, consulte Políticas de recursos de GetClusterCredentials.

En el siguiente ejemplo, se muestra una política que permite al rol de IAM llamar a la operación GetClusterCredentials. La especificación del recurso dbuser de Amazon Redshift concede al rol acceso al nombre de usuario de base de datos temp_creds_user en el clúster denominado examplecluster.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/temp_creds_user" } }

Puede utilizar el carácter comodín (*) para sustituir todo o una parte del nombre del clúster, el nombre de usuario y los nombres de grupos de usuarios de base de datos. El siguiente ejemplo permite el acceso a cualquier usuario que empiece por temp_ a cualquier clúster en la cuenta especificada.

importante

En la instrucción del siguiente ejemplo, se especifica un carácter comodín (*) como parte del valor del recurso, de modo que la política admita cualquier recurso que comience por los caracteres especificados. Utilizar un carácter comodín en las políticas de IAM puede resultar demasiado permisivo. Como práctica recomendada, es conveniente utilizar la política más restrictiva posible en la aplicación empresarial.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:us-west-2:123456789012:dbuser:*/temp_*" } }

El siguiente ejemplo muestra una política que permite al rol de IAM llamar a la operación GetClusterCredentials con la opción para crear automáticamente un nuevo usuario y especificar los grupos a los que se une el usuario al iniciar sesión. La cláusula "Resource": "*" concede al rol acceso a cualquier recurso, incluidos clústeres, usuarios de bases de datos o grupos de usuarios.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials", "redshift:CreateClusterUser", "redshift:JoinGroup" ], "Resource": "*" } }

Para obtener más información, consulte Sintaxis de ARN de Amazon Redshift.

Paso 4: Crear un usuario de base de datos y grupos de usuarios de base de datos

De manera opcional, puede crear un usuario de base de datos que utilice para iniciar sesión en la base de datos del clúster. Si crea credenciales de usuario temporales para un usuario existente, puede deshabilitar la contraseña del usuario para obligar al usuario a que inicie sesión con la contraseña temporal. También puede usar la opción Autocreate de GetClusterCredentials para crear automáticamente un nuevo usuario de base de datos.

Puede utilizar los permisos que quiera para crear los grupos de usuarios de base de datos a los que el usuario de base de datos de IAM se va a unir al iniciar sesión. Cuando llama a la operación GetClusterCredentials, puede especificar una lista de nombres de grupos de usuarios a los que se une el usuario cuando inicia sesión. Esta pertenencia a grupos solo es válida para las sesiones creadas utilizando las credenciales generadas con la solicitud especificada.

Para crear un usuario y grupos de usuarios de base de datos
  1. Inicie sesión en la base de datos de Amazon Redshift y cree un usuario de base de datos mediante CREATE USER o modifique un usuario existente mediante ALTER USER.

  2. Si lo desea, especifique la opción PASSWORD DISABLE para impedir que el usuario utilice una contraseña. Cuando se deshabilita la contraseña de un usuario, el usuario solo puede iniciar sesión con credenciales temporales. Si la contraseña no está deshabilitada, el usuario puede iniciar sesión con la contraseña o con las credenciales temporales. No puede deshabilitar la contraseña de un super usuario.

    Los usuarios necesitan acceso programático si desean interactuar con AWS fuera de la AWS Management Console. La forma de conceder el acceso programático depende del tipo de usuario que acceda a AWS.

    Para conceder acceso programático a los usuarios, seleccione una de las siguientes opciones.

    ¿Qué usuario necesita acceso programático? Para Mediante

    Identidad del personal

    (Usuarios administrados en el IAM Identity Center)

    Utilice credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS.

    Siga las instrucciones de la interfaz que desea utilizar:

    IAM Utilice credenciales temporales para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK y las API de AWS. Siguiendo las instrucciones de Uso de credenciales temporales con recursos de AWS de la Guía del usuario de IAM.
    IAM

    (No recomendado)

    Utilizar credenciales a largo plazo para firmar las solicitudes programáticas a la AWS CLI, los AWS SDK o las API de AWS.

    Siga las instrucciones de la interfaz que desea utilizar:

    El siguiente ejemplo crea un usuario con la contraseña deshabilitada.

    create user temp_creds_user password disable;

    El siguiente ejemplo deshabilita la contraseña de un usuario existente.

    alter user temp_creds_user password disable;
  3. Cree grupos de usuarios de base de datos mediante CREATE GROUP.

  4. Utilice el comando GRANT para definir privilegios de acceso para los grupos.

Paso 5: Configurar una conexión JDBC u ODBC para usar credenciales de IAM

Puede configurar su cliente SQL con un controlador JDBC u ODBC de Amazon Redshift. Este controlador administra el proceso de creación de credenciales de usuario de la base de datos y establecimiento de una conexión entre el cliente SQL y la base de datos de Amazon Redshift.

Si usa un proveedor de identidad para la autenticación, especifique el nombre de un complemento de proveedor de credenciales. Los controladores JDBC y ODBC de Amazon Redshift incluyen complementos para los siguientes proveedores de identidad basados en SAML:

Para configurar una conexión JDBC para usar las credenciales de IAM
  1. Descargue el controlador JDBC de Amazon Redshift más reciente de la página Configuración de una conexión del controlador JDBC versión 2.1 para Amazon Redshift.

  2. Cree una URL de JDBC con las opciones de credenciales de IAM en uno de los siguientes formatos. Para usar la autenticación de IAM, agregue iam: a la URL de JDBC de Amazon Redshift detrás de jdbc:redshift:, como se muestra en el siguiente ejemplo.

    jdbc:redshift:iam://

    Agregue cluster-name, region y account-id. El controlador JDBC usa la información de su cuenta de IAM y el nombre del clúster para recuperar el ID del clúster y la región de AWS. Para ello, el usuario o rol debe tener permiso para llamar a la operación redshift:DescribeClusters con el clúster especificado. Si el usuario o el rol no tiene permiso para llamar a la operación redshift:DescribeClusters, incluya el ID del clúster, la región de AWS y el puerto como se muestra en el siguiente ejemplo. El número de puerto es opcional.

    jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
  3. Agregue opciones de JDBC para proporcionar las credenciales de IAM. Para proporcionar las credenciales de IAM se usan diferentes combinaciones de opciones de JDBC. Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.

    La siguiente URL especifica AccessKeyID y SecretAccessKey para un usuario.

    jdbc:redshift:iam://examplecluster:us-west-2/dev?AccessKeyID=AKIAIOSFODNN7EXAMPLE&SecretAccessKey=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

    En el siguiente ejemplo, se especifica un perfil con nombre que contiene las credenciales de IAM.

    jdbc:redshift:iam://examplecluster:us-west-2/dev?Profile=user2
  4. Agregue las opciones JDBC que utiliza el controlador JDBC para llamar a la operación de la API GetClusterCredentials. No incluya estas opciones si llama a la operación de la API GetClusterCredentials mediante programación.

    El siguiente ejemplo incluye las opciones GetClusterCredentials de JDBC.

    jdbc:redshift:iam://examplecluster:us-west-2/dev?plugin_name=com.amazon.redshift.plugin.AzureCredentialsProvider&UID=user&PWD=password&idp_tenant=my_tenant&client_secret=my_secret&client_id=my_id
Para configurar una conexión ODBC para usar las credenciales de IAM

En el procedimiento siguiente, sólo puede encontrar pasos para configurar la autenticación de IAM. Para ver el procedimiento para usar la autenticación estándar, que usa un nombre de usuario y una contraseña de la base de datos, consulte Configuración de una conexión del controlador ODBC versión 2.x para Amazon Redshift.

  1. Instale y configure el controlador ODBC de Amazon Redshift más reciente para su sistema operativo. Para obtener más información, consulte la página Configuración de una conexión del controlador ODBC versión 2.x para Amazon Redshift.

    importante

    La versión del controlador ODBC de Amazon Redshift debe ser 1.3.6.1000 o posterior.

  2. Siga los pasos correspondientes a su sistema operativo para configurar las opciones de conexión.

  3. En los sistemas operativos Microsoft Windows, acceda a la ventana “Amazon Redshift ODBC Driver DSN Setup” (Configuración de DSN del controlador ODBC de Amazon Redshift).

    1. En Connection Settings (Configuración de conexión), escriba la siguiente información:

      • Data Source Name

      • Server (Servidor) (opcional)

      • Port (Puerto) (opcional)

      • Base de datos

      Si el usuario o el rol tiene permiso para llamar a la operación redshift:DescribeClusters, solo son necesarios Nombre del origen de datos y Base de datos. Amazon Redshift utiliza ClusterId y Region (Región) para obtener el servidor y el puerto llamando a la operación DescribeCluster.

      Si el usuario o el rol no tiene permiso para llamar a la operación redshift:DescribeClusters, proporcione especifique Servidor y Puerto.

    2. En Autenticación, elija un valor para Tipo de autenticación.

      Para cada tipo de autenticación, introduzca los valores que se enumeran a continuación:

      Perfil de AWS

      Introduzca la información siguiente:

      • ID del clúster

      • Region

      • Nombre del perfil

        Ingrese el nombre de un perfil en un archivo de configuración de AWS que contenga valores para las opciones de conexión de ODBC. Para obtener más información, consulte Uso de un perfil de configuración.

      (Opcional) Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      Credenciales de IAM

      Introduzca la información siguiente:

      • ID del clúster

      • Region

      • AccessKeyID (ID de clave de acceso) y SecretAccessKey (Clave de acceso secreta)

        El ID de clave de acceso y la clave de acceso secreta del rol de IAM configurado para la autenticación de la base de datos de IAM.

      • SessionToken

        SessionToken (Token de sesión) es obligatorio para las funciones de IAM con credenciales temporales. Para obtener más información, consulte Credenciales de seguridad temporales.

      Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      Proveedor de identidad: AD FS

      Para la autenticación integrada de Windows con AD FS, deje User (Usuario) y Password (Contraseña) vacíos.

      Proporcione los detalles del IdP:

      • IdP Host (Host del proveedor de identidades)

        El nombre del host del proveedor de identidad corporativo. Este nombre no debe incluir barras diagonales ( / ).

      • IdP Port (Puerto del proveedor de identidades) (opcional)

        El puerto usado por el proveedor de identidad. El valor predeterminado es 443.

      • Preferred Role (Función preferida)

        El nombre de recurso de Amazon (ARN) de un rol de IAM obtenido de los elementos AttributeValue de varios valores del atributo Role en la aserción SAML. Póngase en contacto con el administrador de su IdP para encontrar el valor adecuado para el rol preferido. Para obtener más información, consulte Paso 2: Configurar aserciones SAML para su IdP.

      (Opcional) Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creación automática de usuarios)

      • DbGroups

      Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.

      Proveedor de identidades: PingFederate

      En User (Usuario) y Password (Contraseña), introduzca el nombre de usuario y la contraseña del IdP.

      Proporcione los detalles del IdP:

      • IdP Host (Host del proveedor de identidades)

        El nombre del host del proveedor de identidad corporativo. Este nombre no debe incluir barras diagonales ( / ).

      • IdP Port (Puerto del proveedor de identidades) (opcional)

        El puerto usado por el proveedor de identidad. El valor predeterminado es 443.

      • Preferred Role (Función preferida)

        El nombre de recurso de Amazon (ARN) de un rol de IAM obtenido de los elementos AttributeValue de varios valores del atributo Role en la aserción SAML. Póngase en contacto con el administrador de su IdP para encontrar el valor adecuado para el rol preferido. Para obtener más información, consulte Paso 2: Configurar aserciones SAML para su IdP.

      (Opcional) Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creación automática de usuarios)

      • DbGroups

      Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.

      Proveedor de identidades: Okta

      En User (Usuario) y Password (Contraseña), introduzca el nombre de usuario y la contraseña del IdP.

      Proporcione los detalles del IdP:

      • IdP Host (Host del proveedor de identidades)

        El nombre del host del proveedor de identidad corporativo. Este nombre no debe incluir barras diagonales ( / ).

      • IdP Port (Puerto del proveedor de identidades)

        Este valor no es utilizado por Okta.

      • Preferred Role (Función preferida)

        Un nombre de recurso de Amazon (ARN) de un rol de IAM obtenido de los elementos AttributeValue del atributo Role en la aserción SAML. Póngase en contacto con el administrador de su IdP para encontrar el valor adecuado para el rol preferido. Para obtener más información, consulte Paso 2: Configurar aserciones SAML para su IdP.

      • Okta App ID (ID de aplicación Okta)

        Un ID de una aplicación Okta. El valor de App ID se incluye detrás de "amazon_aws" en el enlace incrustado de la aplicación Okta. Póngase en contacto con el administrador de su IdP para obtener este valor.

      (Opcional) Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creación automática de usuarios)

      • DbGroups

      Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.

      Proveedor de identidades: Azure AD

      En User (Usuario) y Password (Contraseña), introduzca el nombre de usuario y la contraseña del IdP.

      En Cluster ID (ID de clúster) y Region (Región), ingrese el ID de clúster y la región de AWS del clúster de Amazon Redshift.

      En Database (Base de datos), ingrese la base de datos que creó para el clúster de Amazon Redshift.

      Proporcione los detalles del IdP:

      • Arrendatario de IdP

        El inquilino utilizado para Azure AD.

      • Secreto de cliente de Azure

        El secreto del cliente de la aplicación para empresas de Amazon Redshift en Azure.

      • ID de cliente de Azure

        El ID del cliente (ID de la aplicación) de la aplicación para empresas de Amazon Redshift en Azure.

      (Opcional) Proporcione detalles de las opciones que utiliza el controlador ODBC para llamar a la operación de la API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creación automática de usuarios)

      • DbGroups

      Para obtener más información, consulte Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos.