Gestion de l'accès àAmazon S3Utilisation de stratégies de compartiment - AWS SDK for Java 1. x

La AWS SDK for Java version 1.x est entrée en mode maintenance le 31 juillet 2024 et atteindra end-of-supportle 31 décembre 2025. Nous vous recommandons de migrer vers le pour continuer AWS SDK for Java 2.xà bénéficier des nouvelles fonctionnalités, des améliorations de disponibilité et des mises à jour de sécurité.

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.

Gestion de l'accès àAmazon S3Utilisation de stratégies de compartiment

Vous pouvez définir, obtenir ou supprimer une stratégie de compartiment pour gérer l'accès à vos compartiments Amazon S3.

Définition d'une stratégie de compartiment

Vous pouvez définir la stratégie de compartiment pour un compartiment S3 :

  • Appel du client AmazonS3setBucketPolicyet lui fournir unSetBucketPolicyRequest

  • En définissant la stratégie directement à l'aide de la surcharge setBucketPolicy qui prend un nom de compartiment et un texte de stratégie (au format JSON)

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;

Code

s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Utilisation de la classe Policy pour générer ou valider une stratégie

Lorsque vous fournissez une stratégie de compartiment à setBucketPolicy, vous pouvez effectuer les actions suivantes :

  • Spécifier la stratégie directement sous la forme d'une chaîne de texte au format JSON

  • Créer la stratégie à l'aide de la classe Policy

En utilisant la classe Policy, vous n'avez pas à vous soucier de formater correctement votre chaîne de texte. Pour obtenir le texte de stratégie JSON à partir de la classe Policy, utilisez sa méthode toJson.

Importations

import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Code

new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();

La classe Policy fournit également une méthode fromJson qui peut tenter de créer une stratégie à l'aide d'une chaîne JSON transmise. La méthode valide cette dernière pour s'assurer que le texte peut être transformé en une structure de stratégie valide et échoue avec une exception IllegalArgumentException si le texte de la stratégie n'est pas valide.

Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }

Vous pouvez utiliser cette technique pour prévalider une stratégie que vous lisez à partir d'un fichier ou avec tout autre moyen.

Veuillez consulter l'exemple complet sur GitHub.

Obtention d'une stratégie de compartiment

Pour récupérer la stratégie pour unAmazon S3, appelez le client AmazonS3getBucketPolicyen lui transmettant le nom du compartiment à partir lequel récupérer la stratégie.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;

Code

try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Si le compartiment nommé n'existe pas, si vous n'y avez pas accès ou s'il n'a pas de stratégie de compartiment, une exception AmazonServiceException est levée.

Veuillez consulter l'exemple complet sur GitHub.

Suppression d'une stratégie de compartiment

Pour supprimer une stratégie de compartiment, appelez la méthode du client AmazonS3deleteBucketPolicyen lui fournissant le nom du compartiment.

Importations

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Code

try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Cette méthode aboutit même si le compartiment ne comporte pas encore de stratégie. Si vous spécifiez un nom de compartiment qui n'existe pas ou si vous n'avez pas accès au compartiment, une exception AmazonServiceException est levée.

Veuillez consulter l'exemple complet sur GitHub.

Plus d'informations