Generazione di credenziali di database per un’identità IAM mediante la CLI o l’API di Amazon Redshift - 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.

Generazione di credenziali di database per un’identità IAM mediante la CLI o l’API di Amazon Redshift

Per generare credenziali utente di database temporanee in modo programmatico, Amazon Redshift fornisce il comando get-cluster-credentials per AWS Command Line Interface (AWS CLI) e l'operazione API GetClusterCredentials. In alternativa, puoi configurare il tuo client SQL con i driver JDBC o ODBC di Amazon Redshift, che gestiscono il processo di chiamata dell'operazione GetClusterCredentials, di recupero delle credenziali utente di database e di connessione tra il client SQL e il database Amazon Redshift. Per ulteriori informazioni, consulta Opzioni JDBC e ODBC per la creazione delle credenziali dell’utente di database.

Nota

Consigliamo di utilizzare i driver JDBC o ODBC di Amazon Redshift per generare credenziali utente di database.

In questa sezione troverai la procedura per chiamare l'operazione GetClusterCredentials o il comando get-cluster-credentials, recuperare le credenziali utente e connetterti al database in modo programmatico.

Per generare e utilizzare credenziali di database temporanee
  1. Crea o modifica un utente o un ruolo con le autorizzazioni necessarie. Per ulteriori informazioni sulle autorizzazioni IAM, consultare Fase 3: creazione di un ruolo IAM con le autorizzazioni per chiamare GetClusterCredentials.

  2. Come utente o ruolo autorizzato nel passaggio precedente, esegui il comando CLI get-cluster-credentials oppure chiama l'operazione API GetClusterCredentials e fornisci i seguenti valori:

    • Identificatore del cluster: il nome del cluster contenente il database.

    • Nome utente del database: il nome di un utente del database esistente o nuovo.

      • Se l'utente non esiste nel database e AutoCreate è true, viene creato un nuovo utente con l'opzione PASSWORD disabilitata.

      • Se l'utente non esiste e AutoCreate è false, la richiesta non riesce.

      • Per questo esempio, il nome utente di database è temp_creds_user.

    • Autocreate: (facoltativo) crea un nuovo utente se il nome utente di database non esiste.

    • Nome database: il nome del database a cui l'utente è autorizzato ad accedere. Se il nome di database non è specificato, l'utente può accedere a qualsiasi database del cluster.

    • Gruppi di database: (facoltativo) un elenco di gruppi di utenti di database esistenti. Se l'accesso va a buon fine, l'utente di database viene aggiunto al gruppo di utenti specificato. Se non viene specificato alcun gruppo, l'utente dispone solo di autorizzazioni PUBLIC. I nomi dei gruppi di utenti devono corrispondere agli ARN delle risorse dbgroup specificati nella policy IAM collegata all'utente o al ruolo.

    • Tempo scadenza: (facoltativo) il tempo, in secondi, fino alla scadenza delle credenziali temporanee. È possibile specificare un valore compreso tra 900 secondi (15 minuti) e 3600 secondi (60 minuti). Il valore predefinito è 900 secondi.

  3. Amazon Redshift verifica che l'utente disponga dell'autorizzazione per chiamare l'operazione GetClusterCredentials con le risorse specificate.

  4. Amazon Redshift restituisce una password temporanea e il nome utente di database.

    L'esempio seguente utilizza la CLI di Amazon Redshift per generare credenziali di database temporanee per un utente esistente denominato temp_creds_user.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --db-name exampledb --duration-seconds 3600

    Il risultato è illustrato di seguito.

    {
      "DbUser": "IAM:temp_creds_user", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }

    L'esempio seguente utilizza la CLI di Amazon Redshift con autocreate per generare credenziali di database temporanee per un nuovo utente e per aggiungere l'utente al gruppo example_group.

    aws redshift get-cluster-credentials --cluster-identifier examplecluster --db-user temp_creds_user --auto-create --db-name exampledb --db-groups example_group --duration-seconds 3600

    Il risultato è illustrato di seguito.

    {
      "DbUser": "IAMA:temp_creds_user:example_group", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }
  5. Stabilisci una connessione di autenticazione Secure Sockets Layer (SSL) con il cluster Amazon Redshift e invia una richiesta di accesso con il nome utente e la password contenuti nella risposta GetClusterCredentials. Includere il prefisso IAM: o IAMA: con il nome utente, ad esempio IAM:temp_creds_user o IAMA:temp_creds_user.

    Importante

    Configurare il client SQL per richiedere SSL. Se non si esegue questa operazione e il client SQL tenta automaticamente di connettersi con SSL, può utilizzare di nuovo una connessione non SSL in caso di problemi. In tal caso, il primo tentativo di connessione può non riuscire in quanto le credenziali sono scadute o invalide e il secondo non riesce perché la connessione non è SSL. Se ciò si verifica, è possibile non vedere il primo messaggio di errore. Per ulteriori informazioni sulla connessione al cluster mediante SSL, consultare Configurazione delle opzioni di sicurezza per le connessioni.

  6. Se la connessione non utilizza SSL, il tentativo di connessione non riesce.

  7. Il cluster invia una richiesta authentication al client SQL.

  8. Il client SQL invia quindi la password temporanea al cluster.

  9. Se la password è valida e non è scaduta, il cluster completa la connessione.