Konfigurieren von IAM-Berechtigungen - Amazon Redshift

Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im Blog-Posting.

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.

Konfigurieren von IAM-Berechtigungen

Amazon Redshift stellt die von AmazonRedshiftDataFullAccess verwaltete Richtlinie bereit. Diese Richtlinie bietet vollständigen Zugriff auf die Amazon-Redshift-Data-API-Vorgänge. Diese Richtlinie ermöglicht auch den bereichsbezogenen Zugriff auf bestimmte Amazon Redshift- und IAM-API-OperationenAWS Secrets Manager, die für die Authentifizierung und den Zugriff auf einen Amazon Redshift Redshift-Cluster oder eine Redshift Serverless-Arbeitsgruppe erforderlich sind.

Sie können auch eine eigene IAM-Richtlinie erstellen, die den Zugriff auf bestimmte Ressourcen ermöglicht. Um Ihre Richtlinie zu erstellen, verwenden Sie die AmazonRedshiftDataFullAccess-Richtlinie als Ausgangspunkt. Nach dem Erstellen Ihrer Richtlinie können Sie diese jedem Benutzer hinzufügen, der Zugriff auf die Data API benötigt.

Berücksichtigen Sie die folgenden Anforderungen der IAM-Richtlinie, die mit dem Benutzer verknüpft ist:

  • Wenn Sie die Authentifizierung verwenden, vergewissern Sie AWS Secrets Manager sich, dass die Richtlinie die Verwendung der Aktion zum Abrufen des mit dem Schlüssel markierten Geheimnisses secretsmanager:GetSecretValue zulässt. RedshiftDataFullAccess

  • Wenn Sie temporäre Anmeldeinformationen für die Authentifizierung verwenden, prüfen Sie, ob die Richtlinie die Verwendung der redshift:GetClusterCredentials-Aktion für den Datenbankbenutzernamen redshift_data_api_user für jede Datenbank im Cluster erlaubt. Dieser Benutzername muss bereits in Ihrer Datenbank erstellt worden sein.

  • Wenn Sie temporäre Anmeldeinformationen verwenden, um sich bei einer Serverless-Arbeitsgruppe zu authentifizieren, bestätigen Sie, dass die Richtlinie die Verwendung der Aktion redshift-serverless:GetCredentials zum Abrufen der mit dem Schlüssel RedshiftDataFullAccess gekennzeichneten Arbeitsgruppe zulässt. Der Datenbankbenutzer wird der Quellidentität AWS Identity and Access Management (IAM) 1:1 zugeordnet. Der Benutzer sample_user ist beispielsweise einem Datenbankbenutzer IAM:sample_user und die IAM-Rolle sample_role ist IAMR:sample_role zugeordnet. Weitere Informationen zu unterschiedlichen IAM-Identitäten finden Sie unter IAM-Identitäten (Benutzer, Benutzergruppen und Rollen) im IAM-Benutzerhandbuch.

  • Die IAM-Aktion redshift-data:GetStatementResult ermöglicht den Zugriff auf die API-Operationen GetStatementResult und GetStatementResultV2.

Unter den folgenden Links finden Sie weitere Informationen zum AWS Identity and Access Management IAM-Benutzerhandbuch.

Ausführen einer Abfrage auf einem Cluster, der einem anderen Konto gehört

Um eine Abfrage in einem Cluster auszuführen, der einem anderen Konto gehört, muss das besitzende Konto eine IAM-Rolle bereitstellen, die die Data API im aufrufenden Konto übernehmen kann. Angenommen, Konto B besitzt einen Cluster, auf den Konto A zugreifen muss. Konto B kann die AWS verwaltete Richtlinie AmazonRedshiftDataFullAccess der IAM-Rolle von Konto B zuordnen. Dann vertraut Konto B Konto A mit einer Vertrauensrichtlinie wie der folgenden:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/someRoleA" ] }, "Action": "sts:AssumeRole" } ] }

Schließlich muss die IAM-Rolle von Konto A die IAM-Rolle von Konto B übernehmen können.

JSON
{ "Version":"2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/someRoleB" } }

Geben Sie eine IAM-Rolle an, die die Ressourcen auf Redshift-Serverless-Arbeitsgruppen und Amazon-Redshift-Cluster in einem AWS-Konto beschränkt.

Sie können ARNs in Ihrer identitätsbasierten Richtlinie eine Ressource angeben, um den Zugriff auf Redshift Serverless-Arbeitsgruppen und Amazon Redshift Redshift-Cluster in einem zu kontrollieren. AWS-Konto In diesem Beispiel wird gezeigt, wie Sie eine Richtlinie erstellen können, die den Zugriff auf die Data API nur für die Arbeitsgruppe und die Cluster in dem angegebenen AWS-Konto ermöglicht.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*" }, { "Effect": "Allow", "Action": "redshift-data:*", "Resource": [ "arn:aws:redshift:us-east-1:111122223333:workgroup/*", "arn:aws:redshift:us-east-1:111122223333:cluster:*" ] } ] }

Konfigurieren Sie eine IAM-Richtlinie, die den Zugriff auf SQL-Anweisungsinformationen auf den Eigentümer der Anweisung beschränkt

Standardmäßig behandelt die Amazon Redshift Data API die IAM-Rolle, die beim Aufrufen von ExecuteStatement und BatchExecuteStatement verwendet wird, als Eigentümer der SQL-Anweisung. Jeder, der die Rolle übernehmen darf, kann auf Informationen über die SQL-Anweisung zugreifen, einschließlich ihrer Ergebnisse. Um den Zugriff auf Informationen zu SQL-Anweisungen auf eine IAM-Rollensitzung mit einem bestimmten Eigentümer zu beschränken, fügen Sie eine Bedingung redshift-data:statement-owner-iam-userid: "${aws:userid}" hinzu. Die folgende IAM-Richtlinie beschränkt den Zugriff.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:GetStatementResult", "redshift-data:ListStatements" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } } ] }

Sie können die Bedingung statement-owner-iam-userid mit CancelStatement, DescribeStatement, GetStatementResult und ListStatements verwenden. Weitere Informationen finden Sie unter Actions defined by Amazon Redshift Data API.

Konfigurieren Sie eine IAM-Richtlinie, die den Zugriff auf SQL-Ergebnisse auf den Sitzungseigentümer beschränkt

Standardmäßig behandelt die Amazon Redshift Data API die IAM-Rolle, die beim Aufrufen von ExecuteStatement und BatchExecuteStatement verwendet wird, als Eigentümer der Datenbanksitzung, in der die SQL-Anweisung ausgeführt wird. Jeder, der berechtigt ist, die Rolle anzunehmen, kann Abfragen an die Datenbanksitzung stellen. Um den Sitzungszugriff auf eine IAM-Rollensitzung mit einem bestimmten Eigentümer zu beschränken, fügen Sie eine Bedingung redshift-data:session-owner-iam-userid: "${aws:userid}" hinzu. Die folgende IAM-Richtlinie beschränkt den Zugriff.

Die folgende IAM-Richtlinie ermöglicht es nur dem Sitzungseigentümer, Anweisungsergebnisse abzurufen. Die Bedingung session-owner-iam-userid wird verwendet, um den Ressourcenzugriff auf die angegebene userid zu beschränken.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift-data:ExecuteStatement", "redshift-data:BatchExecuteStatement" ], "Resource": "*", "Condition": { "StringEquals": { "redshift-data:session-owner-iam-userid": "${aws:userid}" } } } ] }

Sie können die Bedingung session-owner-iam-userid mit ExecuteStatement und BatchExecuteStatement verwenden. Weitere Informationen finden Sie unter Actions defined by Amazon Redshift Data API.