Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Izin IAM untuk pengiriman data
Gunakan topik ini untuk mempelajari tentang izin IAM yang diperlukan untuk membuat dan mengelola sumber daya pengiriman di Amazon Kinesis Data Streams, serta peran eksekusi layanan yang diasumsikan pengiriman data untuk mengirimkan data ke tujuan Anda.
Izin manajemen siklus hidup
Untuk membuat, memperbarui, menghapus, menjelaskan, dan mencantumkan sumber daya pengiriman, prinsipal IAM yang memanggil harus memiliki izin berikut:
| Tindakan | Sumber daya | Deskripsi |
|---|---|---|
kinesis:CreateChannel |
Aliran ARN (arn:aws:kinesis:) |
Buat pengiriman pada aliran Kinesis Data Streams. |
kinesis:AssociateStreamsWithChannel |
Aliran ARN (arn:aws:kinesis:) |
Mengaitkan aliran dengan pengiriman. Ini adalah tindakan virtual yang harus diberikan oleh prinsipal pemanggil untuk membuat pengiriman yang dibaca dari aliran yang ditentukan. Selain itu disahkankinesis:CreateChannel. |
kinesis:UpdateChannel |
Kanal ARN (arn:aws:kinesis:) |
Perbarui konfigurasi pengiriman yang ada. |
kinesis:DeleteChannel |
Kanal ARN | Hapus pengiriman yang sudah ada. |
kinesis:DescribeChannel |
Kanal ARN | Ambil rincian pengiriman. |
kinesis:ListChannels |
Tingkat akun (arn:aws:kinesis:) |
Daftar semua pengiriman di akun. |
Peran eksekusi layanan
Pengiriman data mengasumsikan peran eksekusi layanan IAM untuk mengirimkan data ke tujuan Anda. Anda harus membuat peran ini dan melampirkan kebijakan kepercayaan dan kebijakan izin.
Kebijakan kepercayaan
Kebijakan kepercayaan memungkinkan layanan Kinesis Data Streams untuk mengambil peran tersebut. Sertakan kunci kondisi untuk mencegah masalah wakil yang membingungkan.
{ "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/*" } } } ] }
Kebijakan izin untuk streaming tabel di Apache Iceberg
Saat mengirimkan ke tabel streaming di Apache Iceberg, peran eksekusi layanan memerlukan izin berikut:
{ "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:PutTableEncryptiondiperlukan hanya ketika Anda mengenkripsi tabel tujuan dengan AWS KMS kunci yang dikelola pelanggan. Tanpa itu,CreateTableberhasil tetapi enkripsi tabel gagal dan tabel tidak pernah dibuat. -
s3tables:TagResourcediperlukan karena layanan menandai tabel yang dibuatnya. -
Per
AllowCreateTableWithTagAllowPutTableDataWithTagnyataan dan bersifat opsional. Sertakan mereka hanya jika Anda menginginkan kontrol akses berbasis tag alih-alih cakupan hanya dengan tabel ARN. Mereka membatasis3tables:CreateTabledans3tables:PutTableDatake sumber daya yang membawaTableNametag yang cocok. Hilangkan jika Anda menelusuri ARN. -
Hanya
glue:GetSchemaVersiondiperlukan untuk Glue Schema Registry. Hal ini diperlukan untuk kedua formatJSONdanGSR_JSONinput. -
Per
KMSForCreateTimeValidationnyataan ini memungkinkan Amazon Kinesis Data Streams memvalidasi AWS KMS kunci Anda saat Anda membuat pengiriman. Ini diperlukan hanya jika tabel tujuan atau aliran sumber Anda menggunakan AWS KMS kunci yang dikelola pelanggan. -
Per
KMSForS3TablesEncryptionnyataan tersebut memberikan AWS KMS operasi yang digunakan untuk mengenkripsi data tabel yang dikirim saat diam. Ini diperlukan hanya ketika bucket meja Anda menggunakan kunci yang dikelola pelanggan. -
Per
KMSForCreateTablenyataan ini memungkinkan Amazon Kinesis Data Streams membaca konfigurasi kunci saat membuat tabel tujuan. Ini diperlukan hanya ketika bucket tabel menggunakan kunci yang dikelola pelanggan. -
Per
KMSForDecryptSourceStreamRecordsnyataan ini memungkinkan peran mendekripsi catatan yang dibaca dari aliran sumber. Ini hanya diperlukan jika aliran Kinesis Data Streams Anda dienkripsi dengan kunci yang dikelola pelanggan.
Kebijakan izin untuk bucket Amazon S3 tujuan umum
Saat mengirimkan ke bucket Amazon S3 tujuan umum, peran eksekusi layanan memerlukan izin berikut:
{ "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>" } } } ] }
-
Per
KMSForCreateTimeValidationnyataan ini memungkinkan Amazon Kinesis Data Streams memvalidasi AWS KMS kunci Anda saat Anda membuat pengiriman. Ini diperlukan hanya jika bucket tujuan atau aliran sumber Anda menggunakan AWS KMS kunci yang dikelola pelanggan. -
Per
KMSForS3BucketEncryptionnyataan tersebut memberikan AWS KMS operasi yang digunakan Amazon S3 untuk mengenkripsi objek yang dikirim saat diam. Ini hanya diperlukan jika bucket tujuan atau bucket antrean huruf mati digunakan SSE-KMS dengan kunci yang dikelola pelanggan.kms:EncryptionContext:aws:s3:arnNilai yang ditampilkan menggunakan objek ARN, yang berlaku ketika S3 Bucket Keys dinonaktifkan. Jika Anda mengaktifkan S3 Bucket Keys pada bucket tujuan atau bucket antrean huruf mati, Amazon S3 menggunakan bucket ARN sebagai konteks enkripsi alih-alih objek ARN, jadi Anda harus mengubah nilai yang sesuai ke bucket ARN tersebut (misalnya,arn:aws:s3:::ataudelivery-bucket-namearn:aws:s3:::). Untuk informasi selengkapnya, lihat Mengonfigurasi Kunci Bucket S3 di Panduan Pengguna Amazon S3.dlq-bucket-name -
Per
KMSForDecryptSourceStreamRecordsnyataan ini memungkinkan peran mendekripsi catatan yang dibaca dari aliran sumber. Ini hanya diperlukan jika aliran Kinesis Data Streams Anda dienkripsi dengan kunci yang dikelola pelanggan.
penting
Jika Anda membatasi s3:PutObject sumber daya ke awalan tertentu (misalnya,arn:aws:s3:::my-bucket/data*), kunci objek yang dihasilkan oleh template kunci keluaran Anda harus dimulai dengan awalan yang sama. Ketidakcocokan antara awalan sumber daya IAM dan template kunci keluaran mengakibatkan kesalahan akses ditolak dan tidak ada data yang dikirimkan.
Misalnya, jika kebijakan Anda mengiz s3:PutObject inkanarn:aws:s3:::my-bucket/data*, templat kunci keluaran Anda harus dimulai dengandata/, sepertidata/!{yyyy}/!{MM}/!{dd}/!{HH}/. Untuk menghindari hal ini, lingkup sumber daya ke seluruh bucket (arn:aws:s3:::my-bucket/*) atau pastikan awalan cocok dengan tepat.
Izin CloudWatch Log opsional
Jika Anda mengaktifkan CloudWatch Log untuk pengiriman, tambahkan izin berikut ke peran eksekusi layanan:
{ "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>:*" } ] }