Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh berikut menggambarkan beberapa kasus penggunaan untuk mengimplementasikan kondisi berbasis atribut menggunakan tag.
Topik
Contoh 1: Izinkan tindakan menggunakan aws: ResourceTag
Dengan menggunakan kunci aws:ResourceTag/tag-key
kondisi, Anda dapat membandingkan pasangan nilai kunci tag yang ditentukan dalam IAM kebijakan dengan pasangan nilai kunci yang dilampirkan dalam tabel DynamoDB. Misalnya, Anda dapat mengizinkan tindakan tertentu, seperti PutItem, jika kondisi tag cocok dalam IAM kebijakan dan tabel. Untuk melakukan ini, lakukan langkah-langkah berikut:
-
Buat tabel. Contoh berikut menggunakan AWS CLI perintah create-table untuk membuat tabel bernama.
myMusicTable
aws dynamodb create-table \ --table-name myMusicTable \ --attribute-definitions AttributeName=id,AttributeType=S \ --key-schema AttributeName=id,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --region
us-east-1
-
Tambahkan tag ke tabel ini. Contoh AWS CLI perintah tag-resource berikut menambahkan pasangan nilai kunci tag ke.
Title: ProductManager
myMusicTable
aws dynamodb tag-resource --region
us-east-1
--resource-arn arn:aws:dynamodb:us-east-1
:123456789012
:table/myMusicTable --tags Key=Title,Value=ProductManager -
Buat kebijakan inline dan tambahkan ke peran yang memiliki kebijakan AmazonDynamoDBReadOnlyAccess AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:*:*:table/*", "Condition": { "StringEquals": { "aws:ResourceTag/Title": "ProductManager" } } } ] }
Kebijakan ini memungkinkan
PutItem
tindakan pada tabel jika kunci tag dan nilai yang dilampirkan ke tabel cocok dengan tag yang ditentukan dalam kebijakan. -
Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.
-
Gunakan AWS CLI perintah put-item untuk menempatkan item ke.
myMusicTable
aws dynamodb put-item \ --table-name myMusicTable --region us-east-1 \ --item '{ "id": {"S": "2023"}, "title": {"S": "Happy Day"}, "info": {"M": { "rating": {"N": "9"}, "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]}, "release_date": {"S": "2023-07-21"} }} }'
-
Pindai tabel untuk memverifikasi apakah item ditambahkan ke tabel.
aws dynamodb scan --table-name myMusicTable --region
us-east-1
Tanpa ABAC
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, kondisi tag dalam IAM kebijakan dan tabel DynamoDB tidak cocok. Akibatnya, PutItem
tindakan mengembalikan AccessDeniedException
karena efek AmazonDynamoDBReadOnlyAccess
kebijakan.
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
dengan ABAC
Jika ABAC diaktifkan untuk Anda Akun AWS, put-item
tindakan berhasil diselesaikan dan menambahkan item baru ke tabel Anda. Hal ini karena kebijakan inline pada tabel memungkinkan PutItem
tindakan jika kondisi tag dalam IAM kebijakan dan tabel cocok.
Contoh 2: Izinkan tindakan menggunakan aws: RequestTag
Dengan menggunakan RequestTagkunci kondisi aws: /tag-key, Anda dapat membandingkan pasangan nilai kunci tag yang diteruskan dalam permintaan Anda dengan pasangan tag yang ditentukan dalam kebijakan. IAM Misalnya, Anda dapat mengizinkan tindakan tertentu, sepertiCreateTable
, menggunakan aws:RequestTag
jika kondisi tag tidak cocok. Untuk melakukan ini, lakukan langkah-langkah berikut:
-
Buat kebijakan inline dan tambahkan ke peran yang memiliki kebijakan AmazonDynamoDBReadOnlyAccess AWS terkelola yang dilampirkan padanya, seperti yang ditunjukkan pada contoh berikut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:TagResource" ], "Resource": "arn:aws:dynamodb:*:*:table/*", "Condition": { "StringEquals": { "aws:RequestTag/Owner": "John" } } } ] }
-
Buat tabel yang berisi pasangan nilai kunci tag dari.
"Owner": "John"
aws dynamodb create-table \ --attribute-definitions AttributeName=ID,AttributeType=S \ --key-schema AttributeName=ID,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \ --region
us-east-1
\ --tags Key=Owner,Value=John \ --table-name myMusicTable
Tanpa ABAC
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, kondisi tag dalam kebijakan sebaris dan tabel DynamoDB tidak cocok. Akibatnya, CreateTable
permintaan gagal dan tabel Anda tidak dibuat.
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
dengan ABAC
Jika ABAC diaktifkan untuk Anda Akun AWS, permintaan pembuatan tabel Anda berhasil diselesaikan. Karena pasangan nilai kunci tag "Owner": "John"
hadir dalam CreateTable
permintaan, kebijakan inline memungkinkan pengguna John
untuk melakukan tindakan. CreateTable
Contoh 3: Tolak tindakan menggunakan aws: TagKeys
Dengan menggunakan kunci TagKeys kondisi aws:, Anda dapat membandingkan kunci tag dalam permintaan dengan kunci yang ditentukan dalam IAM kebijakan. Misalnya, Anda dapat menolak tindakan tertentu, sepertiCreateTable
, menggunakan aws:TagKeys
jika kunci tag tertentu tidak ada dalam permintaan. Untuk melakukan ini, lakukan langkah-langkah berikut:
-
Tambahkan kebijakan terkelola pelanggan ke peran yang memiliki kebijakan AmazonDynamoDBFullAccess AWS terkelola yang melekat padanya, seperti yang ditunjukkan pada contoh berikut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "dynamodb:CreateTable", "dynamodb:TagResource" ], "Resource": "arn:aws:dynamodb:*:*:table/*", "Condition": { "Null": { "aws:TagKeys": "false" }, "ForAllValues:StringNotEquals": { "aws:TagKeys": "CostCenter" } } } ] }
-
Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tag
Title
.aws dynamodb create-table \ --attribute-definitions AttributeName=ID,AttributeType=S \ --key-schema AttributeName=ID,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \ --region
us-east-1
\ --tags Key=Title,Value=ProductManager \ --table-name myMusicTable
Tanpa ABAC
Jika ABAC tidak diaktifkan untuk Anda Akun AWS, DynamoDB tidak mengirim kunci tag dalam create-table
perintah ke. IAM Null
Kondisi memastikan bahwa kondisi mengevaluasi false
jika tidak ada kunci tag dalam permintaan. Karena Deny
kebijakan tidak cocok, create-table
perintah berhasil diselesaikan.
dengan ABAC
Jika ABAC diaktifkan untuk Anda Akun AWS, kunci tag yang diteruskan dalam create-table
perintah diteruskan keIAM. Kunci tag Title
dievaluasi terhadap kunci tag berbasis kondisiCostCenter
, yang ada dalam kebijakan. Deny
Kunci tag Title
tidak cocok dengan kunci tag yang ada dalam Deny
kebijakan karena StringNotEquals
operator. Oleh karena itu, CreateTable
tindakan gagal dan tabel Anda tidak dibuat. Menjalankan create-table
perintah mengembalikan fileAccessDeniedException
.
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.