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:
| Action | Ressource | Description |
|---|---|---|
kinesis:CreateChannel |
Streamen Sie ARN (arn:aws:kinesis:) |
Erstellen Sie eine Lieferung in einem Kinesis Data Streams-Stream. |
kinesis:AssociateStreamsWithChannel |
Streamen Sie ARN () arn:aws:kinesis: |
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:) |
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:) |
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 esCreateTableerfolgreich, 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
AllowPutTableDataWithTagAnweisungenAllowCreateTableWithTagund 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änkens3tables:CreateTableund auf Ressourcens3tables:PutTableData, die ein passendes Tag tragen.TableNameLassen Sie sie weg, wenn Sie nach ARN suchen. -
Nur
glue:GetSchemaVersionfür die Glue Schema Registry erforderlich. Es ist sowohl für das als auch für dasJSONGSR_JSONEingabeformat erforderlich. -
Anhand der
KMSForCreateTimeValidationAnweisung 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
KMSForS3TablesEncryptionAnweisung 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
KMSForCreateTableAnweisung 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
KMSForDecryptSourceStreamRecordsAnweisung 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
KMSForCreateTimeValidationAnweisung 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
KMSForS3BucketEncryptionAnweisung 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 angezeigtenkms:EncryptionContext:aws:s3:arnWerte 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:::oderdelivery-bucket-namearn:aws:s3:::). Weitere Informationen finden Sie unter Konfiguration eines S3-Bucket-Schlüssels im Amazon S3-Benutzerhandbuch.dlq-bucket-name -
Die
KMSForDecryptSourceStreamRecordsAnweisung 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>:*" } ] }