Connect a Redshift con sessioni di ruolo IAM ottimizzate per l'identità - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il post del blog.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Connect a Redshift con sessioni di ruolo IAM ottimizzate per l'identità

Puoi utilizzare IAM Identity Center per fornire accesso federato ai tuoi cluster Amazon Redshift e ai gruppi di lavoro serverless. Questo approccio consente agli utenti di autenticarsi utilizzando le proprie credenziali Identity Center.

Amazon Redshift fornisce operazioni GetIdentityCenterAuthToken API per generare token autorizzati contenenti informazioni sull'identità degli utenti. APIs Sono disponibili sia per i cluster con provisioning che per i gruppi di lavoro serverless. I token consentono l'accesso Single Sign-On senza interruzioni ai database Amazon Redshift utilizzando la configurazione esistente di Identity Center.

Prerequisiti

Prima di utilizzare l'autenticazione Identity Center con Amazon Redshift, assicurati di disporre di quanto segue:

  • Configurazione di Identity Center: sul tuo account deve essere configurato IAM Identity Center con identità utente e assegnazioni di applicazioni appropriate. Per istruzioni di configurazione, consulta Configurazione di IAM Identity Center.

    Importante

    Se vuoi connetterti a Redshift, devi usare redshift:connect scope.

  • Credenziali con identità avanzata: l'applicazione deve utilizzare credenziali con identità avanzata che contengono informazioni sull'identità utente incorporate. Per ulteriori informazioni, consulta Utilizzo di sessioni di ruolo IAM con identità migliorata.

  • Autorizzazioni IAM: il tuo ruolo o utente IAM deve disporre delle autorizzazioni per chiamare l'GetIdentityCenterAuthTokenAPI e accedere ai cluster o ai gruppi di lavoro specificati. Autorizzazioni richieste:

    • Per i cluster predisposti: su cluster (formato:redshift:GetIdentityCenterAuthToken) ARNs arn:aws:redshift:region:account:cluster:cluster-name

    • Per gruppi di lavoro senza server: redshift-serverless:GetIdentityCenterAuthToken sul gruppo di lavoro (formato:) ARNs arn:aws:redshift-serverless:region:account:workgroup/workgroup-name

  • Driver compatibili: utilizza i driver Amazon Redshift JDBC o ODBC che supportano i token autorizzati di Identity Center:

Come funziona l'autenticazione Identity Center

L'autenticazione Identity Center per Amazon Redshift utilizza il seguente flusso di lavoro:

  1. L'applicazione chiama l'GetIdentityCenterAuthTokenAPI utilizzando credenziali con identità avanzata che contengono informazioni sull'identità utente incorporate.

  2. Amazon Redshift convalida l'identità dell'Identity Center e genera un token crittografato autorizzato destinato a cluster o gruppi di lavoro specifici. Vedi esempi di politiche IAM.

  3. L'applicazione utilizza questo token per connettersi al cluster o al gruppo di lavoro Amazon Redshift specificato.

  4. Il piano dati di Amazon Redshift convalida il token e concede l'accesso in base alle autorizzazioni dell'utente di Identity Center all'interno dell'applicazione Identity Center.

Importante

Questa API richiede credenziali con identità avanzata. Per ulteriori informazioni, consulta Utilizzo di sessioni di ruolo IAM con identità migliorata.

Se chiami l'API senza credenziali con identità avanzata, riceverai un errore. UnsupportedOperationFault

GetIdentityCenterAuthToken Operazioni API

Amazon Redshift offre due operazioni GetIdentityCenterAuthToken API separate: una per i cluster con provisioning e una per i gruppi di lavoro serverless. Entrambe le operazioni hanno lo stesso nome ma accettano parametri diversi a seconda del tipo di risorsa di destinazione.

GetIdentityCenterAuthToken per i cluster predisposti

Per i cluster Amazon Redshift forniti, utilizza GetIdentityCenterAuthToken l'API nel servizio Amazon Redshift per generare token autorizzati.

Sintassi della richiesta

{ "ClusterIds": [ "string" ] }

Parametri della richiesta

ClusterIds

Un elenco di identificatori di cluster Amazon Redshift a cui il token sarà autorizzato ad accedere. Il token può essere utilizzato solo per l'autenticazione con i cluster specificati in questo elenco.

Tipo: array di stringhe

Vincoli di lunghezza: minimo 1 articolo. Massimo 20 articoli.

Obbligatorio: sì

Esempi di CLI

Esempio: ottieni un token autorizzato per un singolo cluster

aws redshift get-identity-center-auth-token \ --cluster-ids my-redshift-cluster

Esempio: ottieni un token autorizzato per più cluster

aws redshift get-identity-center-auth-token \ --cluster-ids my-cluster-1 my-cluster-2

GetIdentityCenterAuthToken per gruppi di lavoro senza server

Per i gruppi di lavoro Amazon Redshift Serverless, utilizza l'GetIdentityCenterAuthTokenAPI nel servizio Amazon Redshift Serverless per generare token autorizzati.

Sintassi della richiesta

{ "WorkgroupNames": [ "string" ] }

Parametri della richiesta

WorkgroupNames

Un elenco di nomi di gruppi di lavoro Amazon Redshift Serverless a cui il token sarà autorizzato ad accedere. Il token può essere utilizzato solo per l'autenticazione con i gruppi di lavoro specificati in questo elenco.

Tipo: array di stringhe

Vincoli di lunghezza: minimo 1 articolo. Massimo 20 articoli.

Obbligatorio: sì

Esempi di CLI

Esempio: ottieni un token autorizzato per un singolo gruppo di lavoro

aws redshift-serverless get-identity-center-auth-token \ --workgroup-names my-workgroup

Esempio: ottieni un token autorizzato per più gruppi di lavoro

aws redshift-serverless get-identity-center-auth-token \ --workgroup-names workgroup-1 workgroup-2

Sintassi della risposta

Entrambi APIs restituiscono la stessa struttura di risposta:

{ "AuthorizedToken": "string", "ExpirationTime": "timestamp" }

Parametri di risposta

AuthorizedToken

Un token autorizzato crittografato che contiene le informazioni sull'identità dell'utente e l'elenco dei cluster o dei gruppi di lavoro autorizzati. Questo token deve essere trattato come dati sensibili.

Tipo: String

ExpirationTime

La data e l'ora di scadenza del token, in UTC. I token sono validi per 1 ora dal momento della generazione.

Tipo: Timestamp

Esempio di risposta

{ "AuthorizedToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyQGV4YW1wbGUuY29tIiwiaWF0IjoxNjQwOTk1MjAwLCJleHAiOjE2NDA5OTg4MDAsImNsdXN0ZXJzIjpbIm15LWNsdXN0ZXIiXX0...", "ExpirationTime": "2024-01-01T12:00:00Z" }

Integrazione dei driver

I driver Amazon Redshift supportano l'autenticazione di Identity Center tramite l'utilizzo diretto di token:

Utilizzo diretto dei token

Dopo aver chiamato l'GetIdentityCenterAuthTokenAPI per ottenere un token, usa il IdpTokenAuthPlugin con il tipo di SUBJECT_TOKEN token.

Configurazione della connessione:

plugin_name = com.amazon.redshift.plugin.IdpTokenAuthPlugin token_type = SUBJECT_TOKEN token = {encrypted_token_from_api_response}

Per informazioni dettagliate sui plugin di autenticazione di Identity Center e sulla configurazione dei driver, consulta Connessione a un cluster Amazon Redshift.

Esempio di codice Java

Codice Java di esempio per la connessione tramite l'autenticazione 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(); }

Requisiti della policy IAM

Per utilizzare l'autenticazione Identity Center con Amazon Redshift, sono necessarie autorizzazioni IAM specifiche oltre alle autorizzazioni standard necessarie per la connessione a cluster e gruppi di lavoro Amazon Redshift.

Autorizzazioni API

Per i cluster assegnati, la sessione di ruolo IAM avanzata deve avere:

  • redshift:GetIdentityCenterAuthTokensul cluster ARNs (formato:) arn:aws:redshift:region:account:cluster:cluster-name

Per i gruppi di lavoro senza server, la sessione di ruolo IAM avanzata deve avere:

  • redshift-serverless:GetIdentityCenterAuthTokensul gruppo di lavoro (formato: ARNs ) arn:aws:redshift-serverless:region:account:workgroup/workgroup-name

Policy IAM di esempio

Esempio di politica per i cluster predisposti:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-cluster" ] } ] }

Esempio di policy per gruppi di lavoro senza server:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-serverless:GetIdentityCenterAuthToken" ], "Resource": [ "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/my-workgroup" ] } ] }

Politica di esempio per più risorse:

{ "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/*" ] } ] }

Disponibilità regionale

L'autenticazione Identity Center è disponibile nelle seguenti AWS aree:

  • Regioni commerciali: tutte le regioni Amazon Redshift supportate

  • AWS GovCloud: Disponibile nelle versioni us-gov-east -1 e us-gov-west -1

  • Regioni della Cina: disponibile in cn-north-1 e cn-northwest-1

Nota

La disponibilità delle funzionalità può variare durante l'implementazione iniziale.