Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
DAXkontrol akses
DynamoDB Accelerator DAX () dirancang untuk bekerja sama dengan DynamoDB, untuk menambahkan lapisan caching ke aplikasi Anda dengan mulus. Namun, DAX dan DynamoDB memiliki mekanisme kontrol akses terpisah. Kedua layanan menggunakan AWS Identity and Access Management (IAM) untuk mengimplementasikan kebijakan keamanan masing-masing, tetapi model keamanan untuk DAX dan DynamoDB berbeda.
Kami sangat menyarankan Anda memahami kedua model keamanan, sehingga Anda dapat menerapkan langkah-langkah keamanan yang tepat untuk aplikasi yang Anda gunakanDAX.
Bagian ini menjelaskan mekanisme kontrol akses yang disediakan oleh DAX dan memberikan contoh IAM kebijakan yang dapat Anda sesuaikan dengan kebutuhan Anda.
Dengan DynamoDB, Anda dapat IAM membuat kebijakan yang membatasi tindakan yang dapat dilakukan pengguna pada sumber daya DynamoDB individual. Misalnya, Anda dapat membuat peran pengguna yang hanya mengizinkan pengguna melakukan tindakan hanya baca di tabel DynamoDB tertentu. (Untuk informasi selengkapnya, lihat Manajemen Identitas dan Akses untuk Amazon DynamoDB.) Sebagai perbandingan, model DAX keamanan berfokus pada keamanan klaster, dan kemampuan cluster untuk melakukan tindakan API DynamoDB atas nama Anda.
Awas
Jika saat ini Anda menggunakan IAM peran dan kebijakan untuk membatasi akses ke data tabel DynamoDB, maka penggunaan dapat menumbangkan kebijakan tersebutDAX. Misalnya, pengguna dapat memiliki akses ke tabel DynamoDB DAX melalui tetapi tidak memiliki akses eksplisit ke tabel yang sama mengakses DynamoDB secara langsung. Untuk informasi selengkapnya, lihat Manajemen Identitas dan Akses untuk Amazon DynamoDB.
DAXtidak memberlakukan pemisahan tingkat pengguna pada data di DynamoDB. Sebagai gantinya, pengguna mewarisi izin IAM kebijakan DAX klaster saat mereka mengakses klaster tersebut. Jadi, saat mengakses tabel DynamoDB DAX melalui, satu-satunya kontrol akses yang berlaku adalah izin dalam kebijakan klaster. DAX IAM Tidak ada izin lain yang diakui.
Jika Anda memerlukan isolasi, kami sarankan Anda membuat DAX klaster tambahan dan cakupan IAM kebijakan untuk setiap klaster yang sesuai. Misalnya, Anda dapat membuat beberapa DAX cluster dan mengizinkan setiap cluster untuk mengakses hanya satu tabel.
IAMperan layanan untuk DAX
Saat Anda membuat DAX klaster, Anda harus mengaitkan cluster dengan IAM peran. Hal ini dikenal sebagai peran layanan untuk klaster.
Misalkan Anda ingin membuat DAX cluster baru bernama DAXCluster01. Anda dapat membuat peran layanan bernama DAXServiceRole, dan mengaitkan peran dengan DAXCluster01. Kebijakan untuk DAXServiceRoleakan menentukan tindakan DynamoDB DAXClusteryang dapat dilakukan 01, atas nama pengguna yang berinteraksi dengan 01. DAXCluster
Ketika Anda membuat peran layanan, Anda harus menentukan hubungan kepercayaan antara DAXServiceRoledan DAX layanan itu sendiri. Hubungan kepercayaan menentukan entitas yang dapat mengambil peran dan memanfaatkan izinnya. Berikut ini adalah contoh dokumen hubungan kepercayaan untuk DAXServiceRole:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dax.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Hubungan kepercayaan ini memungkinkan DAX klaster untuk mengasumsikan DAXServiceRoledan melakukan panggilan API DynamoDB atas nama Anda.
Tindakan API DynamoDB yang diizinkan dijelaskan dalam dokumen kebijakan, IAM yang Anda lampirkan. DAXServiceRole Berikut adalah contoh dokumen kebijakan.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DaxAccessPolicy", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/Books" ] } ] }
Kebijakan ini memungkinkan DAX untuk melakukan tindakan DynamoDB yang diperlukan pada API tabel DynamoDB. dynamodb:DescribeTable
Tindakan ini diperlukan DAX untuk mempertahankan metadata tentang tabel, dan yang lainnya adalah tindakan baca dan tulis yang dilakukan pada item dalam tabel. Tabel, bernamaBooks
, berada di Wilayah us-west-2 dan dimiliki oleh ID akun. AWS 123456789012
catatan
DAXmendukung mekanisme untuk mencegah masalah wakil yang membingungkan selama akses Cross-service. Untuk informasi selengkapnya, lihat Masalah deputi yang membingungkan di Panduan IAM Pengguna.
IAMkebijakan untuk mengizinkan akses DAX klaster
Setelah Anda membuat DAX klaster, Anda perlu memberikan izin kepada pengguna sehingga pengguna dapat mengakses DAX cluster.
Misalnya, Anda ingin memberikan akses ke DAXCluster01 ke pengguna bernama Alice. Pertama-tama Anda akan membuat IAM policy (AliceAccessPolicy) yang mendefinisikan DAX cluster dan DAX API tindakan yang dapat diakses penerima. Kemudian, Anda akan memberikan akses dengan melampirkan kebijakan ini ke pengguna Alice.
Dokumen kebijakan berikut memberikan penerima akses penuh pada DAXCluster01.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }
Dokumen kebijakan mengizinkan akses ke DAX klaster, tetapi tidak memberikan izin DynamoDB apa pun. (Izin DynamoDB diberikan oleh peran layanan.) DAX
Untuk pengguna Alice, Anda harus terlebih dahulu membuat AliceAccessPolicy
dengan dokumen kebijakan yang ditampilkan sebelumnya. Kemudian, Anda akan melampirkan kebijakan tersebut pada Alice.
catatan
Alih-alih melampirkan kebijakan ke pengguna, Anda dapat melampirkannya ke IAM peran. Dengan cara itu, semua pengguna yang mengambil peran tersebut akan memiliki izin yang Anda tetapkan dalam kebijakan.
Kebijakan pengguna, bersama dengan peran DAX layanan, menentukan sumber daya DynamoDB API dan tindakan yang dapat diakses oleh penerima. DAX
Studi kasus: Mengakses DynamoDB dan DAX
Skenario berikut dapat membantu pemahaman Anda lebih lanjut tentang IAM kebijakan untuk digunakanDAX. (Skenario ini disebut di seluruh bagian ini). Diagram berikut menunjukkan gambaran umum tingkat tinggi skenario.
Dalam skenario ini, terdapat entitas berikut:
-
Pengguna (Bob).
-
IAMPeran (
BobUserRole
). Bob mengambil peran ini saat runtime. -
IAMKebijakan (
BobAccessPolicy
). Kebijakan ini dilampirkan padaBobUserRole
.BobAccessPolicy
mendefinisikan DynamoDB DAX dan sumber dayaBobUserRole
yang diizinkan untuk mengakses. -
Sebuah DAX cluster (
DAXCluster01
). -
Peran IAM layanan (
DAXServiceRole
). Peran ini mengizinkanDAXCluster01
untuk mengakses DynamoDB. -
IAMKebijakan (
DAXAccessPolicy
). Kebijakan ini dilampirkan padaDAXServiceRole
.DAXAccessPolicy
mendefinisikan APIs DynamoDB dan sumber dayaDAXCluster01
yang diizinkan untuk mengakses. -
Tabel DynamoDB (
Books
).
Kombinasi pernyataan kebijakan di BobAccessPolicy
dan DAXAccessPolicy
menentukan apa yang dapat dilakukan Bob dengan tabel Books
. Misalnya, Bob mungkin dapat mengakses secara Books
langsung (menggunakan titik akhir DynamoDB), secara tidak langsung (menggunakan DAX cluster), atau keduanya. Bob mungkin juga dapat membaca data dari Books
, menulis data ke Books
, atau keduanya.
Akses ke DynamoDB, tetapi tidak ada akses dengan DAX
Hal ini dimungkinkan untuk memungkinkan akses langsung ke tabel DynamoDB, sementara mencegah akses tidak langsung menggunakan cluster. DAX Untuk akses langsung ke DynamoDB, izin untuk BobUserRole
ditentukan oleh BobAccessPolicy
(yang terlampir pada peran).
Akses hanya baca ke DynamoDB (khusus)
Bob dapat mengakses DynamoDB dengan BobUserRole
. IAMKebijakan yang dilampirkan pada role (BobAccessPolicy
) ini menentukan tabel DynamoDB BobUserRole
yang dapat mengakses, dan APIs apa BobUserRole
yang dapat dipanggil.
Pertimbangkan dokumen kebijakan berikut untuk BobAccessPolicy
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Ketika dilampirkan ke BobAccessPolicy
, dokumen ini mengizinkan BobUserRole
untuk mengakses titik akhir DynamoDB dan melakukan operasi hanya baca pada tabel Books
.
DAXtidak muncul dalam kebijakan ini, jadi akses via DAX ditolak.
Akses baca/tulis ke DynamoDB (khusus)
Jika BobUserRole
memerlukan akses baca/tulis ke DynamoDB, kebijakan berikut akan berfungsi.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Sekali lagi, DAX tidak muncul dalam kebijakan ini, jadi akses via DAX ditolak.
Akses ke DynamoDB dan ke DAX
Untuk mengizinkan akses ke DAX klaster, Anda harus menyertakan tindakan DAX -spesifik dalam IAM kebijakan.
Tindakan DAX -spesifik berikut sesuai dengan rekan-rekan mereka yang bernama serupa di DynamoDB: API
-
dax:GetItem
-
dax:BatchGetItem
-
dax:Query
-
dax:Scan
-
dax:PutItem
-
dax:UpdateItem
-
dax:DeleteItem
-
dax:BatchWriteItem
-
dax:ConditionCheckItem
Hal yang sama berlaku untuk kunci syarat dax:EnclosingOperation
.
Akses hanya-baca ke DynamoDB dan akses hanya-baca DAX
Misalkan Bob memerlukan akses read-only ke Books
tabel, dari DynamoDB dan dari. DAX Kebijakan berikut (dilampirkan pada BobUserRole
) memberikan akses ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Kebijakan ini memiliki pernyataan untuk DAX access (DAXAccessStmt
) dan pernyataan lain untuk D ynamoDBaccess (DynamoDBAccessStmt
). Pernyataan tersebut mengizinkan Bob mengirim permintaan GetItem
, BatchGetItem
, Query
, dan Scan
ke DAXCluster01
.
Namun, peran layanan untuk DAXCluster01
juga akan membutuhkan akses hanya baca ke tabel Books
di DynamoDB. IAMKebijakan berikut, terlampir padaDAXServiceRole
, akan memenuhi persyaratan ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Akses baca/tulis ke DynamoDB dan baca-saja dengan DAX
Untuk peran pengguna tertentu, Anda dapat memberikan akses baca/tulis ke tabel DynamoDB, sementara juga mengizinkan akses hanya-baca melalui. DAX
Untuk Bob, IAM kebijakan untuk perlu BobUserRole
mengizinkan tindakan baca dan tulis DynamoDB di atas Books
meja, sementara juga mendukung tindakan hanya-baca melalui. DAXCluster01
Dokumen kebijakan contoh untuk BobUserRole
berikut memberikan akses ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Selain itu, DAXServiceRole
akan memerlukan IAM kebijakan yang memungkinkan DAXCluster01
untuk melakukan tindakan hanya-baca di atas meja. Books
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Akses baca/tulis ke DynamoDB dan akses baca/tulis DAX
Sekarang anggaplah bahwa Bob memerlukan akses baca/tulis ke tabel Books
, langsung dari DynamoDB atau secara tidak langsung dari DAXCluster01
. Dokumen kebijakan yang dilampirkan pada BobAccessPolicy
berikut memberikan akses ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" }, { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Selain itu, DAXServiceRole
akan memerlukan IAM kebijakan yang memungkinkan DAXCluster01
untuk melakukan tindakan baca/tulis di atas meja. Books
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Akses ke DynamoDB DAX melalui, tetapi tidak ada akses langsung ke DynamoDB
Dalam skenario ini, Bob dapat mengakses Books
tabel melaluiDAX, tetapi ia tidak memiliki akses langsung ke Books
tabel di DynamoDB. Jadi, ketika Bob mendapatkan akses keDAX, ia juga mendapatkan akses ke tabel DynamoDB yang mungkin tidak dapat ia akses. Saat Anda mengonfigurasi IAM kebijakan untuk peran DAX layanan, ingatlah bahwa setiap pengguna yang diberi akses ke DAX klaster melalui kebijakan akses pengguna mendapatkan akses ke tabel yang ditentukan dalam kebijakan tersebut. Dalam kasus ini, BobAccessPolicy
mendapat akses ke tabel yang ditentukan di DAXAccessPolicy
.
Jika saat ini Anda menggunakan IAM peran dan kebijakan untuk membatasi akses ke tabel dan data DynamoDB, DAX penggunaan dapat menumbangkan kebijakan tersebut. Dalam kebijakan berikut, Bob memiliki akses ke tabel DynamoDB DAX melalui tetapi tidak memiliki akses langsung eksplisit ke tabel yang sama di DynamoDB.
Dokumen kebijakan berikut (BobAccessPolicy
), yang dilampirkan pada BobUserRole
, memberikan akses ini.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXAccessStmt", "Effect": "Allow", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem", "dax:ConditionCheckItem" ], "Resource": "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" } ] }
Dalam kebijakan akses ini, tidak ada izin untuk mengakses DynamoDB secara langsung.
Bersama dengan BobAccessPolicy
, DAXAccessPolicy
berikut memberi BobUserRole
akses ke tabel DynamoDB Books
meskipun BobUserRole
tidak dapat langsung mengakses tabel Books
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDBAccessStmt", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem", "dynamodb:DescribeTable", "dynamodb:ConditionCheckItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books" } ] }
Seperti yang ditunjukkan contoh ini, ketika Anda mengonfigurasi kontrol akses untuk kebijakan akses pengguna dan kebijakan akses DAX klaster, Anda harus sepenuhnya memahami end-to-end akses untuk memastikan bahwa prinsip hak istimewa paling sedikit dipatuhi. Juga memastikan bahwa memberikan akses pengguna ke DAX klaster tidak menumbangkan kebijakan kontrol akses yang telah ditetapkan sebelumnya.