Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Autorisations IAM pour la livraison de données
Consultez cette rubrique pour en savoir plus sur les autorisations IAM requises pour créer et gérer des ressources de diffusion dans Amazon Kinesis Data Streams, ainsi que sur le rôle d'exécution des services assumé par la livraison des données pour acheminer les données vers votre destination.
autorisations de gestion du cycle de vie
Pour créer, mettre à jour, supprimer, décrire et répertorier les ressources de diffusion, le principal IAM appelant doit disposer des autorisations suivantes.
| Action | Ressource | Description |
|---|---|---|
kinesis:CreateChannel |
Diffusez l'ARN (arn:aws:kinesis:) |
Créez une diffusion sur un flux Kinesis Data Streams. |
kinesis:AssociateStreamsWithChannel |
Diffusez l'ARN (arn:aws:kinesis:) |
Associez un flux à une diffusion. Il s'agit d'une action virtuelle qui doit être accordée au principal appelant pour créer une diffusion qui lit à partir du flux spécifié. Il est autorisé en plus dekinesis:CreateChannel. |
kinesis:UpdateChannel |
ARN du canal (arn:aws:kinesis:) |
Mettez à jour une configuration de livraison existante. |
kinesis:DeleteChannel |
ARN du canal | Supprimez une livraison existante. |
kinesis:DescribeChannel |
ARN du canal | Récupérez les détails d'une livraison. |
kinesis:ListChannels |
Niveau du compte (arn:aws:kinesis:) |
Répertoriez toutes les livraisons dans le compte. |
Rôle d’exécution de service
La livraison des données suppose un rôle d'exécution du service IAM pour livrer les données à votre destination. Vous devez créer ce rôle et y associer à la fois une politique de confiance et une politique d'autorisation.
Politique d’approbation
La politique de confiance permet au service Kinesis Data Streams d'assumer ce rôle. Incluez des clés de condition pour éviter le problème de confusion des adjoints.
{ "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/*" } } } ] }
Politique d'autorisation pour les tables de streaming sur Apache Iceberg
Lors de la diffusion vers des tables de streaming sur Apache Iceberg, le rôle d'exécution du service nécessite les autorisations suivantes :
{ "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:PutTableEncryptionn'est obligatoire que lorsque vous chiffrez la table de destination avec une AWS KMS clé gérée par le client. Sans cela, ilCreateTableréussit, mais le chiffrement de la table échoue et la table n'est jamais créée. -
s3tables:TagResourceest obligatoire car le service balise les tables qu'il crée. -
Les
AllowPutTableDataWithTaginstructionsAllowCreateTableWithTaget sont facultatives. Incluez-les uniquement si vous souhaitez un contrôle d'accès basé sur des balises au lieu d'une délimitation uniquement par l'ARN de la table. Ils limitents3tables:CreateTableets3tables:PutTableDataaux ressources portant uneTableNameétiquette correspondante. Omettez-les si vous définissez votre champ d'application par ARN. -
Uniquement
glue:GetSchemaVersionrequis pour le Glue Schema Registry. Il est requis à la fois pour le formatJSONet pour le formatGSR_JSONd'entrée. -
La
KMSForCreateTimeValidationdéclaration permet à Amazon Kinesis Data Streams de valider AWS KMS votre clé lorsque vous créez la diffusion. Elle n'est requise que lorsque votre table de destination ou votre flux source utilise une AWS KMS clé gérée par le client. -
L'
KMSForS3TablesEncryptioninstruction autorise les AWS KMS opérations utilisées pour chiffrer les données de table livrées au repos. Cela n'est nécessaire que lorsque votre compartiment de table utilise une clé gérée par le client. -
L'
KMSForCreateTableinstruction permet à Amazon Kinesis Data Streams de lire la configuration clé lors de la création de la table de destination. Elle n'est requise que lorsque le bucket de table utilise une clé gérée par le client. -
L'
KMSForDecryptSourceStreamRecordsinstruction permet au rôle de déchiffrer les enregistrements lus dans le flux source. Cela n'est nécessaire que lorsque votre flux Kinesis Data Streams est chiffré à l'aide d'une clé gérée par le client.
Politique d'autorisation pour les compartiments Amazon S3 à usage général
Lors de la livraison vers des compartiments Amazon S3 à usage général, le rôle d'exécution du service nécessite les autorisations suivantes :
{ "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>" } } } ] }
-
La
KMSForCreateTimeValidationdéclaration permet à Amazon Kinesis Data Streams de valider AWS KMS votre clé lorsque vous créez la diffusion. Elle n'est requise que lorsque votre compartiment de destination ou votre flux source utilise une AWS KMS clé gérée par le client. -
La
KMSForS3BucketEncryptiondéclaration autorise les AWS KMS opérations qu'Amazon S3 utilise pour chiffrer les objets livrés au repos. Cela n'est nécessaire que lorsque votre compartiment de destination ou votre compartiment de file d'attente contenant des lettres mortes est utilisé SSE-KMS avec une clé gérée par le client. Leskms:EncryptionContext:aws:s3:arnvaleurs affichées utilisent l'ARN de l'objet, qui s'applique lorsque les clés de compartiment S3 sont désactivées. Si vous activez les clés de compartiment S3 sur le compartiment de destination ou sur le compartiment de file d'attente contenant des lettres mortes, Amazon S3 utilise l'ARN du compartiment comme contexte de chiffrement au lieu de l'ARN de l'objet. Vous devez donc modifier la valeur correspondante pour cet ARN de compartiment (par exemple,arn:aws:s3:::oudelivery-bucket-namearn:aws:s3:::). Pour plus d'informations, consultez la section Configuration d'une clé de compartiment S3 dans le guide de l'utilisateur Amazon S3.dlq-bucket-name -
L'
KMSForDecryptSourceStreamRecordsinstruction permet au rôle de déchiffrer les enregistrements lus dans le flux source. Cela n'est nécessaire que lorsque votre flux Kinesis Data Streams est chiffré à l'aide d'une clé gérée par le client.
Important
Si vous limitez la s3:PutObject ressource à un préfixe spécifique (par exemple,arn:aws:s3:::my-bucket/data*), les clés d'objet générées par votre modèle de clé de sortie doivent commencer par ce même préfixe. Une incompatibilité entre le préfixe de ressource IAM et le modèle de clé de sortie entraîne des erreurs de refus d'accès et aucune donnée n'est remise.
Par exemple, si votre politique l'autorise s3:PutObjectarn:aws:s3:::my-bucket/data*, votre modèle de clé de sortie doit commencer pardata/, par exempledata/!{yyyy}/!{MM}/!{dd}/!{HH}/. Pour éviter cela, étendez la ressource à l'ensemble du compartiment (arn:aws:s3:::my-bucket/*) ou assurez-vous que les préfixes correspondent exactement.
Autorisations facultatives pour les CloudWatch journaux
Si vous activez CloudWatch les journaux pour votre livraison, ajoutez les autorisations suivantes au rôle d'exécution du service :
{ "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>:*" } ] }