View a markdown version of this page

Autorizzazioni IAM per la consegna dei dati - Flusso di dati Amazon Kinesis

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 consegna dei dati

Utilizza questo argomento per conoscere le autorizzazioni IAM necessarie per creare e gestire le risorse di distribuzione in Amazon Kinesis Data Streams, nonché il ruolo di esecuzione del servizio che la distribuzione dei dati assume per consegnare i dati alla destinazione.

Autorizzazioni per la gestione del ciclo di vita

Per creare, aggiornare, eliminare, descrivere ed elencare le risorse di consegna, il principale IAM chiamante deve disporre delle seguenti autorizzazioni.

Azione Risorsa Description
kinesis:CreateChannel ARN in streaming () arn:aws:kinesis:region:account-id:stream/stream-name Crea una distribuzione su un flusso Kinesis Data Streams.
kinesis:AssociateStreamsWithChannel ARN in streaming () arn:aws:kinesis:region:account-id:stream/stream-name Associa uno stream a una consegna. Questa è un'azione virtuale che deve essere concessa al principale chiamante per creare una consegna che legga dal flusso specificato. È autorizzato in aggiunta a. kinesis:CreateChannel
kinesis:UpdateChannel ARN del canale () arn:aws:kinesis:region:account-id:channel/channel-id Aggiorna una configurazione di consegna esistente.
kinesis:DeleteChannel Canale ARN Eliminare una consegna esistente.
kinesis:DescribeChannel Canale ARN Recupera i dettagli di una consegna.
kinesis:ListChannels Livello di account () arn:aws:kinesis:region:account-id:stream/* Elenca tutte le consegne nell'account.

Ruolo di esecuzione del servizio

La consegna dei dati presuppone un ruolo di esecuzione del servizio IAM per consegnare i dati alla destinazione. È necessario creare questo ruolo e allegare sia una politica di fiducia che una politica di autorizzazione.

Policy di attendibilità

La policy di fiducia consente al servizio Kinesis Data Streams di assumere il ruolo. Includi i tasti relativi alle condizioni per evitare il confuso problema del vice.

{ "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 a 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, CreateTable riesce, ma la crittografia della tabella fallisce e la tabella non viene mai creata.

  • s3tables:TagResourceè obbligatorio perché il servizio contrassegna le tabelle che crea.

  • Le AllowPutTableDataWithTag istruzioni AllowCreateTableWithTag and sono facoltative. Includili solo se desideri il controllo degli accessi basato su tag anziché l'ambito esclusivamente in base all'ARN della tabella. Limitano s3tables:CreateTable e limitano s3tables:PutTableData le risorse che contengono un tag corrispondente. TableName Omettili se esegui l'analisi in base all'ARN.

  • glue:GetSchemaVersionÈ richiesto solo per il Glue Schema Registry. È richiesto sia per i formati di input che per quelli GSR_JSON di input. JSON

  • L'KMSForCreateTimeValidationinformativa consente ad Amazon Kinesis Data Streams di AWS KMS convalidare la chiave al momento della creazione della distribuzione. È richiesta solo quando la tabella di destinazione o il flusso di origine utilizza una chiave gestita dal cliente. AWS KMS

  • L'KMSForS3TablesEncryptionistruzione garantisce le AWS KMS operazioni utilizzate per crittografare i dati della tabella forniti a riposo. È necessario solo quando il table bucket utilizza una chiave gestita dal cliente.

  • L'KMSForCreateTableistruzione consente ad Amazon Kinesis Data Streams di leggere la configurazione 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 il flusso Kinesis Data Streams è crittografato con una chiave gestita dal cliente.

Politica di autorizzazione per i bucket Amazon S3 per uso generico

Per la distribuzione a bucket Amazon S3 generici, 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>" } } } ] }
  • L'KMSForCreateTimeValidationinformativa consente ad Amazon Kinesis Data Streams di AWS KMS convalidare la chiave al momento della creazione della distribuzione. È necessaria solo quando il bucket di destinazione o il flusso di origine utilizza una chiave gestita dal cliente. AWS KMS

  • La KMSForS3BucketEncryption dichiarazione garantisce le AWS KMS operazioni utilizzate da Amazon S3 per crittografare gli oggetti distribuiti a riposo. È richiesta solo quando il bucket di destinazione o il bucket di coda con lettere non scritte vengono utilizzati con una chiave gestita dal cliente. SSE-KMS I kms:EncryptionContext:aws:s3:arn valori 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 in quel bucket ARN (ad esempio o). arn:aws:s3:::delivery-bucket-name arn:aws:s3:::dlq-bucket-name Per ulteriori informazioni, consulta Configurazione di una chiave S3 Bucket nella Amazon S3 User Guide.

  • L'KMSForDecryptSourceStreamRecordsistruzione consente al ruolo di decrittografare i record letti dal flusso di origine. È necessario solo quando il flusso Kinesis Data Streams è crittografato con una chiave gestita dal cliente.

Importante

Se limiti la s3:PutObject risorsa a un prefisso specifico (ad esempio,arn:aws:s3:::my-bucket/data*), le chiavi oggetto generate dal modello della chiave di output devono iniziare con lo stesso prefisso. Una mancata corrispondenza tra il prefisso della risorsa IAM e il modello della chiave di output comporta errori di accesso negato e la mancata consegna di dati.

Ad esempio, se la policy prevede l'attivazionearn:aws:s3:::my-bucket/data*, s3:PutObject il modello della chiave di output deve iniziare condata/, ad esempio. data/!{yyyy}/!{MM}/!{dd}/!{HH}/ Per evitare ciò, assegnate 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>:*" } ] }