Opciones para proporcionar credenciales de IAM - Amazon Redshift

Opciones para proporcionar credenciales de IAM

Para proporcionar credenciales de IAM para una conexión JDBC u ODBC, elija una de las siguientes opciones.

  • Perfil de AWS

    Como alternativa a proporcionar valores de credenciales en forma de opciones de JDBC u ODBC, puede incluir los valores en un perfil con nombre. Para obtener más información, consulte Uso de un perfil de configuración.

  • Credenciales de IAM

    Proporcione valores para AccessKeyID, SecretAccessKey y, opcionalmente, SessionToken en forma de opciones de JDBC u ODBC. SessionToken es obligatorio únicamente para un rol de IAM con credenciales temporales. Para obtener más información, consulte Opciones de JDBC y ODBC para proporcionar credenciales de IAM.

  • Federación de proveedores de identidades

    Cuando utilice la federación de proveedores de identidades para permitir que los usuarios de un proveedor de identidades se autentiquen en Amazon Redshift, especifique el nombre de un complemento del proveedor de credenciales. Para obtener más información, consulte Complementos de proveedores de credenciales.

    Los controladores JDBC y ODBC de Amazon Redshift incluyen complementos para los siguientes proveedores de credenciales de identidad federada basados en SAML:

    • Servicios de identidad federada de Microsoft Active (AD FS)

    • PingOne

    • Okta

    • Microsoft Azure Active Directory (Azure AD)

    Puede proporcionar el nombre del complemento y los valores relacionados en forma de opciones de JDBC u ODBC o mediante un perfil. Para obtener más información, consulte Opciones de configuración del controlador JDBC versión 2.1.

Para obtener más información, consulte Paso 5: Configurar una conexión JDBC u ODBC para usar credenciales de IAM.

Uso de un perfil de configuración

Puede proporcionar las opciones de credenciales de IAM y las opciones de GetClusterCredentials como configuraciones en perfiles con nombre en su archivo de configuración de AWS. Para proporcionar el nombre del perfil, utilice la opción Profile JDBC. La configuración se almacena en un archivo denominado config o en uno denominado credentials en la carpeta denominada .aws en su directorio principal.

Para un complemento de proveedor de credenciales basado en SAML incluido con un controlador JDBC u ODBC de Amazon Redshift, puede utilizar la configuración descrita anteriormente en Complementos de proveedores de credenciales. Si no se utiliza plugin_name, se ignoran las demás opciones.

En el siguiente ejemplo, se muestra el archivo ~/.aws/credentials con dos perfiles.

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [user2] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY session_token=AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==

Para usar las credenciales para el ejemplo user2, especifique Profile=user2 en la URL de JDBC.

Para obtener más información sobre el uso de perfiles, consulte Opciones de los archivos de configuración y credenciales en la Guía del usuario de AWS Command Line Interface.

Para obtener más información acerca del uso de perfiles para el controlador JDBC, consulte Especificación de perfiles.

Para obtener más información acerca del uso de perfiles para el controlador ODBC, consulte Métodos de autenticación.

Opciones de JDBC y ODBC para proporcionar credenciales de IAM

En la tabla siguiente se indican las opciones de JDBC y ODBC para proporcionar credenciales de IAM.

Opción

Descripción

Iam

Para uso exclusivo en una cadena de conexión de ODBC. Establézcalo en 1 para usar la autenticación de IAM.

AccessKeyID

SecretAccessKey

SessionToken

El ID de clave de acceso y clave de acceso secreta para el rol o usuario de IAM configurado para autenticación de base de datos de IAM. SessionToken es necesario solo para un rol de IAM con credenciales temporales. SessionToken no se usa para un usuario. Para obtener más información, consulte Credenciales de seguridad temporales.
plugin_name El nombre completo de una clase que implementa un proveedor de credenciales. El controlador JDBC de Amazon Redshift incluye complementos de proveedores de credenciales basados en SAML. Si proporciona plugin_name, también puede proporcionar otras opciones relacionadas. Para obtener más información, consulte Complementos de proveedores de credenciales.

Profile

El nombre de un perfil en un archivo de credenciales o configuración de AWS que contiene valores para las opciones de conexión de JDBC. Para obtener más información, consulte Uso de un perfil de configuración.

Opciones de JDBC y ODBC para crear credenciales de usuario de base de datos

Para usar el controlador JDBC u ODBC de Amazon Redshift para crear credenciales de usuario de base de datos, proporcione el nombre de usuario de base de datos como una opción de JDBC u ODBC. Si lo desea, puede hacer que el controlador cree un nuevo usuario de base de datos si no existe ninguno y puede especificar una lista de grupos de usuarios de base de datos a los que se une el usuario cuando inicia sesión.

Si usa un proveedor de identidad (IdP), póngase en contacto con el administrador de su IdP para determinar los valores correctos para estas opciones. El administrador de su IdP también puede configurar su IdP para proporcionar estas opciones, en cuyo caso no necesita proporcionarlas como opciones de JDBC u ODBC. Para obtener más información, consulte Paso 2: Configurar aserciones SAML para su IdP.

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.

En la tabla siguiente se indican las opciones para crear credenciales de usuario de base de datos.

Opción

Descripción
DbUser

El nombre de un usuario de base de datos. Si un usuario llamado DbUser existe en la base de datos, las credenciales temporales del usuario tienen los mismos permisos que el usuario existente. Si DbUser no existe en la base de datos y AutoCreate está establecido en true, se crea un nuevo usuario llamado DbUser. Si lo desea, deshabilite la contraseña de un usuario existente. Para obtener más información, consulte ALTER_USER.

AutoCreate

Establezca esta opción en true para crear un usuario de base de datos con el nombre especificado para DbUser si no existe ninguno. El valor predeterminado es false.

DbGroups Una lista delimitada por comas de los nombres de uno o varios grupos de usuarios de base de datos a los que se une el usuario de base de datos durante la sesión actual. De forma predeterminada, el nuevo usuario se agrega solamente a PUBLIC.

Complementos de proveedores de credenciales

Amazon Redshift utiliza complementos de proveedor de credenciales para la autenticación de inicio de sesión único.

Para admitir la autenticación de inicio de sesión único, Amazon Redshift proporciona el complemento de Azure AD para Microsoft Azure Active Directory. Para obtener información sobre cómo configurar este complemento, consulte Configuración de la autenticación de inicio de sesión único de JDBC u ODBC.

Autenticación multifactor

Para admitir la autenticación multifactor (MFA), Amazon Redshift proporciona complementos basados en navegador. Utilice el complemento SAML del navegador para Okta y PingOne, y el complemento de Azure AD del navegador para Microsoft Azure Active Directory.

Con el complemento SAML del navegador, la autenticación OAuth sigue este flujo:

Flujos de trabajo de OAuth sobre cómo el complemento, el servidor local, el navegador web y el punto de conexión trabajan juntos para autenticar a un usuario con autenticación SAML.
  1. Un usuario intenta iniciar sesión.

  2. El complemento lanza un servidor local para escuchar las conexiones entrantes en el localhost.

  3. El complemento lanza un navegador web para solicitar una respuesta SAML a través de HTTPS desde el punto de conexión del proveedor de identidad federada de la URL de inicio de sesión único especificado.

  4. El navegador web sigue el enlace y pide al usuario que escriba las credenciales.

  5. Una vez que el usuario autentica y otorga su consentimiento, el punto de conexión del proveedor de identidad federadas devuelve una respuesta SAML a través de HTTPS al URI indicado por redirect_uri.

  6. El navegador web traslada el mensaje de respuesta con la respuesta SAML a la redirect_uri indicada.

  7. El servidor local acepta la conexión entrante y el complemento recupera la respuesta SAML y la transfiere a Amazon Redshift.

Con el complemento de Azure AD del navegador, la autenticación SAML sigue este flujo:

Flujos de trabajo de Azure sobre cómo el complemento, el servidor local, el navegador web y el punto de conexión trabajan juntos para autenticar a un usuario con autenticación SAML.
  1. Un usuario intenta iniciar sesión.

  2. El complemento lanza un servidor local para escuchar las conexiones entrantes en el localhost.

  3. El complemento lanza un explorador web para solicitar un código de autorización desde el punto de conexión oauth2/authorize de Azure AD.

  4. El navegador web sigue el enlace generado a través de HTTPS y solicita al usuario que escriba las credenciales. El enlace se genera utilizando propiedades de configuración, como tenant y client_id.

  5. Una vez que el usuario se autentica y otorga su consentimiento, el punto de conexión oauth2/authorize de Azure AD devuelve y envía una respuesta a través de HTTPS con el código de autorización al redirect_uri indicado.

  6. El navegador web traslada el mensaje de respuesta con la respuesta SAML a la redirect_uri indicada.

  7. El servidor local acepta la conexión entrante y las solicitudes del complemento, recupera el código de autorización y envía una solicitud POST al punto de conexión oauth2/token de Azure AD.

  8. El punto de conexión oauth2/token de Azure AD devuelve una respuesta con un token de acceso al redirect_uri indicado.

  9. El complemento recupera la respuesta SAML y la transfiere a Amazon Redshift.

Consulte las siguientes secciones:

Opciones de complementos

Para usar un complemento de proveedor de credenciales basado en SAML, especifique las siguientes opciones utilizando las opciones de JDBC u ODBC o en un perfil con nombre. Si no se especifica plugin_name, se omiten las demás opciones.

Opción

Descripción
plugin_name

Para JDBC, el nombre de la clase que implementa un proveedor de credenciales. Especifique uno de los siguientes valores:

  • Para Active Directory Federation Services

    com.amazon.redshift.plugin.AdfsCredentialsProvider
  • Para Okta

    com.amazon.redshift.plugin.OktaCredentialsProvider
  • Para PingFederate

    com.amazon.redshift.plugin.PingCredentialsProvider
  • Para Microsoft Azure Active Directory

    com.amazon.redshift.plugin.AzureCredentialsProvider
  • Para SAML MFA

    com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
  • Para el inicio de sesión único de Microsoft Azure Active Directory con MFA

    com.amazon.redshift.plugin.BrowserAzureCredentialsProvider

Para ODBC, especifique uno de los siguientes valores:

  • Para Active Directory Federation Services: adfs

  • Para Okta: okta

  • Para PingFederate: ping

  • Para Microsoft Azure Active Directory: azure

  • Para SAML MFA: browser saml

  • Para el inicio de sesión único de Microsoft Azure Active Directory con MFA: browser azure ad

idp_host El nombre del host del proveedor de identidad corporativo. Este nombre no debe incluir barras diagonales ('/'). Para un proveedor de identidad de Okta, el valor de idp_host debe terminar por .okta.com.

idp_port

El puerto usado por el proveedor de identidad. El valor predeterminado es 443. Este puerto se omite para Okta.

preferred_role

El nombre de recurso de Amazon (ARN) de los elementos AttributeValue para el 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.

user

Un nombre de usuario corporativo, incluido el dominio cuando proceda. Por ejemplo, en Active Directory, el nombre de dominio debe tener el formato dominio\nombre_usuario.
password

La contraseña del usuario corporativo. Le recomendamos que no utilice esta opción. En lugar de ello, use el cliente SQL para proporcionar la contraseña.

app_id

Un ID de una aplicación Okta. Solo se usa con Okta. El valor de app_id se incluye detrás de amazon_aws en el enlace incrustado de la aplicación Okta. Para obtener este valor, póngase en contacto con el administrador de su IdP. A continuación se muestra un ejemplo de un enlace incrustado de aplicación: https://example.okta.com/home/amazon_aws/0oa2hylwrpM8UGehd1t7/272

idp_tenant

Un inquilino utilizado para Azure AD. Se utiliza solo con Azure.

client_id

Un ID de cliente para la aplicación para empresas de Amazon Redshift en Azure AD. Se utiliza solo con Azure.