Hängen Sie eine Richtlinie an eine vorhandene Tabelle an - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Hängen Sie eine Richtlinie an eine vorhandene Tabelle an

Sie können eine ressourcenbasierte Richtlinie an eine bestehende Tabelle anhängen oder eine vorhandene Richtlinie ändern, indem Sie die DynamoDB-Konsole, die PutResourcePolicyAPI AWS CLI, das AWS SDK oder eine Vorlage verwenden.AWS CloudFormation

Im folgenden Beispiel für eine IAM-Richtlinie wird der put-resource-policy AWS CLI Befehl verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. In diesem Beispiel kann der Benutzer John die UpdateTableAPI-Aktionen GetItem, PutItemUpdateItem, und für eine vorhandene Tabelle mit dem Namen ausführen. MusicCollection

Denken Sie daran, den kursiv geschriebenen 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 bestehende ressourcenbasierte Richtlinie einer Tabelle bedingt zu aktualisieren, können Sie den optionalen Parameter verwenden. expected-revision-id 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 DynamoDB-Konsole an AWS Management Console und öffnen Sie sie 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.

    Im folgenden Beispiel für eine IAM-Richtlinie kann der Benutzer John die UpdateTableAPI-Aktionen GetItem, PutItemUpdateItem, und für eine vorhandene Tabelle mit dem Namen ausführen. MusicCollection

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

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

Im folgenden Beispiel für eine IAM-Richtlinie wird die putResourcePolicy Methode verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. Diese Richtlinie ermöglicht es einem Benutzer, die GetItemAPI-Aktion 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. 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" + "}"; } }