La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-support
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Stratégies de contrôle d'accès
AWS les politiques de contrôle d'accès vous permettent de définir des contrôles d'accès précis sur vos AWS ressources. Une stratégie de contrôle d'accès se compose d'un ensemble de déclarations qui se présentent sous la forme suivante :
Le compte A est autorisé à exécuter l'action B sur la ressource C lorsque la condition D s'applique.
Où :
-
A est le principal : celui Compte AWS qui fait une demande pour accéder à l'une de vos AWS ressources ou pour la modifier.
-
B est l'action : mode d'accès ou de modification de votre AWS ressource, par exemple en envoyant un message à une Amazon SQS file d'attente ou en stockant un objet dans un Amazon S3 compartiment.
-
C est la ressource : AWS entité à laquelle le principal souhaite accéder, telle qu'une Amazon SQS file d'attente ou un objet stocké dans celui-ci Amazon S3.
-
D est un ensemble de conditions : les contraintes facultatives qui spécifient quand autoriser ou refuser l'accès au principal pour accéder à votre ressource. De nombreuses conditions expressives sont disponibles, certaines spécifiques à chaque service. Par exemple, vous pouvez utiliser des conditions de date pour autoriser l'accès à vos ressources uniquement après ou avant un moment spécifique.
Amazon S3 Exemple
L'exemple suivant illustre une politique qui permet à quiconque d'accéder à tous les objets d'un compartiment, mais restreint l'accès au téléchargement d'objets vers ce compartiment à deux options spécifiques Compte AWS(en plus du compte du propriétaire du compartiment).
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 Exemple
L'une des utilisations courantes des politiques consiste à autoriser une Amazon SQS file d'attente à recevoir des messages provenant d'un SNS sujet Amazon.
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));
SNSExemple Amazon
Certains services proposent des conditions supplémentaires qui peuvent être utilisées dans les politiques. Amazon SNS fournit des conditions pour autoriser ou refuser les abonnements à SNS des sujets en fonction du protocole (par exemple, e-mail,HTTP,HTTPS, Amazon SQS) et du point de terminaison (par exemple, adresse e-mailURL,, Amazon SQS ARN) de la demande d'abonnement à un sujet.
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()));