Anhängen einer Richtlinie an eine vorhandene DynamoDB-Tabelle - Amazon-DynamoDB

Anhängen einer Richtlinie an eine vorhandene DynamoDB-Tabelle

Über die DynamoDB-Konsole, die PutResourcePolicy-API, die AWS CLI, das AWS-SDK oder eine CloudFormation-Vorlage können Sie einer vorhandenen Tabelle eine ressourcenbasierte Richtlinie anhängen oder eine vorhandene Richtlinie ändern.

Im folgenden IAM-Richtlinienbeispiel wird der Befehl put-resource-policy der AWS CLI verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. In diesem Beispiel darf der Benutzer John die API-Aktionen GetItem, PutItem, UpdateItem und UpdateTable für eine vorhandene Tabelle namens MusicCollection durchführen.

Denken Sie daran, den kursiv formatierten Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

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\" } ] }"

Um eine vorhandene ressourcenbasierte Richtlinie einer Tabelle bedingt zu aktualisieren, können Sie den optionalen Parameter expected-revision-id verwenden. Im folgenden Beispiel wird die Richtlinie nur aktualisiert, wenn sie in DynamoDB vorhanden ist und ihre aktuelle Revisions-ID mit dem angegebenen expected-revision-id-Parameter übereinstimmt.

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. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die DynamoDB-Konsole unter https://console.aws.amazon.com/dynamodb/.

  2. Wählen Sie im Dashboard eine vorhandene Tabelle aus.

  3. Navigieren Sie zur Registerkarte Berechtigungen und wählen Sie Tabellenrichtlinie erstellen aus.

  4. Fügen Sie im Editor für ressourcenbasierte Richtlinien die Richtlinie hinzu, die Sie anhängen möchten, und wählen Sie Richtlinie erstellen aus.

    In folgenden IAM-Richtlinienbeispiel darf der Benutzer John die API-Aktionen GetItem, PutItem, UpdateItem und UpdateTable für eine vorhandene Tabelle namens MusicCollection durchführen.

    Denken Sie daran, den kursiv formatierten Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

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

Im folgenden IAM-Richtlinienbeispiel wird die Methode putResourcePolicy verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. Diese Richtlinie ermöglicht es einem Benutzer, die API-Aktion GetItem für eine vorhandene Tabelle auszuführen.

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. allowedAWSPrincipal - 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" + "}"; } }