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 oleh pengiriman data untuk mengirimkan data ke tujuan Anda.
Izin manajemen siklus hidup
Untuk membuat, memperbarui, menghapus, mendeskripsikan, dan mencantumkan sumber daya pengiriman, prinsipal IAM pemanggil harus memiliki izin berikut.
| Tindakan | Sumber daya | Deskripsi |
|---|---|---|
kinesis:CreateChannel |
Aliran ARN () arn:aws:kinesis: |
Buat pengiriman di aliran Kinesis Data Streams. |
kinesis:AssociateStreamsWithChannel |
Aliran ARN () arn:aws:kinesis: |
Kaitkan aliran dengan pengiriman. Ini adalah tindakan virtual yang harus diberikan oleh prinsipal pemanggil untuk membuat pengiriman yang dibaca dari aliran yang ditentukan. Ini diizinkan sebagai tambahan untukkinesis:CreateChannel. |
kinesis:UpdateChannel |
Saluran ARN () arn:aws:kinesis: |
Perbarui konfigurasi pengiriman yang ada. |
kinesis:DeleteChannel |
Saluran ARN | Hapus pengiriman yang ada. |
kinesis:DescribeChannel |
Saluran ARN | Ambil detail pengiriman. |
kinesis:ListChannels |
Tingkat akun (arn:aws:kinesis:) |
Buat 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 tabel streaming 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. -
AllowPutTableDataWithTagPernyataanAllowCreateTableWithTagdan bersifat opsional. Sertakan mereka hanya jika Anda menginginkan kontrol akses berbasis tag alih-alih pelingkupan hanya dengan tabel ARN. Mereka membatasis3tables:CreateTabledan sumber dayas3tables:PutTableDatayang membawaTableNametag yang cocok. Abaikan mereka jika Anda lingkup oleh ARN. -
Hanya
glue:GetSchemaVersiondiperlukan untuk Glue Schema Registry. Hal ini diperlukan untuk kedua formatJSONdanGSR_JSONinput. -
KMSForCreateTimeValidationPernyataan ini memungkinkan Amazon Kinesis Data Streams AWS KMS memvalidasi kunci Anda saat Anda membuat pengiriman. Ini diperlukan hanya ketika tabel tujuan atau aliran sumber Anda menggunakan AWS KMS kunci yang dikelola pelanggan. -
KMSForS3TablesEncryptionPernyataan tersebut memberikan AWS KMS operasi yang digunakan untuk mengenkripsi data tabel yang dikirimkan saat istirahat. Ini diperlukan hanya jika bucket meja Anda menggunakan kunci yang dikelola pelanggan. -
KMSForCreateTablePernyataan ini memungkinkan Amazon Kinesis Data Streams membaca konfigurasi kunci saat membuat tabel tujuan. Ini diperlukan hanya ketika bucket meja menggunakan kunci yang dikelola pelanggan. -
KMSForDecryptSourceStreamRecordsPernyataan ini memungkinkan peran mendekripsi catatan yang dibaca dari aliran sumber. Ini diperlukan hanya 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>" } } } ] }
-
KMSForCreateTimeValidationPernyataan ini memungkinkan Amazon Kinesis Data Streams AWS KMS memvalidasi kunci Anda saat Anda membuat pengiriman. Ini diperlukan hanya jika bucket tujuan atau aliran sumber Anda menggunakan AWS KMS kunci yang dikelola pelanggan. -
KMSForS3BucketEncryptionPernyataan tersebut memberikan AWS KMS operasi yang digunakan Amazon S3 untuk mengenkripsi objek yang dikirim saat istirahat. Ini diperlukan hanya jika bucket tujuan atau bucket antrean dead-letter Anda digunakan SSE-KMS dengan kunci yang dikelola pelanggan.kms:EncryptionContext:aws:s3:arnNilai yang ditampilkan menggunakan objek ARN, yang berlaku saat S3 Bucket Keys dinonaktifkan. Jika Anda mengaktifkan Kunci Bucket S3 di bucket tujuan atau bucket antrian huruf mati, Amazon S3 menggunakan bucket ARN sebagai konteks enkripsi, bukan ARN objek, jadi Anda harus mengubah nilai yang sesuai ke ARN bucket tersebut (misalnya, atau).arn:aws:s3:::delivery-bucket-namearn:aws:s3:::Untuk informasi selengkapnya, lihat Mengonfigurasi Kunci Bucket S3 di Panduan Pengguna Amazon S3.dlq-bucket-name -
KMSForDecryptSourceStreamRecordsPernyataan ini memungkinkan peran mendekripsi catatan yang dibaca dari aliran sumber. Ini diperlukan hanya 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 menghasilkan kesalahan akses ditolak dan tidak ada data yang dikirim.
Misalnya, jika kebijakan Anda mengabulkan s3:PutObjectarn: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 sama persis.
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>:*" } ] }