Autorisieren der Vorgänge COPY, UNLOAD, CREATE EXTERNAL FUNCTION und CREATE EXTERNAL SCHEMA mithilfe von IAM-Rollen - Amazon Redshift

Autorisieren der Vorgänge COPY, UNLOAD, CREATE EXTERNAL FUNCTION und CREATE EXTERNAL SCHEMA mithilfe von IAM-Rollen

Sie können den Befehl COPY verwenden, um Daten in Amazon Redshift zu laden (oder zu importieren), und den Befehl UNLOAD, um Daten aus Amazon Redshift zu entladen (oder zu exportieren). Sie können den Befehl CREATE EXTERNAL FUNCTION verwenden, um benutzerdefinierte Funktionen zu erstellen, die Funktionen aus aufrufen AWS Lambda.

Wenn Sie Amazon Redshift Spectrum verwenden, verwenden Sie den Befehl CREATE EXTERNAL SCHEMA, um den Speicherort eines Amazon S3 Buckets anzugeben, der Ihre Daten enthält. Wenn Sie die Befehle COPY, UNLOAD oder CREATE EXTERNAL SCHEMA ausführen, geben Sie Sicherheitsanmeldeinformationen an. Diese Anmeldeinformationen autorisieren Ihren Amazon-Redshift-Cluster zum Lesen oder Schreiben von Daten in und aus Ihrem Zielspeicherort, wie beispielsweise einem Amazon S3 Bucket.

Wenn Sie CREATE EXTERNAL FUNCTION ausführen, geben Sie Sicherheitsanmeldeinformationen mithilfe des IAM-Rollenparameters an. Diese Anmeldeinformationen autorisieren Ihren Amazon-Redshift-Cluster, Lambda-Funktionen aus aufzurufen AWS Lambda. Zur Bereitstellung von Sicherheitsanmeldeinformationen geben Sie am besten eine AWS Identity and Access Management (IAM)-Rolle an. Für COPY und UNLOAD können Sie AWS-Zugriffsschlüssel bereitstellen. Weitere Informationen zum Erstellen einer IAM-Rolle finden Sie unter Amazon Redshift autorisieren, in Ihrem Namen auf andere AWS-Services zuzugreifen.

Eine IAM-Rolle wird wie folgt verwendet:

  • Erstellen Sie eine IAM-Rolle zur Verwendung mit Ihrem Amazon-Redshift-Cluster.

  • Verknüpfen Sie die IAM-Rolle mit dem Cluster.

  • Schließen Sie den ARN der IAM-Rolle ein, wenn Sie den Befehl COPY, UNLOAD, CREATE EXTERNAL FUNCTION oder CREATE EXTERNAL SCHEMA aufrufen.

In diesem Thema erfahren Sie, wie Sie eine IAM-Rolle einem Amazon-Redshift-Cluster zuordnen.

Verknüpfen von IAM-Rollen mit Clustern

Nachdem Sie eine IAM-Rolle erstellt haben, die Amazon Redshift berechtigt, für Sie auf andere AWS-Services zuzugreifen, müssen Sie diese Rolle einem Amazon-Redshift-Cluster zuordnen. Dies ist Voraussetzung dafür, dass Sie die Rolle zum Laden oder Entladen von Daten verwenden können.

Für die Verknüpfung einer IAM-Rolle mit einem Cluster erforderliche Berechtigungen

Um eine IAM-Rolle mit einem Cluster verknüpfen zu können, muss ein IAM-Benutzer über die iam:PassRole-Berechtigung für diese IAM-Rolle verfügen. Mit dieser Berechtigung kann ein Administrator einschränken, welche IAM-Rollen ein Benutzer Amazon-Redshift-Clustern zuordnen kann.

Das folgende Beispiel zeigt eine IAM-Richtlinie, die mit einem IAM-Benutzer verbunden werden kann und diesem die Durchführung dieser Aktionen ermöglicht:

  • Rufen Sie die Details für alle Amazon-Redshift-Cluster ab, die dem Konto dieses Benutzers gehören.

  • Ordnen Sie eine von drei IAM-Rollen einem von zwei Amazon-Redshift-Clustern zu.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" }, { "Effect": "Allow", "Action": [ "redshift:ModifyClusterIamRoles", "redshift:CreateCluster" ], "Resource": [ "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "arn:aws:redshift:us-east-1:123456789012:cluster:my-second-redshift-cluster" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:aws:iam::123456789012:role/MyRedshiftRole", "arn:aws:iam::123456789012:role/SecondRedshiftRole", "arn:aws:iam::123456789012:role/ThirdRedshiftRole" ] } ] }

Nachdem ein IAM-Benutzer die entsprechenden Berechtigungen besitzt, kann er eine IAM-Rolle einem Amazon-Redshift-Cluster zuordnen. Die IAM-Rolle kann dann mit dem Befehl COPY oder UNLOAD oder anderen Amazon-Redshift-Befehlen verwendet werden.

Weitere Informationen zu IAM-Richtlinien finden Sie unter Übersicht über IAM-Richtlinien im IAM-Benutzerhandbuch.

Verwaltung der Verknüpfung einer IAM-Rolle mit einem Cluster

Sie können eine IAM-Rolle einem Amazon-Redshift-Cluster zuordnen, wenn Sie den Cluster erstellen. Oder Sie können einen bestehenden Cluster ändern und eine oder mehrere IAM-Rollenzuordnungen hinzufügen oder entfernen.

Achten Sie auf Folgendes:

  • Sie können einem Amazon-Redshift-Cluster maximal 10 IAM-Rollen zuordnen.

  • Eine IAM-Rolle kann mehreren Amazon-Redshift-Clustern zugeordnet werden.

  • Eine IAM-Rolle kann nur dann einem Amazon-Redshift-Cluster zugeordnet werden, wenn sowohl die IAM-Rolle als auch der Cluster demselben AWS-Konto gehören.

Verwendung der Konsole zur Verwaltung der Verknüpfungen von IAM-Rollen

Sie können die Verknüpfungen von IAM-Rollen für einen Cluster in der folgenden Weise mithilfe der Konsole verwalten.

Anmerkung

Für Amazon Redshift ist eine neue Konsole verfügbar. Wählen Sie je nach verwendeter Konsole eine der Anweisungen New console (Neue Konsole) oder Original console (Ursprüngliche Konsole) aus. Standardmäßig wird die Anweisung New Console (Neue Konsole) geöffnet.

So verwalten Sie IAM-Rollenzuordnungen:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-Redshift-Konsole unter https://console.aws.amazon.com/redshift/.

  2. Wählen Sie im Navigationsmenü CLUSTERS (CLUSTER) und dann den Cluster aus, den Sie aktualisieren möchten.

  3. Wählen Sie unter Actions (Aktionen) Manage IAM roles (IAM-Rollen verwalten) aus, um die aktuellen Liste der dem Cluster zugeordneten IAM-Rollen anzuzeigen.

  4. Wählen Sie auf der Seite Manage IAM roles (IAM-Rollen verwalten) die verfügbaren IAM-Rollen aus, die hinzugefügt werden sollen. Wählen Sie dann Add IAM role (IAM-Rolle hinzufügen) aus.

  5. Wählen Sie Done (Beenden), um Ihre Änderungen zu speichern.

So verwalten Sie IAM-Rollenzuordnungen:

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-Redshift-Konsole unter https://console.aws.amazon.com/redshift/.

  2. Klicken Sie im Navigationsbereich auf Clusters (Cluster).

  3. Wählen Sie in der Liste den Cluster, für den Sie IAM-Rollenzuweisungen verwalten möchten.

  4. Wählen Sie See IAM Roles (IAM-Rollen anzeigen) aus.

  5. Um eine IAM-Rolle dem Cluster zuzuordnen, wählen Sie Ihre IAM-Rolle für Available roles (Verfügbare Rollen) aus. Sie können eine IAM-Rolle auch manuell eingeben, wenn sie in der Liste nicht vorhanden ist (etwa, weil sie noch nicht erstellt wurde).

  6. Um die Verknüpfung einer IAM-Rolle mit dem Cluster aufzuheben, wählen Sie X für die IAM-Rolle, deren Verknüpfung Sie aufheben möchten.

  7. Wenn Sie die Modifizierung der Verknüpfungen von IAM-Rollen mit dem Cluster abgeschlossen haben, wählen Sie Apply Changes (Änderungen anwenden), um die mit dem Cluster verknüpften IAM-Rollen zu aktualisieren.

Das Fenster Manage IAM Roles (IAM-Rollen verwalten) zeigt den Status Ihrer Verknüpfungen von Clustern und IAM-Rollen an. Rollen, die mit dem Cluster verknüpft wurden, zeigen den Status in-sync. Rollen, deren Verknüpfung mit dem Cluster derzeit bearbeitet wird, zeigen den Status adding. Rollen, deren Verknüpfung mit dem Cluster derzeit aufgehoben wird, zeigen den Status removing.

Verwendung der AWS CLI zur Verwaltung der Verknüpfungen von IAM-Rollen

Sie können die Verknüpfungen von IAM-Rollen für einen Cluster in der folgenden Weise mithilfe der AWS CLI verwalten.

Verknüpfen einer IAM-Rolle mit einem Cluster unter Verwendung der AWS CLI

Um eine IAM-Rolle mit einem Cluster bei dessen Erstellung zu verknüpfen, geben Sie den Amazon-Ressourcennamen (ARN) der IAM-Rolle als --iam-role-arns-Parameter des Befehls create-cluster an. Sie können beim Aufruf des create-cluster-Befehls bis zu 10 IAM-Rollen angeben.

Das Zuordnen von IAM-Rollen zu Amazon-Redshift-Clustern und das Aufheben der Zuordnungen sind asynchrone Prozesse. Mit dem Befehl describe-clusters können Sie den Status aller Verknüpfungen von IAM-Rollen mit Clustern abrufen.

Im folgenden Beispiel werden zwei IAM-Rollen mit dem neu erstellten Cluster verknüpft my-redshift-cluster.

aws redshift create-cluster \ --cluster-identifier "my-redshift-cluster" \ --node-type "dc1.large" \ --number-of-nodes 16 \ --iam-role-arns "arn:aws:iam::123456789012:role/RedshiftCopyUnload" \ "arn:aws:iam::123456789012:role/SecondRedshiftRole"

Um eine IAM-Rolle einem bestehenden Amazon-Redshift-Cluster zuzuordnen, geben Sie den Amazon-Ressourcennnamen (ARN) der IAM-Rolle für den --add-iam-roles-Parameter des modify-cluster-iam-roles-Befehls an. Sie können beim Aufruf des modify-cluster-iam-roles-Befehls bis zu 10 IAM-Rollen angeben.

Im folgenden Beispiel wird eine IAM-Rolle mit dem bestehenden Cluster verknüpft my-redshift-cluster.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --add-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
Aufheben der Verknüpfung einer IAM-Rolle mit einem Cluster unter Verwendung der AWS CLI

Um die Verknüpfung einer IAM-Rolle mit einem Cluster aufzuheben, geben Sie den ARN der IAM-Rolle als Parameter --remove-iam-roles des Befehls modify-cluster-iam-roles an. Sie können beim Aufruf des modify-cluster-iam-roles-Befehls bis zu 10 zu entfernende IAM-Rollen angeben.

Im folgenden Beispiel wird die Zuordnung einer IAM-Rolle für das AWS-Konto 123456789012 vom Cluster my-redshift-cluster entfernt.

aws redshift modify-cluster-iam-roles \ --cluster-identifier "my-redshift-cluster" \ --remove-iam-roles "arn:aws:iam::123456789012:role/RedshiftCopyUnload"
Auflistung der Verknüpfungen von IAM-Rollen für einen Cluster mithilfe der AWS CLI

Rufen Sie den Befehl describe-clusters auf, um eine Liste aller einem Amazon-Redshift-Cluster zugeordneten IAM-Rollen und den Status der IAM-Rollen-Zuordnung anzuzeigen. Der ARN jeder der mit dem Cluster verknüpften IAM-Rollen wird in der IamRoles-Liste aufgeführt, wie in der folgenden Beispielausgabe gezeigt.

Rollen, die mit dem Cluster verknüpft wurden, zeigen den Status in-sync. Rollen, deren Verknüpfung mit dem Cluster derzeit bearbeitet wird, zeigen den Status adding. Rollen, deren Verknüpfung mit dem Cluster derzeit aufgehoben wird, zeigen den Status removing.

{ "Clusters": [ { "ClusterIdentifier": "my-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 16, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... }, { "ClusterIdentifier": "my-second-redshift-cluster", "NodeType": "dc1.large", "NumberOfNodes": 10, "IamRoles": [ { "IamRoleArn": "arn:aws:iam::123456789012:role/MyRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/SecondRedshiftRole", "IamRoleApplyStatus": "in-sync" }, { "IamRoleArn": "arn:aws:iam::123456789012:role/ThirdRedshiftRole", "IamRoleApplyStatus": "in-sync" } ], ... } ] }

Weitere Informationen zum Verwenden der AWS CLI finden Sie im AWS CLI-Benutzerhandbuch.