DAXkontrol akses - Amazon DynamoDB

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:DescribeTableTindakan 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.

Ikhtisar tingkat tinggi dari skenario IAM kebijakan untuk digunakanDAX.

Dalam skenario ini, terdapat entitas berikut:

  • Pengguna (Bob).

  • IAMPeran (BobUserRole). Bob mengambil peran ini saat runtime.

  • IAMKebijakan (BobAccessPolicy). Kebijakan ini dilampirkan padaBobUserRole. BobAccessPolicymendefinisikan DynamoDB DAX dan sumber daya BobUserRole yang diizinkan untuk mengakses.

  • Sebuah DAX cluster (DAXCluster01).

  • Peran IAM layanan (DAXServiceRole). Peran ini mengizinkan DAXCluster01 untuk mengakses DynamoDB.

  • IAMKebijakan (DAXAccessPolicy). Kebijakan ini dilampirkan padaDAXServiceRole. DAXAccessPolicymendefinisikan APIs DynamoDB dan sumber daya DAXCluster01 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

Ikhtisar IAM kebijakan yang memungkinkan akses langsung ke tabel, tetapi memblokir akses tidak langsung menggunakan DAX klaster.

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

IAMKebijakan yang memberikan akses ke tabel DynamoDB dan klaster. 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 GetItemBatchGetItemQuery, 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.

Skenario di mana pengguna dapat mengakses tabel melalui DAX cluster tanpa akses DynamoDB langsung.

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 BobAccessPolicyDAXAccessPolicy 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.