Erstellen von IAM-Datenbank-Anmeldeinformationen mithilfe der Amazon-Redshift-CLI oder -API - Amazon Redshift

Erstellen von IAM-Datenbank-Anmeldeinformationen mithilfe der Amazon-Redshift-CLI oder -API

Zum programmgesteuerten Erstellen temporärer Benutzeranmeldeinformationen für die Datenbank bietet Amazon Redshift den Befehl get-cluster-credentials für die AWS Command Line Interface (AWS CLI) und den API-Vorgang GetClusterCredentials. Sie können Ihren SQL-Client auch mithilfe von Amazon-Redshift-JDBC- oder -ODBC-Treibern konfigurieren. Diese steuern das Aufrufen des GetClusterCredentials-Vorgangs, das Abrufen der Datenbank-Benutzeranmeldeinformationen und das Herstellen einer Verbindung zwischen dem SQL-Client und der Amazon-Redshift-Datenbank. Weitere Informationen finden Sie unter JDBC- und ODBC-Optionen zur Erstellung von Benutzeranmeldeinformationen für die Datenbank.

Anmerkung

Wir empfehlen die Verwendung von Amazon-Redshift-JDBC- oder -ODBC-Treibern zum Generieren von Benutzeranmeldeinformationen für die Datenbank.

In diesem Abschnitt finden Sie Anweisungen dazu, wie Sie programmgesteuert die Operation GetClusterCredentials bzw. den Befehl „get-cluster-credentials“ aufrufen, die Benutzeranmeldeinformationen für die Datenbank abrufen und eine Verbindung mit der Datenbank herstellen.

Erstellen und verwenden Sie temporäre Datenbankanmeldeinformationen wie folgt:

  1. Erstellen oder bearbeiten Sie einen IAM-Benutzer bzw. eine IAM-Rolle mit den erforderlichen Berechtigungen. Weitere Informationen zu IAM-Berechtigungen finden Sie unter Erstellen einer IAM-Rolle oder einer Benutzerrolle mit der Berechtigung, „GetClusterCredentials“ aufzurufen.

  2. Führen Sie als der IAM-Benutzer bzw. unter Verwendung der IAM-Rolle, der/die im vorherigen Schritt autorisiert wurde, den CLI-Befehl „get-cluster-credentials“ aus bzw. rufen Sie die API-Operation GetClusterCredentials auf und stellen Sie die folgenden Werte bereit:

    • Cluster identifier (Cluster-ID) – der Name des Clusters, der die Datenbank enthält.

    • Database user name (Datenbankbenutzername) – der Name eines bestehenden oder neuen Datenbankbenutzers.

      • Falls der Benutzer in der Datenbank nicht vorhanden ist und für die Funktion „AutoCreate“ „true“ festgelegt ist, wird ein neuer Benutzer erstellt, für den die Verwendung eines Passworts deaktiviert ist.

      • Wenn der Benutzer nicht vorhanden ist und für die Funktion „AutoCreate“ „false“ festgelegt ist, schlägt die Anforderung fehl.

      • In diesem Beispiel lautet der Datenbankbenutzername temp_creds_user.

    • Autocreate (Automatisch erstellen) – (Optional) Erstellt einen neuen Benutzer, wenn der Datenbankbenutzername nicht vorhanden ist.

    • Database name (Datenbankname) – (Optional) Der Name der Datenbank, bei der der Benutzer zur Anmeldung autorisiert ist. Wenn kein Datenbankname angegeben ist, kann sich der Benutzer bei jeder Datenbank des Clusters anmelden.

    • Database groups (Datenbankgruppen) – (Optional) Eine Liste der vorhandenen Datenbankbenutzergruppen. Bei erfolgreicher Anmeldung wird der Datenbankbenutzer den angegebenen Benutzergruppen hinzugefügt. Wenn keine Gruppe angegeben wird, verfügt der Benutzer nur über PUBLIC-Berechtigungen. Die Benutzergruppennamen müssen mit den dbgroup-Ressourcen-ARNs übereinstimmen, die in der IAM-Richtlinie angegeben sind, die dem IAM-Benutzer bzw. der IAM-Rolle zugeordnet ist.

    • Expiration time (Ablaufzeit) – (Optional) Die Ablaufzeit der temporären Anmeldeinformationen in Sekunden. Sie können einen Wert zwischen 900 Sekunden (15 Minuten) und 3600 Sekunden (60 Minuten) auswählen. Standardmäßig ist ein Zeitraum von 900 Sekunden festgelegt.

  3. Amazon Redshift verifiziert, dass der IAM-Benutzer zum Aufrufen des GetClusterCredentials-Vorgangs mit den angegebenen Ressourcen berechtigt ist.

  4. Amazon Redshift gibt ein temporäres Passwort und den Datenbankbenutzernamen zurück.

    Im folgenden Beispiel wird die Amazon-Redshift-CLI zur Erstellung temporärer Datenbankanmeldeinformationen für einen vorhandenen Benutzer namens verwendet temp_creds_user.

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

    Das Ergebnis ist wie folgt.

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

    Im folgenden Beispiel wird die Amazon-Redshift-CLI mit aktivierter AutoCreate-Funktion zur Erstellung temporärer Datenbankanmeldeinformationen für einen neuen Benutzer und zum Hinzufügen des Benutzers zur Gruppe verwendet 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

    Das Ergebnis ist wie folgt.

    {
      "DbUser": "IAMA:temp_creds_user:example_group", 
      "Expiration": "2016-12-08T21:12:53Z", 
      "DbPassword": "EXAMPLEjArE3hcnQj8zt4XQj9Xtma8oxYEM8OyxpDHwXVPyJYBDm/gqX2Eeaq6P3DgTzgPg=="
    }
  5. Stellen Sie eine Verbindung mit Secure Socket Layer (SSL)-Authentifizierung mit dem Amazon-Redshift-Cluster her und senden Sie eine Anmeldungsanforderung mit dem Benutzernamen und dem Passwort aus der GetClusterCredentials-Antwort. Geben Sie mit dem Benutzernamen das Präfix IAM: oder IAMA: an, zum Beispiel IAM:temp_creds_user oder IAMA:temp_creds_user.

    Wichtig

    Konfigurieren Sie Ihren SQL-Client so, dass er SSL erfordert. Andernfalls greift Ihr SQL-Client auf Nicht-SSL-Verbindungen zurück, wenn er automatisch Verbindungen über SSL herstellen soll und dabei ein Fehler auftritt. In diesem Fall schlägt der erste Verbindungsversuch möglicherweise fehl, da die Anmeldeinformationen abgelaufen oder ungültig sind, dann schlägt der zweite Verbindungsversuch fehl, weil die Verbindung nicht mit SSL hergestellt wird. Falls dies passiert, wird die erste Fehlermeldung möglicherweise übersehen. Weitere Informationen zum Herstellen einer Verbindung zum Cluster mit SSL finden Sie unter Konfigurieren von Sicherheitsoptionen für Verbindungen.

  6. Falls die Verbindung nicht mit SSL hergestellt wird, schlägt der Verbindungsversuch fehl.

  7. Der Cluster übermittelt eine Anforderung auf authentication an den SQL-Client.

  8. Der SQL-Client übermittelt daraufhin das temporäre Passwort an den Cluster.

  9. Falls das Passwort gültig und nicht abgelaufen ist, stellt der Cluster die Verbindung her.