Lampirkan kebijakan ke tabel yang ada - Amazon DynamoDB

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

Lampirkan kebijakan ke tabel yang ada

Anda dapat melampirkan kebijakan berbasis sumber daya ke tabel yang ada atau mengubah kebijakan yang ada menggunakan konsol DynamoDB, PutResourcePolicyAPI, SDK, atau templat. AWS CLIAWSAWS CloudFormation

Contoh kebijakan IAM berikut menggunakan put-resource-policy AWS CLI perintah untuk melampirkan kebijakan berbasis sumber daya ke tabel yang ada. Contoh ini memungkinkan pengguna John untuk melakukan tindakan GetItem, PutItem, UpdateItem, dan UpdateTableAPI pada tabel yang ada bernama MusicCollection.

Ingatlah untuk mengganti teks yang dicetak miring dengan informasi spesifik sumber daya Anda.

aws dynamodb put-resource-policy \ --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::111122223333:user/John\" }, \"Action\": [ \"dynamodb:GetItem\", \"dynamodb:PutItem\", \"dynamodb:UpdateItem\", \"dynamodb:UpdateTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"

Untuk memperbarui kebijakan tabel berbasis sumber daya yang ada secara kondisional, Anda dapat menggunakan parameter opsional. expected-revision-id Contoh berikut hanya akan memperbarui kebijakan jika ada di DynamoDB dan ID revisi saat ini cocok dengan parameter yang disediakan. expected-revision-id

aws dynamodb put-resource-policy \ --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --expected-revision-id 1709841168699 \ --policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::111122223333:user/John\" }, \"Action\": [ \"dynamodb:GetItem\", \"dynamodb:UpdateItem\", \"dynamodb:UpdateTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"
  1. Masuk ke AWS Management Console dan buka konsol DynamoDB di https://console.aws.amazon.com/dynamodb/.

  2. Dari dasbor, pilih tabel yang ada.

  3. Arahkan ke tab Izin, dan pilih Buat kebijakan tabel.

  4. Di editor kebijakan berbasis sumber daya, tambahkan kebijakan yang ingin dilampirkan dan pilih Buat kebijakan.

    Contoh kebijakan IAM berikut memungkinkan pengguna John untuk melakukan tindakan GetItem,, PutItemUpdateItem, dan UpdateTableAPI pada tabel yang ada bernama MusicCollection.

    Ingatlah untuk mengganti teks yang dicetak miring dengan informasi spesifik sumber daya Anda.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/John" }, "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:UpdateTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection" } ] }

Contoh kebijakan IAM berikut menggunakan putResourcePolicy metode untuk melampirkan kebijakan berbasis sumber daya ke tabel yang ada. Kebijakan ini memungkinkan pengguna untuk melakukan tindakan GetItemAPI pada tabel yang ada.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * Get started with the AWS SDK for Java 2.x */ public class PutResourcePolicy { public static void main(String[] args) { final String usage = """ Usage: <tableArn> <allowedAWSPrincipal> Where: tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection. allowed AWS Principal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John. """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String tableArn = args[0]; String allowedAWSPrincipal = args[1]; System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " + tableArn); Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal); System.out.println("Revision ID for the attached policy is " + result); ddb.close(); } public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) { String policy = generatePolicy(tableArn, allowedAWSPrincipal); PutResourcePolicyRequest request = PutResourcePolicyRequest.builder() .policy(policy) .resourceArn(tableArn) .build(); try { return ddb.putResourcePolicy(request).revisionId(); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } return ""; } private static String generatePolicy(String tableArn, String allowedAWSPrincipal) { return "{\n" + " \"Version\": \"2012-10-17\",\n" + " \"Statement\": [\n" + " {\n" + " \"Effect\": \"Allow\",\n" + " \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" + " \"Action\": [\n" + " \"dynamodb:GetItem\"\n" + " ],\n" + " \"Resource\": \"" + tableArn + "\"\n" + " }\n" + " ]\n" + "}"; } }