IAMRichtlinien für Amazon Redshift Spectrum - Amazon Redshift

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.

IAMRichtlinien für Amazon Redshift Spectrum

In diesem Thema werden die erforderlichen IAM Berechtigungen für die Verwendung von Redshift Spectrum beschrieben.

Standardmäßig verwendet Amazon Redshift Spectrum die AWS Regionen, die AWS Glue Data Catalog dies unterstützen AWS Glue. In anderen AWS Regionen verwendet Redshift Spectrum den Athena-Datenkatalog. Ihr Cluster benötigt eine Autorisierung, um auf Ihren externen Datenkatalog in AWS Glue oder Athena und Ihre Datendateien in Amazon S3 zuzugreifen. Sie erteilen diese Autorisierung, indem Sie auf eine Rolle AWS Identity and Access Management (IAM) verweisen, die Ihrem Cluster zugeordnet ist. Wenn Sie einen Apache-Hive-Metastore zur Verwaltung Ihres Datenkatalogs verwenden, müssen Sie keinen Zugriff auf Athena ermöglichen.

Sie können Rollen miteinander verketten. Auf diese Weise kann der Cluster andere Rolle annehmen, die nicht dem Cluster angefügt sind. Weitere Informationen finden Sie unter Verkettung von IAM Rollen in Amazon Redshift Spectrum.

Der AWS Glue Katalog, auf den Sie zugreifen, ist möglicherweise verschlüsselt, um die Sicherheit zu erhöhen. Wenn der AWS Glue Katalog verschlüsselt ist, benötigen Sie den AWS KMS Schlüssel für, AWS Glue um auf den AWS Glue Datenkatalog zuzugreifen. Weitere Informationen finden Sie unter Verschlüsseln Ihres AWS Glue Datenkatalogs im AWS Glue Entwicklerhandbuch.

Amazon-S3-Berechtigungen

Ihr Cluster benötigt GET mindestens LIST Zugriff auf Ihren Amazon S3 S3-Bucket. Wenn sich Ihr Bucket nicht in demselben AWS Konto wie Ihr Cluster befindet, muss Ihr Bucket auch Ihren Cluster autorisieren, auf die Daten zuzugreifen. Weitere Informationen finden Sie unter Autorisieren von Amazon Redshift, in Ihrem Namen auf andere AWS Dienste zuzugreifen.

Anmerkung

Der Amazon S3 S3-Bucket kann keine Bucket-Richtlinie verwenden, die den Zugriff nur von bestimmten VPC Endpunkten aus einschränkt.

Die folgende Richtlinie gewährt GET LIST Zugriff auf jeden Amazon S3 S3-Bucket. Die Richtlinie ermöglicht den Zugriff auf Amazon S3 S3-Buckets für Redshift Spectrum sowie COPY auf Operationen.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "*" }] }

Die folgende Richtlinie gewährt GET LIST Zugriff auf Ihren Amazon S3 S3-Bucket mit dem Namenamzn-s3-demo-bucket.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }] }

Kontoübergreifende Amazon-S3-Berechtigungen

Um Redshift Spectrum die Erlaubnis zu erteilen, auf Daten in einem Amazon S3 S3-Bucket zuzugreifen, der zu einem anderen AWS Konto gehört, fügen Sie dem Amazon S3 S3-Bucket die folgende Richtlinie hinzu. Weitere Informationen finden Sie unter Beispiel 2: Bucket-Eigentümer erteilt kontoübergreifende Bucket-Berechtigungen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::redshift-account:role/spectrumrole" }, "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::bucketname", "arn:aws:s3:::bucketname/*" ] } ] }

Richtlinien zum Gewähren oder Beschränken des Zugriffs mit Redshift Spectrum

Um den Zugriff auf einen Amazon-S3-Bucket nur mit der Verwendung von Redshift Spectrum zu gewähren, fügen Sie eine Bedingung ein, die den Zugriff für den Benutzeragenten AWS Redshift/Spectrum gewährt. Die folgende Richtlinie erlaubt den Zugriff auf Amazon-S3-Buckets nur für Redshift Spectrum. Andere Zugriffe, wie z. B. COPY Operationen, sind davon ausgeschlossen.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

In ähnlicher Weise möchten Sie möglicherweise eine IAM Rolle erstellen, die den Zugriff für COPY Operationen ermöglicht, den Zugriff auf Redshift Spectrum jedoch ausschließt. Fügen Sie dazu eine Bedingung ein, die dem Benutzeragenten AWS Redshift/Spectrum den Zugriff verweigert. Die folgende Richtlinie erlaubt den Zugriff auf einen Amazon-S3-Bucket, ausgenommen für Redshift Spectrum.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": {"StringNotEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

Richtlinien zum Gewähren von Mindestberechtigungen

Die folgende Richtlinie gewährt die Mindestberechtigungen, die für die Verwendung von Redshift Spectrum mit Amazon S3 AWS Glue, und Athena erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::bucketname", "arn:aws:s3:::bucketname/folder1/folder2/*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "*" ] } ] }

Wenn Sie stattdessen Athena für Ihren Datenkatalog verwenden AWS Glue, erfordert die Richtlinie vollen Athena-Zugriff. Die folgende Richtlinie gewährt den Zugriff auf Athena-Ressourcen. Wenn sich Ihre externe Datenbank in einem Hive-Metastore befindet, benötigen Sie keinen Athena-Zugriff.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["athena:*"], "Resource": ["*"] }] }

Verkettung von IAM Rollen in Amazon Redshift Spectrum

Wenn Sie Ihrem Cluster eine Rolle zuordnen, kann Ihr Cluster diese Rolle übernehmen, um auf Amazon S3, Athena und in AWS Glue Ihrem Namen zuzugreifen. 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. Sie können maximal 10 Rollen miteinander verketten. 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.

Zum Verketten von Rollen richten Sie eine Vertrauensstellung zwischen den Rollen ein. Eine Rolle, die eine andere Rolle annimmt, muss über eine Berechtigungsrichtlinie verfügen, die es ihr erlaubt, die angegebene Rolle anzunehmen. Die Rolle, die Berechtigungen übergibt, muss wiederum über eine Vertrauensstellung verfügen, die es ihr erlaubt, ihre Berechtigungen an eine andere Rolle zu übergeben. Weitere Informationen finden Sie unter Verkettung von IAM Rollen in Amazon Redshift.

Wenn Sie den CREATE EXTERNAL SCHEMA Befehl ausführen, können Sie Rollen verketten, indem Sie eine durch Kommas getrennte Rollenliste hinzufügen. ARNs

Anmerkung

Die Liste der verketteten Rollen darf keine Leerstellen enthalten.

Im folgenden Beispiel wird MyRedshiftRole an den Cluster angehängt. MyRedshiftRole nimmt die Rolle AcmeData an, die zum Konto 111122223333 gehört.

create external schema acme from data catalog database 'acmedb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole,arn:aws:iam::111122223333:role/AcmeData';

Steuern des Zugriffs auf den Datenkatalog AWS Glue

Wenn Sie AWS Glue für Ihren Datenkatalog verwenden, können Sie mit Ihrer IAM Richtlinie eine detaillierte Zugriffskontrolle auf den AWS Glue Datenkatalog anwenden. Beispielsweise möchten Sie möglicherweise nur einige Datenbanken und Tabellen einer bestimmten IAM Rolle zugänglich machen.

In den folgenden Abschnitten werden die IAM Richtlinien für verschiedene Zugriffsebenen auf im Datenkatalog gespeicherte AWS Glue Daten beschrieben.

Richtlinie für Datenbankoperationen

Wenn Sie Benutzern Berechtigungen zum Anzeigen und Erstellen einer Datenbank erteilen möchten, benötigen sie Zugriffsrechte sowohl für die Datenbank als auch für den AWS Glue Datenkatalog.

Mit der folgenden Beispielabfrage wird eine Datenbank erstellt.

CREATE EXTERNAL SCHEMA example_db FROM DATA CATALOG DATABASE 'example_db' region 'us-west-2' IAM_ROLE 'arn:aws:iam::redshift-account:role/spectrumrole' CREATE EXTERNAL DATABASE IF NOT EXISTS

Die folgende IAM Richtlinie gewährt die Mindestberechtigungen, die zum Erstellen einer Datenbank erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:catalog" ] } ] }

Mit der folgenden Beispielabfrage werden die aktuellen Datenbanken aufgelistet.

SELECT * FROM SVV_EXTERNAL_DATABASES WHERE databasename = 'example_db1' or databasename = 'example_db2';

Die folgende IAM Richtlinie gewährt die Mindestberechtigungen, die zum Auflisten der aktuellen Datenbanken erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:database/example_db1", "arn:aws:glue:us-west-2:redshift-account:database/example_db2", "arn:aws:glue:us-west-2:redshift-account:catalog" ] } ] }

Richtlinie für Tabellenoperationen

Wenn Sie Benutzern Berechtigungen für View, Create, Drop, Alter oder andere Aktionen für Tabellen erteilen möchten, benötigen sie mehrere Zugriffsarten. Sie benötigen Zugriff auf die Tabellen selbst, die Datenbanken, zu denen sie gehören, und den Katalog.

Mit der folgenden Beispielabfrage wird eine externe Tabelle erstellt.

CREATE EXTERNAL TABLE example_db.example_tbl0( col0 INT, col1 VARCHAR(255) ) PARTITIONED BY (part INT) STORED AS TEXTFILE LOCATION 's3://test/s3/location/';

Die folgende IAM Richtlinie gewährt die Mindestberechtigungen, die zum Erstellen einer externen Tabelle erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Mit den folgenden Beispielabfragen werden die aktuellen externen Tabellen aufgelistet.

SELECT * FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT * FROM svv_external_columns WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT parameters FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Auflisten der aktuellen externen Tabellen erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl1" ] } ] }

Mit der folgenden Beispielabfrage wird eine vorhandene Tabelle geändert.

ALTER TABLE example_db.example_tbl0 SET TABLE PROPERTIES ('numRows' = '100');

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Ändern einer vorhandenen Tabelle erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Mit der folgenden Beispielabfrage wird eine vorhandene Tabelle entfernt.

DROP TABLE example_db.example_tbl0;

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Löschen einer vorhandenen Tabelle erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Richtlinie für Partitionsoperationen

Wenn Sie Benutzern die Berechtigung zum Ausführen von Vorgängen auf Partitionsebene (Anzeigen, Erstellen, Entfernen, Ändern usw.) erteilen möchten, benötigen sie Berechtigungen für die Tabellen, zu denen die Partitionen gehören. Sie benötigen darüber hinaus Berechtigungen für die zugehörigen Datenbanken und den AWS Glue -Datenkatalog.

Mit der folgenden Beispielabfrage wird eine Partition erstellt.

ALTER TABLE example_db.example_tbl0 ADD PARTITION (part=0) LOCATION 's3://test/s3/location/part=0/'; ALTER TABLE example_db.example_t ADD PARTITION (part=1) LOCATION 's3://test/s3/location/part=1/';

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Erstellen einer Partition erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTable", "glue:BatchCreatePartition" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Mit der folgenden Beispielabfrage werden die aktuellen Partitionen aufgelistet.

SELECT * FROM svv_external_partitions WHERE schemname = 'example_db' AND tablename = 'example_tbl0'

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Auflisten der aktuellen Partitionen erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetPartitions", "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Mit der folgenden Beispielabfrage wird eine vorhandene Partition geändert.

ALTER TABLE example_db.example_tbl0 PARTITION(part='0') SET LOCATION 's3://test/s3/new/location/part=0/';

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Ändern einer vorhandenen Partition erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetPartition", "glue:UpdatePartition" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }

Mit der folgenden Beispielabfrage wird eine vorhandene Partition entfernt.

ALTER TABLE example_db.example_tbl0 DROP PARTITION(part='0');

Die folgende IAM Richtlinie gibt die Mindestberechtigungen an, die zum Löschen einer vorhandenen Partition erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:DeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:redshift-account:catalog", "arn:aws:glue:us-west-2:redshift-account:database/example_db", "arn:aws:glue:us-west-2:redshift-account:table/example_db/example_tbl0" ] } ] }