Zugriffskontrollrichtlinien - AWS SDK for Java 1.x

Wir haben die kommende Version end-of-support für AWS SDK for Java (v1) angekündigt. Wir empfehlen Ihnen, auf AWS SDK for Java Version 2 zu migrieren. Termine, weitere Details und Informationen zur Migration finden Sie in der verlinkten Ankündigung.

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.

Zugriffskontrollrichtlinien

AWS Mithilfe von Zugriffskontrollrichtlinien können Sie detaillierte Zugriffskontrollen für Ihre Ressourcen festlegen. AWS Eine Zugriffsrichtlinie besteht aus einer Reihe von Anweisungen, die folgende Form annehmen:

Konto A darf Aktion B auf Ressource C ausführen, wenn Bedingung D gilt.

Wobei gilt:

  • A ist der Principal — AWS-Konto Derjenige, der eine Anfrage zum Zugriff auf oder zur Änderung einer Ihrer AWS Ressourcen stellt.

  • B ist die Aktion — die Art und Weise, wie auf Ihre AWS Ressource zugegriffen oder sie geändert wird, z. B. das Senden einer Nachricht an eine Amazon SQS Warteschlange oder das Speichern eines Objekts in einem Amazon S3 Bucket.

  • C ist die Ressource — die AWS Entität, auf die der Principal zugreifen möchte, z. B. eine Amazon SQS Warteschlange oder ein Objekt, in dem gespeichert ist Amazon S3.

  • D ist eine Reihe von Bedingungen — Die optionalen Einschränkungen, die angeben, wann dem Prinzipal der Zugriff auf Ihre Ressource gewährt oder verweigert werden soll. Viele ausdrucksstarke Bedingungen sind verfügbar, einige speziell für jeden Service. Beispielsweise können Sie mit Datumsbedingungen den Zugriff auf Ressourcen nur nach oder vor einem bestimmten Zeitpunkt zulassen.

Amazon S3 Beispiel

Das folgende Beispiel zeigt eine Richtlinie, die jedem Zugriff erlaubt, alle Objekte in einem Bucket zu lesen, aber den Zugriff auf das Hochladen von Objekten in diesen Bucket auf zwei bestimmte AWS-Konto s beschränkt (zusätzlich zum Konto des Bucket-Besitzers).

Statement allowPublicReadStatement = new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new S3ObjectResource(myBucketName, "*")); Statement allowRestrictedWriteStatement = new Statement(Effect.Allow) .withPrincipals(new Principal("123456789"), new Principal("876543210")) .withActions(S3Actions.PutObject) .withResources(new S3ObjectResource(myBucketName, "*")); Policy policy = new Policy() .withStatements(allowPublicReadStatement, allowRestrictedWriteStatement); AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); s3.setBucketPolicy(myBucketName, policy.toJson());

Amazon SQS Beispiel

Richtlinien werden häufig verwendet, um eine Amazon SQS Warteschlange für den Empfang von Nachrichten von einem Amazon SNS SNS-Thema zu autorisieren.

Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SQSActions.SendMessage) .withConditions(ConditionFactory.newSourceArnCondition(myTopicArn))); Map queueAttributes = new HashMap(); queueAttributes.put(QueueAttributeName.Policy.toString(), policy.toJson()); AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes));

Beispiel für Amazon SNS

Einige Dienste bieten zusätzliche Bedingungen, die in Richtlinien verwendet werden können. Amazon SNS bietet Bedingungen für das Zulassen oder Ablehnen von Abonnements für SNS-Themen auf der Grundlage des Protokolls (z. B. E-Mail, HTTP, HTTPS Amazon SQS) und des Endpunkts (z. B. E-Mail-Adresse, URL, Amazon SQS ARN) der Anfrage zum Abonnieren eines Themas.

Condition endpointCondition = SNSConditionFactory.newEndpointCondition("*@mycompany.com"); Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SNSActions.Subscribe) .withConditions(endpointCondition)); AmazonSNS sns = AmazonSNSClientBuilder.defaultClient(); sns.setTopicAttributes( new SetTopicAttributesRequest(myTopicArn, "Policy", policy.toJson()));