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 Datenbereitstellung
In diesem Thema erfahren Sie mehr über die IAM-Berechtigungen, die für die Erstellung und Verwaltung von Lieferressourcen in Amazon Kinesis Data Streams erforderlich sind, sowie über die Rolle der Serviceausführung, die Data Delivery übernimmt, um Daten an Ihr Ziel zu liefern.
Berechtigungen für das Lebenszyklusmanagement
Um Bereitstellungsressourcen zu erstellen, zu aktualisieren, zu löschen, zu beschreiben und aufzulisten, muss der aufrufende IAM-Prinzipal über die folgenden Berechtigungen verfügen.
| Action | Ressource | Description |
|---|---|---|
kinesis:CreateChannel |
ARN streamen (arn:aws:kinesis:) |
Erstellen Sie eine Lieferung in einem Kinesis Data Streams Streams-Stream. |
kinesis:AssociateStreamsWithChannel |
ARN streamen (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 Lieferung 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 | Rufen Sie die Details einer Lieferung ab. |
kinesis:ListChannels |
Kontoebene (arn:aws:kinesis:) |
Listet alle Lieferungen im Konto auf. |
Service-Ausführungsrolle
Bei der Datenzustellung wird eine IAM-Dienstausführungsrolle übernommen, 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 Streams-Dienst, die Rolle zu übernehmen. Fügen Sie Bedingungsschlüssel hinzu, um das Problem mit dem verwirrten Stellvertreter 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 das Streamen von Tabellen auf Apache Iceberg
Bei der Bereitstellung an Streaming-Tabellen auf Apache Iceberg sind für die Dienstausführungsrolle 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 diesen Schlüssel ist esCreateTableerfolgreich, aber die Tabellenverschlüsselung schlägt fehl und die Tabelle wird nie erstellt. -
s3tables:TagResourceist erforderlich, da der Service die Tabellen, die er erstellt, taggt. -
Die
AllowPutTableDataWithTagAnweisungenAllowCreateTableWithTagund sind optional. Schließen Sie sie nur ein, wenn Sie eine tagbasierte Zugriffskontrolle wünschen, anstatt den Bereich ausschließlich anhand des Tabellen-ARN ARN. Sie beschränkens3tables:CreateTableund beschränken sich auf Ressourcens3tables:PutTableData, die ein entsprechendes Tag tragen.TableNameLassen Sie sie weg, wenn Sie den Bereich nach ARN eingrenzen. -
glue:GetSchemaVersionWird nur für die Glue Schema Registry benötigt. Es ist sowohl für das als auch für dasJSONGSR_JSONEingabeformat erforderlich. -
Mit der
KMSForCreateTimeValidationAnweisung kann Amazon Kinesis Data Streams Ihren AWS KMS Schlüssel überprüfen, wenn Sie die Lieferung erstellen. 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 Tabellen-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 Tabellen-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 Streams-Stream mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist.
Genehmigungsrichtlinie für allgemeine Amazon S3 S3-Buckets
Bei der Lieferung an allgemeine Amazon S3 S3-Buckets benötigt die Rolle „Service Execution“ die folgenden Berechtigungen:
{ "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>" } } } ] }
-
Mit der
KMSForCreateTimeValidationAnweisung kann Amazon Kinesis Data Streams Ihren AWS KMS Schlüssel überprüfen, 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
KMSForS3BucketEncryptionErklärung gewährt die AWS KMS Operationen, die Amazon S3 verwendet, um gelieferte Objekte im Ruhezustand zu verschlüsseln. Sie ist nur erforderlich, wenn Ihr Ziel-Bucket oder Ihr Bucket für die Warteschlange unzustellbarer Nachrichten SSE-KMS mit einem vom Kunden verwalteten Schlüssel verwendet wird. Die angezeigtenkms:EncryptionContext:aws:s3:arnWerte verwenden das Objekt ARN, das gilt, wenn S3 Bucket Keys deaktiviert sind. Wenn Sie S3 Bucket Keys auf dem Ziel-Bucket oder dem Dead-Letter-Queue-Bucket aktivieren, verwendet Amazon S3 den Bucket-ARN als Verschlüsselungskontext anstelle des Objekt-ARN, sodass Sie den entsprechenden Wert in diesen Bucket-ARN ändern müssen (z. B.arn:aws:s3:::oderdelivery-bucket-namearn:aws:s3:::). Weitere Informationen finden Sie unter Konfiguration eines S3-Bucket-Keys im Amazon S3 S3-Benutzerhandbuch.dlq-bucket-name -
Die
KMSForDecryptSourceStreamRecordsAnweisung ermöglicht es der Rolle, Datensätze zu entschlüsseln, die aus dem Quell-Stream gelesen wurden. Sie ist nur erforderlich, wenn Ihr Kinesis Data Streams 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 Ausgabeschlüsselvorlage führt dazu, dass der Zugriff verweigert wurde und keine Daten übermittelt werden.
Wenn Ihre Richtlinie beispielsweise aktiviert istarn:aws:s3:::my-bucket/data*, muss Ihre Ausgabeschlüsselvorlage mit beginnendata/, z. B. s3:PutObject 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 CloudWatch Log-Berechtigungen
Wenn Sie CloudWatch Logs für Ihre Lieferung aktivieren, fügen Sie der Dienstausfü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>:*" } ] }