Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Autorizzazioni IAM per la distribuzione dei dati
Usa questo argomento per conoscere le autorizzazioni IAM necessarie per creare e gestire le risorse di distribuzione in Amazon Kinesis Data Streams e il ruolo di esecuzione del servizio che la distribuzione dei dati assume per consegnare i dati a destinazione.
Autorizzazioni di gestione del ciclo di vita
Per creare, aggiornare, eliminare, descrivere ed elencare le risorse di distribuzione, il responsabile IAM chiamante deve disporre delle seguenti autorizzazioni:
| Azione | Risorsa | Description |
|---|---|---|
kinesis:CreateChannel |
Stream ARN () arn:aws:kinesis: |
Crea una distribuzione su uno stream Kinesis Data Streams. |
kinesis:AssociateStreamsWithChannel |
Streaming ARN () arn:aws:kinesis: |
Associa uno stream a una consegna. Si tratta di un'azione virtuale che deve essere concessa al mittente chiamante per creare una consegna che legga dal flusso specificato. È autorizzato in aggiunta akinesis:CreateChannel. |
kinesis:UpdateChannel |
Canale ARN () arn:aws:kinesis: |
Aggiorna una configurazione di consegna esistente. |
kinesis:DeleteChannel |
Canale ARN | Elimina una spedizione esistente. |
kinesis:DescribeChannel |
Canale ARN | Recupera i dettagli di una consegna. |
kinesis:ListChannels |
Livello di account () arn:aws:kinesis: |
Elenca tutte le consegne nell'account. |
Ruolo di esecuzione del servizio
La consegna dei dati presuppone un ruolo di esecuzione del servizio IAM per la consegna dei dati a destinazione. È necessario creare questo ruolo e allegare sia una politica di fiducia che una politica di autorizzazione.
Policy di attendibilità
La politica di fiducia consente al servizio Kinesis Data Streams di assumere il ruolo. Includi le chiavi di condizione per evitare che si crei un problema confuso come sostituto.
{ "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/*" } } } ] }
Politica di autorizzazione per lo streaming di tabelle su Apache Iceberg
Quando si esegue la distribuzione alle tabelle di streaming su Apache Iceberg, il ruolo di esecuzione del servizio richiede le seguenti autorizzazioni:
{ "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:PutTableEncryptionè richiesto solo quando si crittografa la tabella di destinazione con una chiave gestita dal cliente. AWS KMS Senza di essa,CreateTableha successo, ma la crittografia della tabella ha esito negativo e la tabella non viene mai creata. -
s3tables:TagResourceè necessario perché il servizio etichetta le tabelle che crea. -
Le
AllowPutTableDataWithTagistruzioniAllowCreateTableWithTagand sono opzionali. Includile solo se desideri un controllo degli accessi basato su tag anziché limitarti all'ARN della tabella. Limitanos3tables:CreateTablee limitanos3tables:PutTableDatale risorse con un tag corrispondente.TableNameOmettili se utilizzi l'ambito per ARN. -
glue:GetSchemaVersionÈ richiesto solo per il Glue Schema Registry. È richiesto sia per i formati di input che per quelliGSR_JSONdi input.JSON -
La
KMSForCreateTimeValidationdichiarazione consente ad Amazon Kinesis Data Streams di convalidare la AWS KMS chiave al momento della creazione della consegna. È richiesta solo quando la tabella di destinazione o lo stream di origine utilizza una chiave gestita dal cliente. AWS KMS -
L'
KMSForS3TablesEncryptionistruzione concede le AWS KMS operazioni utilizzate per crittografare i dati della tabella consegnata a riposo. È richiesta solo quando il bucket della tabella utilizza una chiave gestita dal cliente. -
L'
KMSForCreateTableistruzione consente ad Amazon Kinesis Data Streams di leggere la configurazione della chiave quando crea la tabella di destinazione. È richiesta solo quando il table bucket utilizza una chiave gestita dal cliente. -
L'
KMSForDecryptSourceStreamRecordsistruzione consente al ruolo di decrittografare i record letti dal flusso di origine. È necessario solo quando lo stream di Kinesis Data Streams è crittografato con una chiave gestita dal cliente.
Politica di autorizzazione per bucket Amazon S3 per uso generico
In caso di distribuzione a bucket Amazon S3 per uso generico, il ruolo di esecuzione del servizio richiede le seguenti autorizzazioni:
{ "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
KMSForCreateTimeValidationdichiarazione consente ad Amazon Kinesis Data Streams di convalidare la AWS KMS chiave al momento della creazione della consegna. È richiesta solo quando il bucket di destinazione o lo stream di origine utilizza una chiave gestita dal cliente. AWS KMS -
La
KMSForS3BucketEncryptiondichiarazione concede le AWS KMS operazioni utilizzate da Amazon S3 per crittografare gli oggetti consegnati inattivi. È necessario solo quando il bucket di destinazione o il bucket di coda a lettere morte utilizza una chiave gestita dal cliente. SSE-KMS Ikms:EncryptionContext:aws:s3:arnvalori mostrati utilizzano l'oggetto ARN, che si applica quando le chiavi S3 Bucket sono disabilitate. Se abiliti S3 Bucket Keys nel bucket di destinazione o nel bucket di coda di lettere morte, Amazon S3 utilizza l'ARN del bucket come contesto di crittografia anziché l'ARN dell'oggetto, quindi devi modificare il valore corrispondente a quel bucket ARN (ad esempio, or).arn:aws:s3:::delivery-bucket-namearn:aws:s3:::Per ulteriori informazioni, consulta Configurazione di una chiave bucket S3 nella Amazon S3 User Guide. https://docs.aws.amazon.com/AmazonS3/latest/userguide/configuring-bucket-key.htmldlq-bucket-name -
L'
KMSForDecryptSourceStreamRecordsistruzione consente al ruolo di decrittografare i record letti dallo stream sorgente. È necessario solo quando lo stream di Kinesis Data Streams è crittografato con una chiave gestita dal cliente.
Importante
Se si limita la s3:PutObject risorsa a un prefisso specifico (ad esempio,arn:aws:s3:::my-bucket/data*), le chiavi oggetto generate dal modello di chiave di output devono iniziare con lo stesso prefisso. Una mancata corrispondenza tra il prefisso della risorsa IAM e il modello di chiave di output comporta errori di accesso negato e nessuna consegna di dati.
Ad esempio, se la tua policy è validaarn:aws:s3:::my-bucket/data*, s3:PutObject il modello di chiave di output deve iniziare condata/, ad esempio. data/!{yyyy}/!{MM}/!{dd}/!{HH}/ Per evitare ciò, limitate la risorsa all'intero bucket (arn:aws:s3:::my-bucket/*) o assicuratevi che i prefissi corrispondano esattamente.
Autorizzazioni opzionali per i log CloudWatch
Se abiliti CloudWatch i log per la consegna, aggiungi le seguenti autorizzazioni al ruolo di esecuzione del servizio:
{ "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>:*" } ] }