View a markdown version of this page

IAM-Berechtigungen für die Datenlieferung - Amazon Kinesis Data Streams

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.

IAM-Berechtigungen für die Datenlieferung

In diesem Thema erfahren Sie mehr über die IAM-Berechtigungen, die für die Erstellung und Verwaltung von Bereitstellungsressourcen in Amazon Kinesis Data Streams erforderlich sind, sowie über die Rolle der Serviceausführung, die die Datenbereitstellung übernimmt, um Daten an Ihr Ziel zu liefern.

Berechtigungen für die Lebenszyklusverwaltung

Um Bereitstellungsressourcen zu erstellen, zu aktualisieren, zu löschen, zu beschreiben und aufzulisten, muss der aufrufende IAM-Principal über die folgenden Berechtigungen verfügen:

Berechtigungen für den Lebenszyklus der Bereitstellung
Action Ressource Description
kinesis:CreateChannel Streamen Sie ARN (arn:aws:kinesis:region:account-id:stream/stream-name) Erstellen Sie eine Lieferung in einem Kinesis Data Streams-Stream.
kinesis:AssociateStreamsWithChannel Streamen Sie ARN () arn:aws:kinesis:region:account-id:stream/stream-name Ordnen Sie einen Stream einer Lieferung zu. Dies ist eine virtuelle Aktion, die dem aufrufenden Prinzipal gewährt werden muss, um eine Übertragung zu erstellen, die aus dem angegebenen Stream liest. Sie ist zusätzlich zu autorisiertkinesis:CreateChannel.
kinesis:UpdateChannel Kanal ARN (arn:aws:kinesis:region:account-id:channel/channel-id) Aktualisieren Sie eine bestehende Versandkonfiguration.
kinesis:DeleteChannel Kanal ARN Löscht eine bestehende Lieferung.
kinesis:DescribeChannel Kanal ARN Ruft die Details einer Lieferung ab.
kinesis:ListChannels Kontoebene (arn:aws:kinesis:region:account-id:stream/*) Listet alle Lieferungen im Konto auf.

Service-Ausführungsrolle

Bei der Datenbereitstellung wird der IAM-Service ausgeführt, um Daten an Ihr Ziel zu liefern. Sie müssen diese Rolle erstellen und sowohl eine Vertrauensrichtlinie als auch eine Berechtigungsrichtlinie anhängen.

Vertrauensrichtlinie

Die Vertrauensrichtlinie ermöglicht es dem Kinesis Data Streams-Dienst, die Rolle zu übernehmen. Fügen Sie Bedingungstasten hinzu, um das verwirrte Stellvertreterproblem zu vermeiden.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "kinesis.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<account-id>" }, "ArnLike": { "aws:SourceArn": "arn:aws:kinesis:<region>:<account-id>:channel/*" } } } ] }

Berechtigungsrichtlinie für Streaming-Tabellen auf Apache Iceberg

Bei der Bereitstellung an Streaming-Tabellen auf Apache Iceberg sind für die Rolle „Serviceausführung“ die folgenden Berechtigungen erforderlich:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3TablesAccess", "Effect": "Allow", "Action": [ "s3tables:GetTable", "s3tables:GetTableBucket", "s3tables:GetTableMetadataLocation", "s3tables:UpdateTableMetadataLocation", "s3tables:CreateTable", "s3tables:CreateNamespace", "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:TagResource", "s3tables:PutTableRecordExpirationConfiguration", "s3tables:PutTableEncryption" ], "Resource": [ "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>", "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>/table/*" ] }, { "Sid": "AllowCreateTableWithTag", "Effect": "Allow", "Action": "s3tables:CreateTable", "Resource": [ "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>/table/*", "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>" ], "Condition": { "StringEquals": { "aws:RequestTag/TableName": "<table-name>" } } }, { "Sid": "AllowPutTableDataWithTag", "Effect": "Allow", "Action": "s3tables:PutTableData", "Resource": "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>/table/*", "Condition": { "StringEquals": { "aws:ResourceTag/TableName": "<table-name>" } } }, { "Sid": "DLQBucketAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::<dlq-bucket-name>", "arn:aws:s3:::<dlq-bucket-name>/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "<dlq-account-id>" } } }, { "Sid": "GlueSchemaRegistryAccess", "Effect": "Allow", "Action": [ "glue:GetSchemaVersion" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:registry/<registry-name>", "arn:aws:glue:<region>:<account-id>:schema/<registry-name>/<schema-name>" ] }, { "Sid": "KMSForCreateTimeValidation", "Effect": "Allow", "Action": ["kms:Decrypt", "kms:GenerateDataKey"], "Resource": ["arn:aws:kms:<region>:<account-id>:key/<key-id>"], "Condition": { "StringEqualsIfExists": { "kms:ViaService": "kinesis.<region>.amazonaws.com" } } }, { "Sid": "KMSForS3TablesEncryption", "Effect": "Allow", "Action": ["kms:Decrypt", "kms:GenerateDataKey"], "Resource": ["arn:aws:kms:<region>:<account-id>:key/<key-id>"], "Condition": { "StringEquals": { "kms:ViaService": "s3.<region>.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3tables:<region>:<account-id>:bucket/<table-bucket-name>/*", "arn:aws:s3:::<dlq-bucket-name>/*" ] } } }, { "Sid": "KMSForCreateTable", "Effect": "Allow", "Action": ["kms:DescribeKey"], "Resource": ["arn:aws:kms:<region>:<account-id>:key/<key-id>"], "Condition": { "StringEquals": { "kms:ViaService": "s3tables.<region>.amazonaws.com" } } }, { "Sid": "KMSForDecryptSourceStreamRecords", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": ["arn:aws:kms:<region>:<account-id>:key/<stream-key-id>"], "Condition": { "StringEqualsIfExists": { "kms:ViaService": "kinesis.<region>.amazonaws.com" }, "StringEquals": { "kms:EncryptionContext:aws:kinesis:arn": "arn:aws:kinesis:<region>:<account-id>:stream/<stream-name>" } } } ] }
  • s3tables:PutTableEncryptionist nur erforderlich, wenn Sie die Zieltabelle mit einem vom Kunden verwalteten AWS KMS Schlüssel verschlüsseln. Ohne ihn ist es CreateTable erfolgreich, aber die Tabellenverschlüsselung schlägt fehl und die Tabelle wird nie erstellt.

  • s3tables:TagResourceist erforderlich, da der Dienst die von ihm erstellten Tabellen mit Tags kennzeichnet.

  • Die AllowPutTableDataWithTag Anweisungen AllowCreateTableWithTag und sind optional. Schließen Sie sie nur ein, wenn Sie eine tagbasierte Zugriffskontrolle wünschen, anstatt den Geltungsbereich ausschließlich anhand des Tabellen-ARN abzugrenzen. Sie beschränken s3tables:CreateTable und auf Ressourcens3tables:PutTableData, die ein passendes Tag tragen. TableName Lassen Sie sie weg, wenn Sie nach ARN suchen.

  • Nur glue:GetSchemaVersion für die Glue Schema Registry erforderlich. Es ist sowohl für das als auch für das JSON GSR_JSON Eingabeformat erforderlich.

  • Anhand der KMSForCreateTimeValidation Anweisung kann Amazon Kinesis Data Streams Ihren AWS KMS Schlüssel bei der Erstellung der Lieferung validieren. Sie ist nur erforderlich, wenn Ihre Zieltabelle oder Ihr Quell-Stream einen vom Kunden verwalteten AWS KMS Schlüssel verwendet.

  • Die KMSForS3TablesEncryption Anweisung gewährt die AWS KMS Operationen, die zum Verschlüsseln der gelieferten Tabellendaten im Ruhezustand verwendet werden. Sie ist nur erforderlich, wenn Ihr Table-Bucket einen vom Kunden verwalteten Schlüssel verwendet.

  • Die KMSForCreateTable Anweisung ermöglicht es Amazon Kinesis Data Streams, die Schlüsselkonfiguration zu lesen, wenn die Zieltabelle erstellt wird. Sie ist nur erforderlich, wenn der Table-Bucket einen vom Kunden verwalteten Schlüssel verwendet.

  • Die KMSForDecryptSourceStreamRecords Anweisung ermöglicht es der Rolle, Datensätze zu entschlüsseln, die aus dem Quellstream gelesen wurden. Sie ist nur erforderlich, wenn Ihr Kinesis Data Streams-Stream mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist.

Genehmigungsrichtlinie für Amazon S3-Buckets für allgemeine Zwecke

Bei der Bereitstellung an Amazon S3-Buckets für allgemeine Zwecke sind für die Serviceausführungsrolle die folgenden Berechtigungen erforderlich:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DeliveryBucketList", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::<delivery-bucket-name>", "arn:aws:s3:::<delivery-bucket-name>/*" ] }, { "Sid": "DeliveryBucketWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:CreateMultipartUpload", "s3:UploadPart", "s3:CompleteMultipartUpload", "s3:ListMultipartUploads", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::<delivery-bucket-name>/*" ] }, { "Sid": "DLQBucketAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::<dlq-bucket-name>", "arn:aws:s3:::<dlq-bucket-name>/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "<dlq-account-id>" } } }, { "Sid": "KMSForCreateTimeValidation", "Effect": "Allow", "Action": ["kms:Decrypt", "kms:GenerateDataKey"], "Resource": ["arn:aws:kms:<region>:<account-id>:key/<key-id>"], "Condition": { "StringEqualsIfExists": { "kms:ViaService": "kinesis.<region>.amazonaws.com" } } }, { "Sid": "KMSForS3BucketEncryption", "Effect": "Allow", "Action": ["kms:Decrypt", "kms:GenerateDataKey"], "Resource": ["arn:aws:kms:<region>:<account-id>:key/<key-id>"], "Condition": { "StringEquals": { "kms:ViaService": "s3.<region>.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::<delivery-bucket-name>/*", "arn:aws:s3:::<dlq-bucket-name>/*" ] } } }, { "Sid": "KMSForDecryptSourceStreamRecords", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": ["arn:aws:kms:<region>:<account-id>:key/<stream-key-id>"], "Condition": { "StringEqualsIfExists": { "kms:ViaService": "kinesis.<region>.amazonaws.com" }, "StringEquals": { "kms:EncryptionContext:aws:kinesis:arn": "arn:aws:kinesis:<region>:<account-id>:stream/<stream-name>" } } } ] }
  • Die KMSForCreateTimeValidation Anweisung ermöglicht es Amazon Kinesis Data Streams, Ihren AWS KMS Schlüssel zu validieren, wenn Sie die Lieferung erstellen. Sie ist nur erforderlich, wenn Ihr Ziel-Bucket oder Quell-Stream einen vom Kunden verwalteten AWS KMS Schlüssel verwendet.

  • Die KMSForS3BucketEncryption Anweisung gewährt die AWS KMS Operationen, die Amazon S3 verwendet, um übermittelte Objekte im Ruhezustand zu verschlüsseln. Sie ist nur erforderlich, wenn Ihr Ziel-Bucket oder Dead-Letter-Queue-Bucket einen vom Kunden SSE-KMS verwalteten Schlüssel verwendet. Die angezeigten kms:EncryptionContext:aws:s3:arn Werte verwenden den Objekt-ARN, der gilt, wenn S3-Bucket Keys deaktiviert sind. Wenn Sie S3 Bucket Keys im Ziel-Bucket oder im Dead-Letter-Queue-Bucket aktivieren, verwendet Amazon S3 den Bucket-ARN als Verschlüsselungskontext und nicht den Objekt-ARN. Sie müssen also den entsprechenden Wert in diesen Bucket-ARN ändern (z. B. arn:aws:s3:::delivery-bucket-name oderarn:aws:s3:::dlq-bucket-name). Weitere Informationen finden Sie unter Konfiguration eines S3-Bucket-Schlüssels im Amazon S3-Benutzerhandbuch.

  • Die KMSForDecryptSourceStreamRecords Anweisung ermöglicht es der Rolle, aus dem Quell-Stream gelesene Datensätze zu entschlüsseln. Sie ist nur erforderlich, wenn Ihr Kinesis Data Streams-Stream mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist.

Wichtig

Wenn Sie die s3:PutObject Ressource auf ein bestimmtes Präfix beschränken (z. B.arn:aws:s3:::my-bucket/data*), müssen die von Ihrer Ausgabeschlüsselvorlage generierten Objektschlüssel mit demselben Präfix beginnen. Eine Nichtübereinstimmung zwischen dem IAM-Ressourcenpräfix und der Vorlage für den Ausgabeschlüssel führt dazu, dass der Zugriff verweigert wird und keine Daten übermittelt werden.

Wenn Ihre Richtlinie beispielsweise „aktiviert“ gewährt s3:PutObjectarn:aws:s3:::my-bucket/data*, muss Ihre Vorlage für den Ausgabeschlüssel mit folgenden Zeichen beginnendata/, z. B. data/!{yyyy}/!{MM}/!{dd}/!{HH}/ Um dies zu vermeiden, beschränken Sie die Ressource entweder auf den gesamten Bucket (arn:aws:s3:::my-bucket/*) oder stellen Sie sicher, dass die Präfixe exakt übereinstimmen.

Optionale Berechtigungen für CloudWatch Protokolle

Wenn Sie CloudWatch Logs für Ihre Lieferung aktivieren, fügen Sie der Serviceausführungsrolle die folgenden Berechtigungen hinzu:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchLogsAccess", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<account-id>:log-group:<log-group-name>:*" } ] }