IAMkebijakan untuk memisahkan lingkungan DynamoDB di akun yang sama AWS - Amazon DynamoDB

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

IAMkebijakan untuk memisahkan lingkungan DynamoDB di akun yang sama AWS

Misalkan Anda memiliki lingkungan terpisah di mana setiap lingkungan memelihara versi tabelnya sendiri yang bernama ProductCatalog. Jika Anda membuat dua ProductCatalog tabel di AWS akun yang sama, bekerja di satu lingkungan dapat memengaruhi lingkungan lain karena cara pengaturan izin. Misalnya, kuota pada jumlah operasi bidang kontrol bersamaan (sepertiCreateTable) ditetapkan pada tingkat AWS akun.

Sebagai hasilnya, setiap tindakan di satu lingkungan mengurangi jumlah operasi yang tersedia di lingkungan lain. Ada juga risiko bahwa kode di satu lingkungan mungkin secara tidak sengaja mengakses tabel di lingkungan lain.

catatan

Jika Anda ingin memisahkan beban kerja produksi dan pengujian untuk membantu mengontrol potensi "radius ledakan" suatu peristiwa, praktik terbaiknya adalah membuat akun AWS terpisah untuk beban kerja pengujian dan produksi. Untuk informasi selengkapnya, lihat Manajemen dan Pemisahan Akun AWS.

Misalkan Anda memiliki dua pengembang, Amit dan Alice, yang sedang menguji tabel ProductCatalog. Alih-alih setiap pengembang memerlukan AWS akun terpisah, pengembang Anda dapat berbagi AWS akun pengujian yang sama. Di akun pengujian ini, Anda dapat membuat salinan tabel yang sama untuk dikerjakan oleh setiap pengembang, seperti Alice_ProductCatalog dan Amit_ProductCatalog. Dalam hal ini, Anda dapat membuat pengguna Alice dan Amit di AWS akun yang Anda buat untuk lingkungan pengujian. Anda kemudian dapat memberikan izin kepada pengguna ini untuk melakukan tindakan DynamoDB pada tabel yang mereka miliki.

Untuk memberikan izin IAM pengguna ini, Anda dapat melakukan salah satu hal berikut:

  • Buat kebijakan terpisah untuk setiap pengguna, lalu lampirkan setiap kebijakan ke penggunanya secara terpisah. Misalnya, Anda dapat melampirkan kebijakan berikut kepada pengguna Alice untuk mengizinkannya mengakses tindakan DynamoDB pada tabel Alice_ProductCatalog:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllAPIActionsOnAliceTable", "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:DescribeContributorInsights", "dynamodb:RestoreTableToPointInTime", "dynamodb:ListTagsOfResource", "dynamodb:CreateTableReplica", "dynamodb:UpdateContributorInsights", "dynamodb:CreateBackup", "dynamodb:DeleteTable", "dynamodb:UpdateTableReplicaAutoScaling", "dynamodb:UpdateContinuousBackups", "dynamodb:TagResource", "dynamodb:DescribeTable", "dynamodb:GetItem", "dynamodb:DescribeContinuousBackups", "dynamodb:BatchGetItem", "dynamodb:UpdateTimeToLive", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem", "dynamodb:UntagResource", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:DeleteTableReplica", "dynamodb:DescribeTimeToLive", "dynamodb:RestoreTableFromBackup", "dynamodb:UpdateTable", "dynamodb:DescribeTableReplicaAutoScaling", "dynamodb:GetShardIterator", "dynamodb:DescribeStream", "dynamodb:GetRecords", "dynamodb:DescribeLimits", "dynamodb:ListStreams" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*" } ] }

    Kemudian, Anda dapat membuat kebijakan serupa dengan sumber daya berbeda (tabel Amit_ProductCatalog) untuk pengguna Amit.

  • Alih-alih melampirkan kebijakan ke pengguna individu, Anda dapat menggunakan variabel IAM kebijakan untuk menulis satu kebijakan dan melampirkannya ke grup. Anda perlu membuat grup dan, untuk contoh ini, menambahkan pengguna Alice dan Amit ke grup. Contoh berikut memberikan izin untuk melakukan semua tindakan DynamoDB pada tabel ${aws:username}_ProductCatalog. Variabel kebijakan ${aws:username} diganti dengan nama pengguna pemohon ketika kebijakan dievaluasi. Misalnya, jika Alice mengirimkan permintaan untuk menambahkan item, tindakan tersebut hanya diperbolehkan jika Alice menambahkan item ke tabel Alice_ProductCatalog.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ActionsOnUserSpecificTable", "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog" }, { "Sid": "AdditionalPrivileges", "Effect": "Allow", "Action": [ "dynamodb:ListTables", "dynamodb:DescribeTable", "dynamodb:DescribeContributorInsights" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*" } ] }
catatan

Saat menggunakan variabel IAM kebijakan, Anda harus secara eksplisit menentukan 2012-10-17 versi bahasa IAM kebijakan dalam kebijakan. Versi default bahasa IAM kebijakan (2008-10-17) tidak mendukung variabel kebijakan.

Alih-alih mengidentifikasi tabel tertentu sebagai sumber daya seperti yang biasa Anda lakukan, Anda bisa menggunakan karakter wildcard (*) untuk memberikan izin pada semua tabel yang nama tabelnya diawali dengan pengguna yang membuat permintaan, seperti yang ditunjukkan dalam contoh berikut.

"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"