Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la publicación del blog
Conexión a Redshift con sesiones de rol de IAM con identidad mejorada
Puede usar el IAM Identity Center para proporcionar acceso federado a sus clústeres y grupos de trabajo sin servidor de Amazon Redshift. Este enfoque permite a los usuarios autenticarse con sus credenciales del Identity Center.
Amazon Redshift proporciona operaciones de la API GetIdentityCenterAuthToken para generar un token autorizado que contiene la información de identidad de usuario. Estas API están disponibles tanto para clústeres aprovisionados como para grupos de trabajo sin servidor. Los tokens permiten un acceso de inicio de sesión único sin interrupciones a las bases de datos de Amazon Redshift mediante su configuración de Identity Center existente.
Requisitos previos
Antes de utilizar la autenticación de Identity Center con Amazon Redshift, asegúrese de que dispone de lo siguiente:
-
Configuración de Identity Center: su cuenta debe tener IAM Identity Center configurado con las identidades de usuario y las asignaciones de aplicación adecuadas. Para obtener instrucciones de configuración, consulte Configuración de IAM Identity Center.
importante
Si desea conectarse a Redshift, debe utilizar el ámbito redshift:connect.
-
Credenciales de identidad mejorada: su aplicación debe usar credenciales de identidad mejorada que contengan información de identidad de usuario incrustada. Para obtener más información, consulte Uso de sesiones de rol de IAM con identidad mejorada.
-
Permisos de IAM: su rol o usuario de IAM debe tener permisos para llamar a la API
GetIdentityCenterAuthTokeny acceder a los clústeres o grupos de trabajo especificados. Permisos necesarios:-
Para los clústeres aprovisionados:
redshift:GetIdentityCenterAuthTokenen ARN de clúster (formato:arn:aws:redshift:region:account:cluster:cluster-name) -
Para grupos de trabajo sin servidor:
redshift-serverless:GetIdentityCenterAuthTokenen ARN de grupo de trabajo (formato:arn:aws:redshift-serverless:region:account:workgroup/workgroup-name)
-
-
Controladores compatibles: utilice los controladores JDBC u ODBC de Amazon Redshift que admiten los tokens autorizados de Identity Center:
-
Controlador JDBC: consulte Instalación y configuración del controlador JDBC, versión 2.0, de Amazon Redshift.
-
Controlador ODBC: consulte Instalación y configuración del controlador ODBC, versión 2.0, de Amazon Redshift.
-
Cómo funciona la autenticación de Identity Center
La autenticación de Identity Center para Amazon Redshift utiliza el siguiente flujo de trabajo:
-
Su aplicación llama a la API
GetIdentityCenterAuthTokenmediante credenciales de identidad mejorada que contienen información de identidad de usuario incrustada. -
Amazon Redshift valida la identidad de Identity Center y genera un token autorizado cifrado destinado a clústeres o grupos de trabajo específicos. Consulte el ejemplo de políticas de IAM.
-
Además, su aplicación utiliza este token para conectarse al clúster o grupo de trabajo de Amazon Redshift especificado.
-
El plano de datos de Amazon Redshift valida el token y concede acceso en función de los permisos de usuario de Identity Center en la aplicación Identity Center.
importante
Esta API requiere credenciales de identidad mejorada. Para obtener más información, consulte Uso de sesiones de rol de IAM con identidad mejorada.
Si llama a la API sin credenciales de identidad mejorada, recibirá el error UnsupportedOperationFault.
Operaciones de la API GetIdentityCenterAuthToken
Amazon Redshift proporciona dos operaciones de la API GetIdentityCenterAuthToken independientes: una para los clústeres aprovisionados y otra para los grupos de trabajo sin servidor. Ambas operaciones tienen el mismo nombre, pero aceptan parámetros diferentes según el tipo de recurso de destino.
GetIdentityCenterAuthToken para clústeres aprovisionados
Para los clústeres de Amazon Redshift aprovisionados, utilice la API GetIdentityCenterAuthToken del servicio de Amazon Redshift para generar el token autorizado.
Sintaxis de la solicitud
{ "ClusterIds": [ "string" ] }
Parámetros de solicitud
- ClusterIds
-
Una lista de identificadores de clústeres de Amazon Redshift a los que se autorizará el acceso al token. El token solo se puede usar para realizar la autenticación con los clústeres especificados en esta lista.
Tipo: matriz de cadenas
Restricciones de longitud: mínimo de 1 elemento. Máximo de 20 elementos.
Obligatorio: sí
Ejemplos de CLI
Ejemplo: Obtención de un token autorizado para un solo clúster
aws redshift get-identity-center-auth-token \ --cluster-ids my-redshift-cluster
Ejemplo: Obtención de un token autorizado para varios clústeres
aws redshift get-identity-center-auth-token \ --cluster-ids my-cluster-1 my-cluster-2
GetIdentityCenterAuthToken para grupos de trabajo sin servidor
Para los grupos de trabajo de Amazon Redshift sin servidor, utilice la API GetIdentityCenterAuthToken del servicio de Amazon Redshift sin servidor para generar el token autorizado.
Sintaxis de la solicitud
{ "WorkgroupNames": [ "string" ] }
Parámetros de solicitud
- WorkgroupNames
-
Una lista de los nombres de grupos de trabajo de Amazon Redshift sin servidor a los que se autorizará el acceso al token. El token solo se puede usar para autenticarse con los clústeres especificados en esta lista.
Tipo: matriz de cadenas
Restricciones de longitud: mínimo de 1 elemento. Máximo de 20 elementos.
Obligatorio: sí
Ejemplos de CLI
Ejemplo: Obtención de un token autorizado para un solo grupo de trabajo
aws redshift-serverless get-identity-center-auth-token \ --workgroup-names my-workgroup
Ejemplo: Obtención de un token autorizado para varios grupos de trabajo
aws redshift-serverless get-identity-center-auth-token \ --workgroup-names workgroup-1 workgroup-2
Sintaxis de la respuesta
Ambas API devuelven la misma estructura de respuesta:
{ "AuthorizedToken": "string", "ExpirationTime": "timestamp" }
Parámetros de respuesta
- AuthorizedToken
-
Un token autorizado cifrado que contiene la información de identidad de usuario y la lista de clústeres o grupos de trabajo autorizados. Este token debe tratarse como información confidencial.
Tipo: cadena
- ExpirationTime
-
La fecha y hora en que caduca el token, en UTC. Los tokens son válidos durante 1 hora desde el momento de la generación.
Tipo: marca temporal
Respuesta de ejemplo
{ "AuthorizedToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwiaWF0IjoxNjQwOTk1MjAwLCJleHAiOjE2NDA5OTg4MDAsImNsdXN0ZXJzIjpbIm15LWNsdXN0ZXIiXX0...", "ExpirationTime": "2024-01-01T12:00:00Z" }
Integración de controladores
Los controladores de Amazon Redshift admiten la autenticación de Identity Center mediante el uso directo de token:
Uso directo de token
Después de llamar a la API GetIdentityCenterAuthToken para obtener un token, utilice IdpTokenAuthPlugin con el tipo de token SUBJECT_TOKEN.
Configuración de la conexión:
plugin_name = com.amazon.redshift.plugin.IdpTokenAuthPlugin token_type = SUBJECT_TOKEN token = {encrypted_token_from_api_response}
Para obtener información detallada sobre los complementos de autenticación y la configuración de controladores de Identity Center, consulte Conexión a un clúster de Amazon Redshift.
Código de ejemplo de Java
Ejemplo de código Java para la conexión usando la autenticación de Identity Center:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; // Get token from GetIdentityCenterAuthToken API String token = "your_encrypted_token_from_api_response"; // Configure connection properties Properties props = new Properties(); props.setProperty("user", "your_username"); props.setProperty("plugin_name", "com.amazon.redshift.plugin.IdpTokenAuthPlugin"); props.setProperty("token_type", "SUBJECT_TOKEN"); props.setProperty("token", token); // Connect to Redshift String url = "jdbc:redshift://your-cluster.region.redshift.amazonaws.com:5439/your_database"; try (Connection conn = DriverManager.getConnection(url, props)) { // Use connection System.out.println("Connected successfully!"); } catch (SQLException e) { e.printStackTrace(); }
Requisitos de la política de IAM
Para utilizar la autenticación de Identity Center con Amazon Redshift, se requieren permisos de IAM específicos además de los permisos estándar necesarios para conectarse a clústeres y grupos de trabajo de Amazon Redshift.
Permisos de la API
En el caso de los clústeres aprovisionados, su sesión de rol de IAM mejorada debe tener:
-
redshift:GetIdentityCenterAuthTokenen los ARN de clúster (formato:arn:aws:redshift:region:account:cluster:cluster-name)
En el caso de los grupos de trabajo sin servidor, la sesión de rol de IAM mejorada debe tener:
-
redshift-serverless:GetIdentityCenterAuthTokenen los ARN de grupo de trabajo (formato:arn:aws:redshift-serverless:region:account:workgroup/workgroup-name)
Ejemplos de políticas de IAM
Ejemplo de política de clústeres aprovisionados:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster" ] } ] }
Ejemplo de política de grupos de trabajo sin servidor:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-serverless:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/my-workgroup" ] } ] }
Ejemplo de política de varios recursos:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift:*:123456789012:cluster/*" ] }, { "Effect": "Allow", "Action": [ "redshift-serverless:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift-serverless:*:123456789012:workgroup/*" ] } ] }
Disponibilidad en las regiones
La autenticación de Identity Center está disponible en las siguientes regiones de AWS:
-
Regiones comerciales: todas las regiones de Amazon Redshift admitidas
-
AWS GovCloud: disponible en us-gov-east-1 y us-gov-west-1
-
Regiones de China: disponible en cn-north-1 y cn-northwest-1
nota
La disponibilidad de las características puede variar durante la implementación inicial.