Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Contoh untuk menggunakan ABAC dengan tabel dan indeks DynamoDB

Mode fokus
Contoh untuk menggunakan ABAC dengan tabel dan indeks DynamoDB - Amazon DynamoDB

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

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.

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:

Using the AWS CLI
  1. 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
  2. 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
  3. 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.

  4. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

  5. 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"} }} }'
  6. Pindai tabel untuk memverifikasi apakah item ditambahkan ke tabel.

    aws dynamodb scan --table-name myMusicTable --region us-east-1
Using the AWS SDK for Java 2.x
  1. Buat tabel. Contoh berikut menggunakan CreateTableAPIuntuk membuat tabel bernamamyMusicTable.

    DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build(); CreateTableRequest createTableRequest = CreateTableRequest.builder() .attributeDefinitions( Arrays.asList( AttributeDefinition.builder() .attributeName("id") .attributeType(ScalarAttributeType.S) .build() ) ) .keySchema( Arrays.asList( KeySchemaElement.builder() .attributeName("id") .keyType(KeyType.HASH) .build() ) ) .provisionedThroughput(ProvisionedThroughput.builder() .readCapacityUnits(5L) .writeCapacityUnits(5L) .build() ) .tableName("myMusicTable") .build(); CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest); String tableArn = createTableResponse.tableDescription().tableArn(); String tableName = createTableResponse.tableDescription().tableName();
  2. Tambahkan tag ke tabel ini. TagResourceAPIDalam contoh berikut menambahkan pasangan nilai kunci tag Title: ProductManager ke. myMusicTable

    TagResourceRequest tagResourceRequest = TagResourceRequest.builder() .resourceArn(tableArn) .tags( Arrays.asList( Tag.builder() .key("Title") .value("ProductManager") .build() ) ) .build(); dynamoDB.tagResource(tagResourceRequest);
  3. 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.

  4. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

  5. Gunakan PutItemAPIuntuk meletakkan item kemyMusicTable.

    HashMap<String, AttributeValue> info = new HashMap<>(); info.put("rating", AttributeValue.builder().s("9").build()); info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build()); info.put("release_date", AttributeValue.builder().s("2023-07-21").build()); HashMap<String, AttributeValue> itemValues = new HashMap<>(); itemValues.put("id", AttributeValue.builder().s("2023").build()); itemValues.put("title", AttributeValue.builder().s("Happy Day").build()); itemValues.put("info", AttributeValue.builder().m(info).build()); PutItemRequest putItemRequest = PutItemRequest.builder() .tableName(tableName) .item(itemValues) .build(); dynamoDB.putItem(putItemRequest);
  6. Pindai tabel untuk memverifikasi apakah item ditambahkan ke tabel.

    ScanRequest scanRequest = ScanRequest.builder() .tableName(tableName) .build(); ScanResponse scanResponse = dynamoDB.scan(scanRequest);
Using the AWS SDK for Python (Boto3)
  1. Buat tabel. Contoh berikut menggunakan CreateTableAPIuntuk membuat tabel bernamamyMusicTable.

    create_table_response = ddb_client.create_table( AttributeDefinitions=[ { 'AttributeName': 'id', 'AttributeType': 'S' }, ], TableName='myMusicTable', KeySchema=[ { 'AttributeName': 'id', 'KeyType': 'HASH' }, ], ProvisionedThroughput={ 'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5 }, ) table_arn = create_table_response['TableDescription']['TableArn']
  2. Tambahkan tag ke tabel ini. TagResourceAPIDalam contoh berikut menambahkan pasangan nilai kunci tag Title: ProductManager ke. myMusicTable

    tag_resouce_response = ddb_client.tag_resource( ResourceArn=table_arn, Tags=[ { 'Key': 'Title', 'Value': 'ProductManager' }, ] )
  3. 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.

  4. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

  5. Gunakan PutItemAPIuntuk meletakkan item kemyMusicTable.

    put_item_response = client.put_item( TableName = 'myMusicTable' Item = { 'id': '2023', 'title': 'Happy Day', 'info': { 'rating': '9', 'artists': ['Acme Band','No One You Know'], 'release_date': '2023-07-21' } } )
  6. Pindai tabel untuk memverifikasi apakah item ditambahkan ke tabel.

    scan_response = client.scan( TableName='myMusicTable' )
  1. 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
  2. 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
  3. 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.

  4. Asumsikan peran dengan kebijakan yang dijelaskan dalam Langkah 3.

  5. 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"} }} }'
  6. 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:

Using the AWS CLI
  1. 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" } } } ] }
  2. 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
Using the AWS SDK for Python (Boto3)
  1. 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" } } } ] }
  2. Buat tabel yang berisi pasangan nilai kunci tag dari. "Owner": "John"

    ddb_client = boto3.client('dynamodb') create_table_response = ddb_client.create_table( AttributeDefinitions=[ { 'AttributeName': 'id', 'AttributeType': 'S' }, ], TableName='myMusicTable', KeySchema=[ { 'AttributeName': 'id', 'KeyType': 'HASH' }, ], ProvisionedThroughput={ 'ReadCapacityUnits': 1000, 'WriteCapacityUnits': 500 }, Tags=[ { 'Key': 'Owner', 'Value': 'John' }, ], )
  1. 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" } } } ] }
  2. 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:

Using the AWS CLI
  1. 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" } } } ] }
  2. Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tagTitle.

    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
Using the AWS SDK for Python (Boto3)
  1. 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" } } } ] }
  2. Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tagTitle.

    ddb_client = boto3.client('dynamodb') create_table_response = ddb_client.create_table( AttributeDefinitions=[ { 'AttributeName': 'id', 'AttributeType': 'S' }, ], TableName='myMusicTable', KeySchema=[ { 'AttributeName': 'id', 'KeyType': 'HASH' }, ], ProvisionedThroughput={ 'ReadCapacityUnits': 1000, 'WriteCapacityUnits': 500 }, Tags=[ { 'Key': 'Title', 'Value': 'ProductManager' }, ], )
  1. 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" } } } ] }
  2. Asumsikan peran yang dilampirkan kebijakan, dan buat tabel dengan kunci tagTitle.

    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 NullKondisi 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.
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.