Amazon Redshift wird UDFs ab dem 1. November 2025 die Erstellung von neuem Python nicht mehr unterstützen. Wenn Sie Python verwenden möchten UDFs, erstellen Sie das UDFs vor diesem Datum liegende. Bestehendes Python UDFs wird weiterhin wie gewohnt funktionieren. Weitere Informationen finden Sie im Blogbeitrag
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden einer Verbundidentität zur Verwaltung des Amazon-Redshift-Zugriffs auf lokale Ressourcen und externe Amazon-Redshift-Spectrum-Tabellen
Die Verwendung eines Identitätsverbunds AWS zusammen mit den von bereitgestellten Anmeldeinformationen GetDatabaseCredentials
kann die Autorisierung und den Zugriff auf lokale Daten und externe Daten vereinfachen. In diesem Tutorial zeigen wir Ihnen, wie Sie mithilfe eines AWS Identitätsverbunds Zugriff auf Ressourcen gewähren können, anstatt eine bestimmte IAM-Rolle zu verwenden.
Um Benutzern Zugriff auf externe Daten zu gewähren, die sich in Amazon S3 befinden, erstellen Sie derzeit eine IAM-Rolle mit Berechtigungen, die in einer Berechtigungsrichtlinie definiert sind. Anschließend können Benutzer mit der angehängten Rolle auf die externen Daten zugreifen. Dies funktioniert, aber wenn Sie detaillierte Regeln bereitstellen möchten, z. B. dass bestimmte Spalten für einen bestimmten Benutzer nicht verfügbar sind, müssen Sie möglicherweise eine zusätzliche Konfiguration für das externe Schema erstellen.
Ein Identitätsverbund mit Anmeldeinformationen, die von bereitgestellt werdenGetDatabaseCredentials
, kann Zugriff auf AWS Glue und Redshift Spectrum-Ressourcen mit detaillierten IAM-Regeln ermöglichen, die einfacher zu spezifizieren und zu ändern sind. Dies erleichtert das Anwenden eines Zugriffs, der Ihren Geschäftsregeln entspricht.
Die Verwendung von Verbundanmeldeinformationen bietet folgende Vorteile:
-
Sie müssen keine an einen Cluster angefügten IAM-Rollen für Redshift Spectrum verwalten.
-
Clusteradministratoren können ein externes Schema erstellen, auf das Nutzer mit unterschiedlichen IAM-Kontexten zugreifen können. Dies ist beispielsweise nützlich, um eine Spaltenfilterung für eine Tabelle durchzuführen, bei der verschiedene Nutzer dasselbe externe Schema abfragen und unterschiedliche Felder in zurückgegebenen Datensätzen erhalten.
-
Sie können Amazon Redshift mit einem Benutzer mit IAM-Berechtigungen abfragen und nicht nur mit einer Rolle.
Vorbereiten einer Identität für die Anmeldung mit einer Verbundidentität
Bevor Sie sich mit einer Verbundidentität anmelden, müssen Sie mehrere vorbereitende Schritte ausführen. In diesen Anweisungen wird davon ausgegangen, dass ein externes Redshift-Spectrum-Schema vorhanden ist, das auf eine in einem Amazon-S3-Bucket gespeicherte Datendatei verweist, und dass sich der Bucket in demselben Konto befindet wie Ihr Amazon Redshift-Cluster oder Ihr Amazon Redshift Serverless Data Warehouse.
-
Erstellen Sie eine IAM-Identität. Dabei kann es sich um einen Benutzer oder eine IAM-Rolle handeln. Verwenden Sie einen beliebigen von IAM unterstützten Namen.
-
Hängen Sie Berechtigungsrichtlinien an eine Identität an. Geben Sie einen der folgenden Werte an:
-
redshift:GetClusterCredentialsWithIAM
(für einen von Amazon Redshift bereitgestellten Cluster) -
redshift-serverless:GetCredentials
(für Amazon Redshift Serverless)
Sie können über die IAM-Konsole Berechtigungen mit dem Richtlinien-Editor hinzufügen.
Die IAM-Identität benötigt auch Berechtigungen für den Zugriff auf externe Daten. Gewähren Sie Zugriff auf Amazon S3, indem Sie die folgenden AWS verwalteten Richtlinien direkt hinzufügen:
-
AmazonS3ReadOnlyAccess
-
AWSGlueConsoleFullAccess
Die letzte verwaltete Richtlinie ist erforderlich, wenn Sie Ihre externen Daten mit AWS Glue vorbereiten. Weitere Informationen zu den Schritten, mit denen Sie Zugriffs auf Amazon Redshift Spectrum gewähren, finden Sie in Erstellen einer IAM-Rolle für Amazon Redshift. Der Abschnitt ist Teil des Handbuchs „Erste Schritte für Amazon Redshift und Redshift Spectrum“. Darin finden Sie Schritte zum Hinzufügen von IAM-Richtlinien für den Zugriff auf Redshift Spectrum.
-
-
Richten Sie Ihren SQL-Client für die Verbindung zu Amazon Redshift ein. Verwenden Sie den Amazon-Redshift-JDBC-Treiber und fügen Sie die Anmeldeinformationen Ihres Benutzers den Anmeldeinformationen des Tools hinzu. Ein Client wie SQL Workbench/J eignet sich dafür gut. Legen Sie die folgenden erweiterten Eigenschaften für Client-Verbindungen fest:
-
AccessKeyID — Ihre Zugriffsschlüssel-ID.
-
SecretAccessKey— Ihr geheimer Zugangsschlüssel. (Beachten Sie das Sicherheitsrisiko bei der Übertragung des geheimen Schlüssels, wenn Sie keine Verschlüsselung verwenden.)
-
SessionToken— Eine Reihe temporärer Anmeldeinformationen für eine IAM-Rolle.
-
groupFederation — Legen Sie diese Option auf
true
fest, wenn Sie die Verbundidentität für einen bereitgestellten Cluster konfigurieren. Legen Sie diesen Parameter nicht fest, wenn Sie Amazon Redshift Serverless verwenden. -
LogLevel— Ganzzahlwert auf Protokollebene. Dieser Schritt ist optional.
-
-
Legen Sie die URL für den JDBC-Endpunkt fest, der sich in der Amazon-Redshift- oder Amazon-Redshift-Serverless-Konsole befindet. Ersetzen Sie Ihr URL-Schema durch jdbc:redshift:iam: und verwenden Sie diese Formatierung:
-
Format für einen von Amazon Redshift bereitgestellten Cluster:
jdbc:redshift:iam://<cluster_id>.<unique_suffix>.<region>.redshift.amazonaws.com:<port>/<database_name>
Beispiel:
jdbc:redshift:iam://test1.12345abcdefg.us-east-1.redshift.amazonaws.com:5439/dev
-
Format für Amazon Redshift Serverless:
jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439:<port>/<database_name>
Beispiel:
jdbc:redshift:iam://default.123456789012.us-east-1.redshift-serverless.amazonaws.com:5439/dev
Nachdem Sie mithilfe einer IAM-Identität zum ersten Mal eine Verbindung mit der Datenbank hergestellt haben, erstellt Amazon Redshift automatisch eine Amazon-Redshift-Identität mit demselben Namen, dem Präfix
IAM:
für einen Benutzer oderIAMR:
für eine IAM-Rolle. Die verbleibenden Schritte in diesem Thema zeigen Beispiele für einen Benutzer.Wenn ein Redshift-Benutzer nicht automatisch erstellt wird, können Sie einen erstellen, indem Sie unter Verwendung eines Administratorkontos eine
CREATE USER
-Anweisung ausführen und den Benutzernamen im FormatIAM:<user name>
angeben. -
-
Erteilen Sie als Amazon-Redshift-Clusteradministrator dem Redshift-Benutzer die erforderlichen Berechtigungen für den Zugriff auf das externe Schema.
GRANT ALL ON SCHEMA my_schema to "IAM:my_user";
Damit Ihr Redshift-Benutzer Tabellen im externen Schema erstellen kann, muss er ein Schemabesitzer sein. Zum Beispiel:
ALTER SCHEMA my_schema owner to "IAM:my_user";
-
Zur Überprüfung der Konfiguration führen Sie mithilfe des SQL-Clients eine Abfrage als Benutzer aus, nachdem die Berechtigungen erteilt wurden. Dieses Abfragebeispiel ruft Daten aus einer externen Tabelle ab.
SELECT * FROM my_schema.my_table;
Erste Schritte bei der Identitäts- und Autorisierungsweitergabe an Redshift Spectrum
Um eine Verbundidentität an externe Abfragetabellen zu übergeben, legen Sie SESSION
als Wert für den IAM_ROLE
-Abfrageparameter von CREATE EXTERNAL SCHEMA
fest. In den folgenden Schritten wird gezeigt, wie Sie SESSION
einrichten und nutzen, um Abfragen im externen Schema zu autorisieren.
-
Erstellen Sie lokale Tabellen und externe Tabellen. Externe Tabellen, die mit AWS Glue katalogisiert wurden, eigenen sich dafür.
-
Stellen Sie mit Ihrer IAM-Identität eine Verbindung mit Amazon Redshift her. Wie im vorherigen Abschnitt erwähnt, wird ein Redshift-Datenbankbenutzer erstellt, wenn die Identität eine Verbindung mit Amazon Redshift herstellt. Der Benutzer wird erstellt, wenn er zuvor nicht vorhanden war. Wenn der Benutzer neu ist, muss der Administrator ihm Berechtigungen zum Ausführen von Aufgaben in Amazon Redshift gewähren, wie das Abfragen und Erstellen von Tabellen.
-
Stellen Sie mit Ihrem Administratorkonto eine Verbindung mit Redshift her. Führen Sie den Befehl aus, um ein externes Schema mit dem Wert „
SESSION
“ zu erstellen.create external schema spectrum_schema from data catalog database '<my_external_database>' region '<my_region>' iam_role 'SESSION' catalog_id '<my_catalog_id>';
Beachten Sie, dass in diesem Fall „
catalog_id
“ festgelegt ist. Dies ist eine neue Einstellung, die mit der Funktion hinzugefügt wurde, da „SESSION
“ eine bestimmte Rolle ersetzt.In diesem Beispiel ahmen die Werte in der Abfrage nach, wie echte Werte angezeigt werden.
create external schema spectrum_schema from data catalog database 'spectrum_db' region 'us-east-1' iam_role 'SESSION' catalog_id '123456789012'
Der
catalog_id
Wert ist in diesem Fall Ihre AWS Konto-ID. -
Führen Sie Abfragen aus, um auf Ihre externen Daten zuzugreifen. Verwenden Sie dabei die IAM-Identität, mit der Sie in Schritt 2 eine Verbindung hergestellt haben. Zum Beispiel:
select * from spectrum_schema.table1;
In diesem Fall kann
table1
beispielsweise in JSON formatierte Daten in einer Datei in einem Amazon-S3-Bucket, verwendet werden. -
Wenn Sie bereits über ein externes Schema verfügen, das eine an einen Cluster angehängte IAM-Rolle verwendet und auf Ihre externe Datenbank oder Ihr externes Schema verweist, können Sie wie in diesen Schritten beschrieben entweder das vorhandene Schema ersetzen und eine Verbundidentität verwenden, oder eine neue erstellen.
SESSION
gibt an, dass Anmeldeinformationen für die Verbundidentität verwendet werden, um das externe Schema abzufragen. Wenn Sie den Abfrageparameter „SESSION
“ verwenden, stellen Sie sicher, dass Sie die „catalog_id
“ festlegen. Sie ist erforderlich, da sie auf den für das Schema verwendeten Datenkatalog verweist. Zuvor wurde catalog_id
aus dem Wert abgerufen, dem iam_role
zugewiesen wurde. Wenn Sie die Identitäts- und Autorisierungspropagierung auf diese Weise übergeben, z. B. an Redshift Spectrum, indem Sie Verbundanmeldeinformationen zum Abfragen eines externen Schemas verwenden, ist eine Autorisierung über eine IAM-Rolle nicht erforderlich.
Nutzungshinweise
Ein häufiger Verbindungsfehler ist der folgende: IAM-Fehler beim Abrufen der temporären Anmeldeinformationen: Die Ausnahmeantwort konnte mit den bereitgestellten Unmarshallers nicht rückgängig gemacht werden. Dieser Fehler ist auf einen veralteten JDBC-Treiber zurückzuführen. Die Treiberversion, die für die Verbundidentität mindestens erforderlich ist, ist 2.1.0.9. Download the Amazon Redshift JDBC driver, version 2.1Den JDBC-Treiber können Sie unter Herunterladen von Version 2.1 des JDBC-Treibers für Amazon Redshift abrufen.
Weitere Ressourcen
Diese Links bieten zusätzliche Informationen zur Verwaltung des Zugriffs auf externe Daten.
-
Sie können weiterhin mithilfe einer IAM-Rolle auf Redshift-Spectrum-Daten zugreifen. Weitere Informationen finden Sie unter Amazon Redshift autorisieren, in Ihrem Namen auf AWS Services zuzugreifen.
-
Wenn Sie den Zugriff auf externe Tabellen mit AWS Lake Formation verwalten, können Sie diese unter Verwendung von Redshift Spectrum mit IAM-Verbundidentitäten abfragen. Sie müssen keine an einen Cluster angefügten IAM-Rollen mehr für Redshift Spectrum verwalten, um bei AWS Lake Formation registrierte Daten abzufragen. Weitere Informationen finden Sie unter Verwenden von AWS Lake Formation mit Amazon Redshift Spectrum.