View a markdown version of this page

Keamanan tabel global DynamoDB - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Keamanan tabel global DynamoDB

Replika tabel global adalah tabel DynamoDB, jadi Anda menggunakan metode yang sama untuk mengontrol akses ke replika yang Anda lakukan untuk tabel wilayah tunggal, termasuk kebijakan identitas AWS Identity and Access Management (IAM) dan kebijakan berbasis sumber daya.

Topik ini mencakup cara mengamankan tabel global DynamoDB menggunakan izin IAM dan enkripsi AWS Key Management Service ()AWS KMS. Anda mempelajari tentang peran terkait layanan (SLR) yang memungkinkan replikasi lintas wilayah dan penskalaan otomatis, izin IAM yang diperlukan untuk membuat, memperbarui, dan menghapus tabel global, dan perbedaan antara tabel konsistensi akhir multi-wilayah (MREC) dan tabel konsistensi kuat multi-wilayah (MRSC). Anda juga mempelajari tentang kunci AWS KMS enkripsi untuk mengelola replikasi lintas wilayah dengan aman.

Service-linked peran untuk tabel global

Tabel global DynamoDB mengandalkan peran terkait layanan (SLR) untuk mengelola replikasi lintas wilayah dan kemampuan penskalaan otomatis.

Anda hanya perlu mengatur peran ini sekali per AWS akun. Setelah dibuat, peran yang sama melayani semua tabel global di akun Anda. Untuk informasi selengkapnya tentang peran tertaut layanan, lihat Menggunakan peran tertaut layanan di Panduan Pengguna IAM.

Peran terkait layanan replikasi

Amazon DynamoDB secara otomatis membuat peran AWSServiceRoleForDynamoDBReplication terkait layanan (SLR) saat Anda membuat tabel global pertama Anda. Peran ini mengelola replikasi lintas wilayah untuk Anda.

Saat menerapkan kebijakan berbasis sumber daya ke replika, pastikan Anda tidak menolak izin apa pun yang ditentukan dalam prinsip SLR, karena ini akan mengganggu replikasi. AWSServiceRoleForDynamoDBReplicationPolicy Jika Anda menolak izin SLR yang diperlukan, replikasi ke dan dari replika yang terpengaruh akan berhenti, dan status tabel replika akan berubah menjadi. REPLICATION_NOT_AUTHORIZED

  • Untuk tabel global konsistensi akhir multi-wilayah (MREC), jika replika tetap dalam REPLICATION_NOT_AUTHORIZED status selama lebih dari 20 jam, replika dikonversi secara ireversibel ke tabel DynamoDB wilayah tunggal.

  • Untuk tabel global konsistensi kuat multi-wilayah (MRSC), menolak izin yang diperlukan menghasilkan penulisan AccessDeniedException dan operasi baca yang sangat konsisten. Jika replika tetap dalam REPLICATION_NOT_AUTHORIZED keadaan selama lebih dari tujuh hari, replika menjadi tidak dapat diakses secara permanen, dan penulisan dan operasi baca yang sangat konsisten akan terus gagal dengan kesalahan. Beberapa operasi manajemen seperti penghapusan replika akan berhasil.

Peran terkait layanan penskalaan otomatis

Saat mengonfigurasi tabel global untuk mode kapasitas yang disediakan, penskalaan otomatis harus dikonfigurasi untuk tabel global. Penskalaan otomatis DynamoDB menggunakan layanan Penskalaan Otomatis AWS Aplikasi untuk menyesuaikan kapasitas throughput yang disediakan secara dinamis pada replika tabel global Anda. Layanan Penskalaan Otomatis Aplikasi membuat peran terkait layanan (SLR) bernama. AWSServiceRoleForApplicationAutoScaling_DynamoDBTable Peran terkait layanan ini secara otomatis dibuat di AWS akun Anda saat pertama kali mengonfigurasi penskalaan otomatis untuk tabel DynamoDB. Hal ini memungkinkan Application Auto Scaling untuk mengelola kapasitas tabel yang disediakan dan membuat CloudWatch alarm.

Saat menerapkan kebijakan berbasis sumber daya ke replika, pastikan Anda tidak menolak izin apa pun yang ditentukan dalam prinsip SLR AWSApplicationAutoscalingDynamoDBTablePolicy to Application Auto Scaling, karena ini akan mengganggu fungsi penskalaan otomatis.

Contoh kebijakan IAM untuk peran terkait layanan

Kebijakan IAM dengan kondisi berikut tidak memengaruhi izin yang diperlukan untuk SLR replikasi DynamoDB dan AWS SLR Penskalaan Otomatis. Kondisi ini dapat ditambahkan ke kebijakan yang membatasi secara luas untuk menghindari gangguan replikasi atau penskalaan otomatis secara tidak sengaja.

Contoh berikut menunjukkan cara mengecualikan prinsipal peran terkait layanan dari pernyataan menolak:

"Condition": { "StringNotEquals": { "aws:PrincipalArn": [ "arn:aws::iam::111122223333:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication", "arn:aws::iam::111122223333:role/aws-service-role/dynamodb.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_DynamoDBTable" ] } }

Bagaimana tabel global digunakan AWS IAM

Bagian berikut menjelaskan izin yang diperlukan untuk operasi tabel global yang berbeda dan memberikan contoh kebijakan untuk membantu Anda mengonfigurasi akses yang sesuai untuk pengguna dan aplikasi Anda.

catatan

Semua izin yang dijelaskan harus diterapkan ke sumber daya tabel tertentu ARN di Wilayah yang terkena dampak. Sumber daya tabel ARN mengikuti formatarn:aws:dynamodb:region:account-id:table/table-name, di mana Anda perlu menentukan Wilayah, ID akun, dan nilai nama tabel yang sebenarnya.

Membuat tabel global dan menambahkan replika

Tabel global DynamoDB mendukung dua mode konsistensi: Konsistensi akhir multi-wilayah (MREC) dan konsistensi kuat multi-wilayah (MRSC). Tabel global MREC dapat memiliki beberapa replika di sejumlah Wilayah dan memberikan konsistensi akhirnya. Tabel global MRSC membutuhkan tepat tiga Wilayah (tiga replika atau dua replika dan satu saksi) dan memberikan konsistensi yang kuat dengan nol tujuan titik pemulihan (RPO).

Izin yang diperlukan untuk membuat tabel global bergantung pada apakah Anda membuat tabel global dengan atau tanpa saksi.

Izin untuk membuat tabel global

Izin berikut diperlukan untuk pembuatan tabel global awal dan untuk menambahkan replika nanti. Izin ini berlaku untuk tabel global Kon Multi-Region sistensi Akhirnya (MREC) dan Multi-Region Konsistensi Kuat (MRSC).

  • Tabel global memerlukan replikasi lintas wilayah, yang dikelola DynamoDB melalui peran AWSServiceRoleForDynamoDBReplication terkait layanan (SLR). Izin berikut memungkinkan DynamoDB membuat peran ini secara otomatis saat Anda membuat tabel global untuk pertama kalinya:

    • iam:CreateServiceLinkedRole

  • Untuk membuat tabel global atau menambahkan replika menggunakan UpdateTable API, Anda harus memiliki izin berikut pada sumber daya tabel sumber:

    • dynamodb:UpdateTable

  • Anda harus memiliki izin berikut pada sumber daya tabel di Wilayah untuk replika yang akan ditambahkan:

    • dynamodb:CreateTable

    • dynamodb:CreateTableReplica

    • dynamodb:Query

    • dynamodb:Scan

    • dynamodb:UpdateItem

    • dynamodb:PutItem

    • dynamodb:GetItem

    • dynamodb:DeleteItem

    • dynamodb:BatchWriteItem

Izin tambahan untuk tabel global MRSC menggunakan saksi

Saat membuat tabel global Multi-Region Konsistensi Kuat (MRSC) dengan Wilayah saksi, Anda harus memiliki izin berikut pada sumber daya tabel di semua Wilayah yang berpartisipasi (termasuk Wilayah replika dan Wilayah saksi):

  • dynamodb:CreateGlobalTableWitness

Contoh kebijakan IAM untuk membuat tabel global

Kebijakan berbasis identitas berikut memungkinkan Anda membuat tabel global MREC atau MRSC bernama “pengguna” di tiga Wilayah, termasuk membuat peran terkait layanan replikasi DynamoDB yang diperlukan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTable", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Kebijakan berbasis identitas berikut memungkinkan Anda membuat replika tabel global DynamoDB di seluruh Wilayah tertentu menggunakan kunci RequestedRegion kondisi aws:, termasuk membuat peran terkait layanan replikasi DynamoDB yang diperlukan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowAddingReplicasToSourceTable", "Effect": "Allow", "Action": [ "dynamodb:UpdateTable" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1" ] } } }, { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-2", "us-west-2" ] } } }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Kebijakan berbasis identitas berikut memungkinkan Anda membuat tabel global MRSC DynamoDB bernama “users” dengan replika di us-east-1 dan us-east-2 dan saksi di us-west-2, termasuk membuat peran terkait layanan replikasi DynamoDB yang diperlukan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingUsersGlobalTableWithWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:CreateGlobalTableWitness", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Kebijakan berbasis identitas ini memungkinkan Anda membuat tabel global MRSC dengan replika terbatas pada Wilayah tertentu menggunakan aws: kunci RequestedRegion kondisi dan pembuatan saksi tak terbatas di semua Wilayah, termasuk membuat peran terkait layanan replikasi DynamoDB yang diperlukan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCreatingReplicas", "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:CreateTableReplica", "dynamodb:UpdateTable", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1", "us-east-2" ] } } }, { "Sid": "AllowCreatingWitness", "Effect": "Allow", "Action": [ "dynamodb:CreateGlobalTableWitness" ], "Resource": "*" }, { "Sid": "AllowCreatingSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": [ "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" ] } ] }

Memperbarui tabel global

Untuk mengubah pengaturan replika untuk tabel global yang ada menggunakan UpdateTable API, Anda memerlukan izin berikut pada sumber daya tabel di Wilayah tempat Anda melakukan panggilan API:

  • dynamodb:UpdateTable

Anda juga dapat memperbarui konfigurasi tabel global lainnya, seperti kebijakan penskalaan otomatis dan pengaturan Time to Live. Izin berikut diperlukan untuk operasi pembaruan tambahan ini:

  • Untuk memperbarui kebijakan penskalaan otomatis replika dengan UpdateTableReplicaAutoScaling API, Anda harus memiliki izin berikut pada sumber daya tabel di semua Wilayah yang berisi replika:

    • application-autoscaling:DeleteScalingPolicy

    • application-autoscaling:DeleteScheduledAction

    • application-autoscaling:DeregisterScalableTarget

    • application-autoscaling:DescribeScalableTargets

    • application-autoscaling:DescribeScalingActivities

    • application-autoscaling:DescribeScalingPolicies

    • application-autoscaling:DescribeScheduledActions

    • application-autoscaling:PutScalingPolicy

    • application-autoscaling:PutScheduledAction

    • application-autoscaling:RegisterScalableTarget

  • Untuk memperbarui pengaturan Time to Live dengan UpdateTimeToLive API, Anda harus memiliki izin berikut pada sumber daya tabel di semua Wilayah yang berisi replika:

    • dynamodb:UpdateTimeToLive

    Perhatikan bahwa Time to Live (TTL) hanya didukung untuk tabel global yang dikonfigurasi dengan Multi-Region Konsistensi Akhirnya (MREC). Untuk informasi selengkapnya tentang cara kerja tabel global dengan TTL, lihat Cara kerja tabel global DynamoDB.

Menghapus tabel global dan menghapus replika

Untuk menghapus tabel global, Anda harus menghapus semua replika. Izin yang diperlukan untuk operasi ini berbeda tergantung pada apakah Anda menghapus tabel global dengan atau tanpa Wilayah saksi.

Izin untuk menghapus tabel global dan menghapus replika

Izin berikut diperlukan baik untuk menghapus replika individual maupun untuk menghapus tabel global sepenuhnya. Menghapus konfigurasi tabel global hanya menghapus hubungan replikasi antara tabel di Wilayah yang berbeda. Itu tidak menghapus tabel DynamoDB yang mendasarinya di Wilayah terakhir yang tersisa. Tabel di Wilayah terakhir terus ada sebagai tabel DynamoDB standar dengan data dan pengaturan yang sama. Izin ini berlaku untuk tabel global Kon Multi-Region sistensi Akhirnya (MREC) dan Multi-Region Konsistensi Kuat (MRSC).

  • Untuk menghapus replika dari tabel global menggunakan UpdateTable API, Anda memerlukan izin berikut pada sumber daya tabel di Wilayah tempat Anda membuat panggilan API:

    • dynamodb:UpdateTable

  • Anda memerlukan izin berikut pada sumber daya tabel di setiap Wilayah tempat Anda menghapus replika:

    • dynamodb:DeleteTable

    • dynamodb:DeleteTableReplica

Izin tambahan untuk tabel global MRSC menggunakan saksi

Untuk menghapus tabel global konsistensi kuat multi-wilayah (MRSC) dengan saksi, Anda harus memiliki izin berikut pada sumber daya tabel di semua Wilayah yang berpartisipasi (termasuk Wilayah replika dan Wilayah saksi):

  • dynamodb:DeleteGlobalTableWitness

Contoh kebijakan IAM untuk menghapus replika tabel global

Kebijakan berbasis identitas ini memungkinkan Anda menghapus tabel global DynamoDB bernama “users” dan replika di tiga Wilayah:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users", "arn:aws:dynamodb:us-west-2:123456789012:table/users" ] } ] }

Kebijakan berbasis identitas ini memungkinkan Anda menghapus replika dan saksi dari tabel global MRSC bernama “users”:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:UpdateTable", "dynamodb:DeleteTable", "dynamodb:DeleteTableReplica", "dynamodb:DeleteGlobalTableWitness" ], "Resource": [ "arn:aws:dynamodb:us-east-1:123456789012:table/users", "arn:aws:dynamodb:us-east-2:123456789012:table/users" ] } ] }

Bagaimana tabel global digunakan AWS KMS

Seperti semua tabel DynamoDB, replika tabel global selalu mengenkripsi data saat diam menggunakan kunci enkripsi yang disimpan di AWS Key Management Service ().AWS KMS

Semua replika dalam tabel global harus dikonfigurasi dengan jenis kunci KMS yang sama (kunci yang AWS dimiliki, kunci terkel AWS ola, atau kunci yang dikelola pelanggan).

penting

DynamoDB memerlukan akses ke kunci enkripsi replika untuk menghapus replika. Jika Anda ingin menonaktifkan atau menghapus kunci yang dikelola pelanggan yang digunakan untuk mengenkripsi replika karena Anda menghapus replika, pertama-tama Anda harus menghapus replika, menunggu status tabel pada salah satu replika yang tersisa diubah menjadiACTIVE, lalu menonaktifkan atau menghapus kunci.

Untuk tabel global yang dikonfigurasi untuk konsistensi akhir Multi-wilayah (MREC), jika Anda menonaktifkan atau mencabut akses DynamoDB ke kunci yang dikelola pelanggan yang digunakan untuk mengenkripsi replika, replikasi ke dan dari replika akan berhenti dan status replika akan berubah menjadi. INACCESSIBLE_ENCRYPTION_CREDENTIALS Jika replika dalam tabel global MREC tetap dalam INACCESSIBLE_ENCRYPTION_CREDENTIALS status selama lebih dari 20 jam, replika dikonversi secara ireversibel ke tabel DynamoDB wilayah tunggal.

Untuk tabel global yang dikonfigurasi untuk konsistensi kuat multi-wilayah (MRSC), jika Anda menonaktifkan atau mencabut akses DynamoDB ke kunci yang dikelola pelanggan yang digunakan untuk mengenkripsi replika, replikasi ke dan dari replika akan berhenti, upaya untuk melakukan penulisan atau pembacaan yang sangat konsisten ke replika akan mengembalikan kesalahan, dan status replika akan berubah menjadi. INACCESSIBLE_ENCRYPTION_CREDENTIALS Jika replika dalam tabel global MRSC tetap dalam INACCESSIBLE_ENCRYPTION_CREDENTIALS status selama lebih dari tujuh hari, tergantung pada izin spesifik yang dicabut, replika akan diarsipkan atau menjadi tidak dapat diakses secara permanen.