Verketten von IAM-Rollen in Amazon Redshift - Amazon Redshift

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.

Verketten von IAM-Rollen in Amazon Redshift

Wenn Sie Ihrem Cluster eine Rolle zuordnen, kann Ihr Cluster diese Rolle übernehmen, um auf Amazon S3, Amazon Athena und in AWS Lambda Ihrem Namen zuzugreifen. AWS Glue Wenn eine an den Cluster angefügte Rolle keinen Zugriff auf die erforderlichen Ressourcen hat, können Sie mit ihr eine andere Rolle verketten, die möglicherweise zu einem anderen Konto gehört. Ihr Cluster nimmt dann vorübergehend die verkettete Rolle an, um auf die Daten zuzugreifen. Sie können über verkettete Rollen auch kontoübergreifenden Zugriff gewähren. Jede Rolle in der Kette nimmt die nächste Rolle in der Kette an, bis hin zum Cluster, der die Rolle am Ende der Kette annimmt. Die maximale Anzahl von IAM-Rollen, die Sie zuordnen können, unterliegt einem Kontingent. Weitere Informationen finden Sie unter dem Kontingent „Cluster-IAM-Rollen für Amazon Redshift für den Zugriff auf andere AWS Dienste“ unter. Kontingente für Amazon-Redshift-Objekte

Anmerkung

Sie müssen die IAM-Rollen angeben, damit die Kette ordnungsgemäß funktioniert.

Nehmen wir zum Beispiel an, Unternehmen A möchte auf Daten in einem Amazon S3 S3-Bucket zugreifen, der zu Unternehmen B gehört. Unternehmen A erstellt eine AWS Servicerolle für Amazon Redshift mit dem Namen RoleA und fügt sie ihrem Cluster hinzu. Unternehmen B erstellt eine Rolle mit dem Namen RoleB, die berechtigt ist, auf die Daten des Buckets von Unternehmen B zuzugreifen. Um auf die Daten im Bucket von Unternehmen B zuzugreifen, führt Unternehmen A den Befehl COPY mit einem iam_role-Parameter aus, der RoleA und RoleB verkettet. Für die Dauer des COPY-Vorgangs übernimmt RoleA vorübergehend RoleB, um auf den Amazon S3 Bucket zuzugreifen.

Zum Verketten von Rollen richten Sie eine Vertrauensstellung zwischen den Rollen ein. Eine Rolle, die eine andere Rolle annimmt (z. B. RoleA), muss über eine Berechtigungsrichtlinie verfügen, die es ihr erlaubt, die nächste verkettete Rolle (z. B. RoleB) anzunehmen. Die Rolle, die Berechtigungen übergibt (RoleB), muss wiederum über eine Vertrauensstellung verfügen, die es ihr erlaubt, ihre Berechtigungen an die vorherige verkettete Rolle (RoleA) zu übergeben. Weitere Informationen finden Sie unter Verwenden von IAM-Rollen im IAM-Benutzerhandbuch.

Die erste Rolle in der Kette muss eine dem Cluster angefügte Rolle sein. Die erste und jede folgende Rolle, die die nächste Rolle in der Kette annimmt, muss über eine Richtlinie verfügen, die eine bestimmte Anweisung enthält. Diese Anweisung enthält die Auswirkung Allow auf die Aktion sts:AssumeRole und den Amazon-Ressourcennamen (ARN) der nächsten Rolle in einem Resource-Element. In unserem Beispiel verfügt RoleA über die folgende Berechtigungsrichtlinie, die es ihr erlaubt, RoleB zu übernehmen, die dem AWS -Konto 210987654321 gehört.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::210987654321:role/RoleB" } ] }

Eine Rolle, die an eine andere Rolle übergeht, muss eine Vertrauensbeziehung mit der Rolle aufbauen, die die Rolle übernimmt, oder mit dem AWS Konto, dem die Rolle gehört. In unserem Beispiel verfügt RoleB über die folgende Vertrauensrichtlinie zum Einrichten einer Vertrauensstellung mit RoleA.

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

Mit der folgenden Vertrauensrichtlinie wird eine Vertrauensbeziehung mit dem AWS Kontoinhaber hergestellt123456789012. RoleA

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
Anmerkung

Um die Autorisierung zur Rollenverkettung auf bestimmte Benutzer zu beschränken, definieren Sie eine Bedingung. Weitere Informationen finden Sie unter Einschränken des Zugriffs auf IAM-Rollen.

Wenn Sie einen UNLOAD-, COPY-, CREATE EXTERNAL FUNCTION- oder CREATE EXTERNAL SCHEMA-Befehl ausführen, verketten Sie Rollen, indem Sie eine durch Kommas getrennte Rollenliste ARNs in den Parameter aufnehmen. iam_role Nachfolgend finden Sie die Syntax für die Verkettung von Rollen im iam_role-Parameter.

unload ('select * from venue limit 10') to 's3://acmedata/redshift/venue_pipe_' IAM_ROLE 'arn:aws:iam::<aws-account-id-1>:role/<role-name-1>[,arn:aws:iam::<aws-account-id-2>:role/<role-name-2>][,...]';
Anmerkung

Die gesamte Rollenkette ist in einfachen Anführungszeichen eingeschlossen und darf keine Leerzeichen enthalten.

In den folgenden Beispielen ist RoleA dem Cluster angefügt, der dem AWS -Konto 123456789012 gehört. RoleB, die dem Konto 210987654321 gehört, ist berechtigt, auf den Bucket mit dem Namen s3://companyb/redshift/ zuzugreifen. Im folgenden Beispiel werden RoleA und RoleB verkettet, um Daten mit dem UNLOAD-Befehl im s3://companyb/redshift/-Bucket zu entladen.

unload ('select * from venue limit 10') to 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Das folgende Beispiel verwendet den COPY-Befehl zum Laden der Daten, die im vorherigen Beispiel entladen wurden.

copy venue from 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Im folgende Beispiel verwendet der CREATE EXTERNAL SCHEMA-Befehl verkettete Rollen, um die Rolle anzunehmen RoleB.

create external schema spectrumexample from data catalog database 'exampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

Im folgenden Beispiel verwendet der Befehl CREATE EXTERNAL FUNCTION verkettete Rollen, um die Rolle anzunehmen RoleB.

create external function lambda_example(varchar) returns varchar volatile lambda 'exampleLambdaFunction' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';