Creazione di credenziali IAM temporanee - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Creazione di credenziali IAM temporanee

In questa sezione viene descritto come configurare il sistema per generare credenziali utente temporanee basate su IAM e accedere al database utilizzando le nuove credenziali.

A livello generale, il processo è il seguente:

  1. Passaggio 1: creazione di un ruolo IAM per un accesso Single Sign-On IAM

    (Facoltativo) Puoi autenticare gli utenti per l'accesso a un database Amazon Redshift integrando l'autenticazione IAM e un provider di identità (IdP) di terza parte.

  2. Fase 2: configurazione di asserzioni SAML per l'IdP

    (Facoltativo) Per utilizzare l'autenticazione IAM mediante un IdP, devi definire una regola di attestazione nell'applicazione IdP che mappa gli utenti o i gruppi nella tua organizzazione al ruolo IAM. Facoltativamente, è possibile includere elementi di attributo per impostare i parametri GetClusterCredentials.

  3. Fase 3: creazione di un ruolo IAM con le autorizzazioni per chiamare GetClusterCredentials

    L'applicazione client SQL assume l'utente quando chiama l'operazione GetClusterCredentials. Se hai creato un ruolo IAM per l'accesso al provider di identità, puoi aggiungere l'autorizzazione necessaria a quel ruolo.

  4. Fase 4: creazione di un utente di database e di gruppi di database

    (Facoltativo) Per impostazione predefinita, GetClusterCredentials restituisce le credenziali per creare un nuovo utente se il nome utente non esiste. Puoi anche scegliere di specificare gruppi di utenti a cui gli utenti vengono aggiunti all'accesso. Per impostazione predefinita, gli utenti di database sono aggiunti al gruppo PUBLIC.

  5. Fase 5: configurazione di una connessione JDBC o ODBC per utilizzare credenziali IAM

    Per connettersi al database Amazon Redshift, è necessario configurare il client SQL per utilizzare i driver JDBC o ODBC di Amazon Redshift.

Passaggio 1: creazione di un ruolo IAM per un accesso Single Sign-On IAM

Se non utilizzi un provider di identità per l'accesso single-sign on, puoi ignorare questa fase.

Se gestisci già identità utente al di fuori di AWS, puoi autenticare gli utenti per l'accesso a un database Amazon Redshift integrando l'autenticazione IAM e un provider di identità (IdP) di terza parte conforme a SAML 2.0.

Per ulteriori informazioni, consulta Provider di identità e federazione nella Guida per l'utente di IAM.

Prima di poter utilizzare l'autenticazione IdP di Amazon Redshift, crea un provider di identità SAML AWS. La creazione del provider di identità viene eseguita nella console IAM per informare AWS del provider di identità e della relativa configurazione. In questo modo si stabilisce una relazione di attendibilità tra l'account AWS e il provider di identità. Per la procedura relativa alla creazione di un ruolo, consultare Creazione di un ruolo per una federazione SAML 2.0 (console) nella Guida per l'utente di IAM.

Fase 2: configurazione di asserzioni SAML per l'IdP

Dopo la creazione del ruolo IAM, definisci una regola di registrazione nell'applicazione IdP che mappa gli utenti o i gruppi nella tua organizzazione al ruolo IAM. Per ulteriori informazioni, consultare Configurazione delle asserzioni SAML per la risposta di autenticazione nella Guida per l'utente di IAM.

Se scegli di utilizzare i parametri GetClusterCredentials facoltativi DbUser, AutoCreate e DbGroups, puoi impostare i valori per i parametri con la connessione JDBC o ODBC oppure aggiungendo elementi attributo SAML all'IdP. Per ulteriori informazioni sui parametri DbUser, AutoCreate e DbGroups, consultare Fase 5: configurazione di una connessione JDBC o ODBC per utilizzare credenziali IAM.

Nota

Se si utilizza una variabile di policy IAM ${redshift:DbUser}, come descritto in Policy delle risorse per GetClusterCredentials, il valore per DbUser è sostituito con il valore recuperato dal contesto della richiesta dell'operazione API. I driver Amazon Redshift utilizzano il valore per la variabile DbUser fornito dalla connessione URL, piuttosto che il valore fornito come attributo SAML.

Per proteggere questa configurazione, ti consigliamo di utilizzare una condizione in una policy IAM per convalidare il valore DbUser con il codice RoleSessionName. È possibile trovare esempi di come impostare una condizione utilizzando una policy IAM in Policy di esempio per l'uso di GetClusterCredentials.

Per configurare l'IdP allo scopo di impostare i parametri DbUser, AutoCreate e DbGroups, includi i seguenti elementi Attribute:

  • Un elemento Attribute con l'attributo Name impostato su "https://redshift.amazon.com/SAML/Attributes/DbUser"

    Imposta l'elemento AttributeValue sul nome di un utente che si connetterà al database Amazon Redshift.

    Il valore nell'elemento AttributeValue deve essere in minuscolo, iniziare con una lettera, contenere solo caratteri alfanumerici, caratteri di sottolineatura ('_'), segni più ('+'), punti ('.'), chiocciole ('@') o trattini ('-') e non essere lungo più di 128 caratteri. In genere, il nome utente è un ID utente (ad esempio, bobsmith) o un indirizzo e-mail (ad esempio, bobsmith@example.com). Il valore non può includere uno spazio (ad esempio, un nome visualizzato di un utente come Bob Smith).

    <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>user-name</AttributeValue> </Attribute>
  • Un elemento attributo con l'attributo Name impostato su "https://redshift.amazon.com/SAML/Attributes/AutoCreate"

    Imposta l'elemento AttributeValue su true per creare un nuovo utente di database se non esiste. Imposta AttributeValue su false per specificare che l'utente di database deve esistere nel database Amazon Redshift.

    <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute>
  • Un elemento Attribute con il set di attributi Name impostato su "https://redshift.amazon.com/SAML/Attributes/DbGroups"

    Questo elemento contiene uno o più elementi AttributeValue. Imposta ogni elemento AttributeValue su un nome di gruppo di database a cui si unisce DbUser per la durata della sessione quando si connette al database Amazon Redshift.

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

Fase 3: creazione di un ruolo IAM con le autorizzazioni per chiamare GetClusterCredentials

Il client SQL ha bisogno dell'autorizzazione per chiamare l'operazione GetClusterCredentials per conto dell'utente. Per fornire tale autorizzazione, devi creare un utente o un ruolo e collegare una policy che concede le autorizzazioni necessarie.

Per creare un ruolo IAM con autorizzazioni per chiamare GetClusterCredentials
  1. Crea un utente o un ruolo mediante il servizio IAM. È anche possibile utilizzare un ruolo o un utente esistente. Ad esempio, se si è creato un ruolo IAM per l'accesso al provider di identità, è possibile collegare le policy IAM necessarie a quel ruolo.

  2. Collegare una policy di autorizzazione con l'autorizzazione per chiamare l'operazione redshift:GetClusterCredentials. A seconda dei parametri facoltativi specificati, è anche possibile consentire o limitare ulteriori operazioni e risorse nella policy:

    • Per consentire al client SQL di recuperare ID cluster, regione AWS e porta, includi l'autorizzazione per chiamare l'operazione redshift:DescribeClusters con la risorsa del cluster Redshift.

    • Se si utilizza l'opzione AutoCreate, includere l'autorizzazione per chiamare redshift:CreateClusterUser con la risorsa dbuser. L'Amazon Resource Name (ARN) seguente specifica il di Amazon Redshift dbuser. Sostituisci region, account-id e cluster-name con i valori per la Regione AWS, l’account e il cluster. Per dbuser-name, specificare il nome utente da utilizzare per accedere al database del cluster.

      arn:aws:redshift:region:account-id:dbuser:cluster-name/dbuser-name
    • (Facoltativo) Aggiungere un ARN che specifica la risorsa dbname di Amazon Redshift nel formato riportato di seguito. Sostituisci region, account-id e cluster-name con i valori per la Regione AWS, l’account e il cluster. Per database-name, specificare il nome di una database a cui l'utente accederà.

      arn:aws:redshift:region:account-id:dbname:cluster-name/database-name
    • Se utilizzi l'opzione DbGroups, includi l'autorizzazione per chiamare l'operazione redshift:JoinGroup con la risorsa dbgroup di Amazon Redshift nel formato seguente. Sostituisci region, account-id e cluster-name con i valori per la Regione AWS, l’account e il cluster. Per dbgroup-name, specificare il nome di un gruppo di utenti a cui l'utente viene aggiunto all'accesso.

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

Per maggiori informazioni ed esempi, consulta Policy delle risorse per GetClusterCredentials.

L'esempio seguente mostra una policy che consente a un ruolo IAM di chiamare l'operazione GetClusterCredentials. Specificando la risorsa dbuser di Amazon Redshift, si concede l'accesso al ruolo al nome utente di database temp_creds_user sul cluster denominato examplecluster.

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

Puoi utilizzare un carattere jolly (*) per sostituire in parte o interamente il nome di cluster, il nome utente o i nomi di gruppi di database. L'esempio seguente autorizza qualsiasi nome utente che inizia con temp_ e con qualsiasi cluster nell'account specificato.

Importante

L'istruzione nell'esempio seguente specifica un carattere jolly (*) come valore della risorsa in modo che la policy autorizzi qualsiasi risorsa che inizia con i caratteri specificati. L'utilizzo di un carattere jolly nelle policy IAM può risultare eccessivamente permissivo. Come best practice, si consiglia di utilizzare la policy più restrittiva accettabile per l'applicazione aziendale.

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

Nell'esempio seguente viene mostrata una policy che consente al ruolo IAM di chiamare l'operazione GetClusterCredentials con l'opzione di creare automaticamente un nuovo utente e di specificare gruppi a cui l'utente viene aggiunto all'accesso. La clausola "Resource": "*" concede l'accesso al ruolo a qualsiasi risorsa, inclusi cluster, utenti di database o gruppi di utenti.

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

Per ulteriori informazioni, consultare la pagina sintassi dell'ARN Amazon Redshift.

Fase 4: creazione di un utente di database e di gruppi di database

Se lo desideri, puoi creare un utente di database che utilizzi per accedere al database del cluster. Se crei credenziali utente temporanee per un utente esistente, puoi disabilitare la password dell'utente per forzare l'utente ad accedere con la password temporanea. In alternativa, puoi utilizzare l'opzione Autocreate di GetClusterCredentials per creare automaticamente un nuovo utente di database.

Puoi creare gruppi di utenti di database con le autorizzazioni desiderate a cui un utente di database IAM viene aggiunto all'accesso. Quando chiami l'operazione GetClusterCredentials, puoi specificare un elenco di nomi di gruppo utenti a cui il nuovo utente viene aggiunto all'accesso. Queste appartenenze a gruppi sono valide unicamente per le sessioni create utilizzando le credenziali generate con la richiesta specificata.

Per creare un utente di database e gruppi di database
  1. Accedi al database Amazon Redshift e crea un utente di database utilizzando CREATE USER oppure modificare un utente esistente utilizzando ALTER USER.

  2. Specificare eventualmente l'opzione PASSWORD DISABLE per impedire all'utente di utilizzare una password. Quando la password di un utente è disabilitata, l'utente può accedere soltanto utilizzando le credenziali temporanee. Se la password non è disabilitata, l'utente può accedere con la password o utilizzando le credenziali temporanee. Non è possibile disabilitare la password di un utente con privilegi avanzati.

    Gli utenti hanno bisogno di un accesso programmatico se desiderano interagire con AWS esternamente a Console di gestione AWS. La modalità con cui concedere l'accesso programmatico dipende dal tipo di utente che accede ad AWS.

    Per fornire agli utenti l'accesso programmatico, scegli una delle seguenti opzioni.

    Quale utente necessita dell'accesso programmatico? Per Come

    Identità della forza lavoro

    (Utenti gestiti nel centro identità IAM)

    Utilizza credenziali temporanee per firmare richieste programmatiche alla AWS CLI, agli SDK AWS o alle API AWS.

    Segui le istruzioni per l'interfaccia che desideri utilizzare.

    IAM Utilizza credenziali temporanee per firmare richieste programmatiche alla AWS CLI, agli SDK AWS o alle API AWS. Segui le istruzioni in Utilizzo di credenziali temporanee con le risorse AWS nella Guida per l'utente IAM.
    IAM

    (Non consigliato)

    Utilizza credenziali a lungo termine per firmare richieste programmatiche alla AWS CLI, agli SDK AWS o alle API AWS.

    Segui le istruzioni per l'interfaccia che desideri utilizzare.

    L'esempio seguente crea un utente con password disabilitata.

    create user temp_creds_user password disable;

    L'esempio seguente disabilita la password per un utente esistente.

    alter user temp_creds_user password disable;
  3. Creare gruppi di utenti di database mediante CREATE GROUP.

  4. Utilizzare il comando GRANT per definire i privilegi di accesso per i gruppi.

Fase 5: configurazione di una connessione JDBC o ODBC per utilizzare credenziali IAM

Puoi configurare il client SQL con un driver JDBC o ODBC di Amazon Redshift. Questo driver gestisce il processo per creare le credenziali utente del database e per stabilire una connessione tra il client SQL e il database Amazon Redshift.

Se utilizzi un provider di identità per l'autenticazione, specifica il nome di un plug-in di provider di identità. I driver JDBC e ODBC di Amazon Redshift includono plug-in per i seguenti provider di identità basati su SAML:

Per configurare una connessione JDBC per utilizzare credenziali IAM
  1. Scarica il driver JDBC di Amazon Redshift più recente dalla pagina Configurazione di una connessione per il driver JDBC versione 2.x per Amazon Redshift.

  2. Creare un URL JDBC con le opzioni delle credenziali IAM in uno dei formati seguenti. Per utilizzare l'autenticazione IAM, aggiungi iam: all'URL JDBC di Amazon Redshift dopo jdbc:redshift: come mostrato nell'esempio seguente.

    jdbc:redshift:iam://

    Aggiungi cluster-name, region e account-id. Il driver JDBC utilizza le informazioni dell'account IAM e il nome cluster per recuperare l'ID cluster e la regione AWS. A tale scopo, l'utente o il ruolo deve disporre dell'autorizzazione per chiamare l'operazione redshift:DescribeClusters con il cluster specificato. Se l'utente o il ruolo non dispone dell'autorizzazione per chiamare l'operazione redshift:DescribeClusters, includi l'ID cluster, la regione AWS e la porta, come mostrato nell'esempio seguente. Il numero di porta è facoltativo.

    jdbc:redshift:iam://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev
  3. Aggiungere le opzioni JDBC per fornire le credenziali IAM. Si utilizzano differenti combinazioni delle opzioni JDBC per fornire le credenziali IAM. Per informazioni dettagliate, vedi Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.

    L'URL seguente specifica AccessKeyID e SecretAccessKey per un utente.

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

    L'esempio seguente specifica un profilo con nome che contiene le credenziali IAM.

    jdbc:redshift:iam://examplecluster:us-west-2/dev?Profile=user2
  4. Aggiungere le opzioni JDBC utilizzate dal driver JDBC per chiamare l'operazione API GetClusterCredentials. Non includere queste opzioni se si chiama l'operazione API GetClusterCredentials a livello di codice.

    L'esempio seguente include le opzioni GetClusterCredentials 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
Per configurare una connessione ODBC per utilizzare credenziali IAM

Nella procedura seguente, è possibile trovare i passaggi solo per configurare l'autenticazione IAM. Per le fasi relative all'utilizzo dell'autenticazione standard con un nome utente di database e una password, consultare Configurazione di una connessione per il driver ODBC versione 2.x per Amazon Redshift.

  1. Installa e configura il driver OBDC di Amazon Redshift più recente per il sistema operativo in uso. Per ulteriori informazioni, consultare la pagina Configurazione di una connessione per il driver ODBC versione 2.x per Amazon Redshift.

    Importante

    La versione del driver ODBC di Amazon Redshift deve essere 1.3.6.1000 o successiva.

  2. Seguire la procedura per il sistema operativo in uso per configurare le impostazioni di connessione.

  3. Nei sistemi operativi Microsoft Windows, accedi alla finestra Configurazione DSN driver ODBC di Amazon Redshift.

    1. In Connection Settings (Impostazioni di connessione), inserire le informazioni riportate di seguito:

      • Data Source Name (Nome origine dati

      • Server (facoltativo)

      • Port (Porta) (facoltativo)

      • Database

      Se l'utente o il ruolo dispone dell'autorizzazione per chiamare l'operazione redshift:DescribeClusters, sono necessari solo Nome origine dati e Database. Amazon Redshift usa ClusterId e Region per ottenere il server e la porta chiamando l'operazione DescribeCluster.

      Se l'utente o il ruolo non dispone dell'autorizzazione per chiamare l'operazione redshift:DescribeClusters, specifica Server e Porta.

    2. In Authentication (Autenticazione), scegliere un valore per Auth Type (Tipo di autenticazione).

      Per ogni tipo di autenticazione, immettere i valori come indicato di seguito:

      AWSProfilo

      Immetti le seguenti informazioni:

      • ClusterID

      • Regione

      • Nome del profilo

        Immettere il nome di un profilo in un file AWS Config che contiene i valori per le opzioni di connessione ODBC. Per ulteriori informazioni, consulta Utilizzo di un profilo di configurazione.

      (Facoltativo) Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      Credenziali IAM

      Immetti le seguenti informazioni:

      • ClusterID

      • Regione

      • AccessKeyID e SecretAccessKey

        L'ID chiave di accesso e la chiave di accesso segreta per l'utente o il ruolo IAM configurato per l'autenticazione database IAM.

      • SessionToken

        SessionToken è obbligatorio per un ruolo IAM con credenziali temporanee. Per ulteriori informazioni, consultare Credenziali di sicurezza temporanee.

      Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      Identity Provider: AD FS

      Per l'autenticazione integrata di Windows con AD FS, lasciare i campi User (Utente) e Password vuoti.

      Specificare i dettagli dell'IdP:

      • IdP Host (Host IdP

        Il nome dell'host del provider di identità dell'azienda. Questo nome non deve includere barre rovesciate ( / ).

      • IdP Port (Porta IdP) (facoltativo)

        La porta utilizzata dal provider di identità. Il valore predefinito è 443.

      • Preferred Role (Ruolo preferito

        Un Amazon Resource Name (ARN) di un ruolo IAM negli elementi AttributeValue con più valori per l'attributo Role nell'asserzione SAML. Per trovare il valore appropriato per il ruolo preferito, collaborare con l'amministratore IdP. Per ulteriori informazioni, consulta Fase 2: configurazione di asserzioni SAML per l'IdP.

      (Facoltativo) Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creazione automatica utente

      • DbGroups

      Per ulteriori informazioni, consulta Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.

      Identity Provider: PingFederate

      In User (Utente) e Password, immettere il nome utente e la password dell'IdP.

      Specificare i dettagli dell'IdP:

      • IdP Host (Host IdP

        Il nome dell'host del provider di identità dell'azienda. Questo nome non deve includere barre rovesciate ( / ).

      • IdP Port (Porta IdP) (facoltativo)

        La porta utilizzata dal provider di identità. Il valore predefinito è 443.

      • Preferred Role (Ruolo preferito

        Un Amazon Resource Name (ARN) di un ruolo IAM negli elementi AttributeValue con più valori per l'attributo Role nell'asserzione SAML. Per trovare il valore appropriato per il ruolo preferito, collaborare con l'amministratore IdP. Per ulteriori informazioni, consulta Fase 2: configurazione di asserzioni SAML per l'IdP.

      (Facoltativo) Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creazione automatica utente

      • DbGroups

      Per ulteriori informazioni, consulta Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.

      Identity Provider: Okta

      In User (Utente) e Password, immettere il nome utente e la password dell'IdP.

      Specificare i dettagli dell'IdP:

      • IdP Host (Host IdP

        Il nome dell'host del provider di identità dell'azienda. Questo nome non deve includere barre rovesciate ( / ).

      • IdP Port (Porta IdP

        Questo valore non viene utilizzato da Okta.

      • Preferred Role (Ruolo preferito

        Un Amazon Resource Name (ARN) di un ruolo IAM negli elementi AttributeValue per l'attributo Role nell'asserzione SAML. Per trovare il valore appropriato per il ruolo preferito, collaborare con l'amministratore IdP. Per ulteriori informazioni, consulta Fase 2: configurazione di asserzioni SAML per l'IdP.

      • Okta App ID (ID app Okta

        Un ID per l'applicazione Okta. Il valore dell'ID dell'app segue "amazon_aws" nel collegamento incorporato dell'applicazione Okta. Collaborare con l'amministratore IdP per ottenere questo valore.

      (Facoltativo) Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creazione automatica utente

      • DbGroups

      Per ulteriori informazioni, consulta Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.

      Provider di identità: Azure AD

      In User (Utente) e Password, immettere il nome utente e la password dell'IdP.

      Per ID cluster e Regione, immettere l'ID cluster e la regione AWS del cluster Amazon Redshift.

      Per Database, specifica il database creato per il cluster Amazon Redshift.

      Specificare i dettagli dell'IdP:

      • IdP Tenant (Tenant IdP

        Il tenant usato per Azure AD.

      • Azure Client Secret (Segreto client Azure

        Il segreto client dell'app aziendale Amazon Redshift in Azure.

      • Azure Client ID (ID client di Azure

        L'ID client (ID applicazione) dell'app aziendale Amazon Redshift in Azure.

      (Facoltativo) Fornire dettagli per le opzioni utilizzate dal driver ODBC per chiamare l'operazione API GetClusterCredentials:

      • DbUser

      • User AutoCreate (Creazione automatica utente

      • DbGroups

      Per ulteriori informazioni, consulta Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.