Gestion d'Amazon S3Autorisations d'accès des compartiments et objets - 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 d'Amazon S3Autorisations d'accès des compartiments et objets

Vous pouvez utiliser des listes de contrôle d'accès (ACL) pour les compartiments et les objets Amazon S3 afin de bénéficier d'un contrôle précis sur vos ressources Amazon S3.

Note

Ces exemples de code supposent que vous comprenez le contenu deUtilisation deAWS SDK for Javaet ont configuré la valeur par défautAWSinformations d'identification utilisant les informations deConfigurationAWSInformations d'identification et région pour le développement.

Obtention de la liste de contrôle d'accès pour un compartiment

Pour obtenir la liste ACL actuelle pour un compartiment, appelez le code Amazon S3.getBucketAcl, en lui transmettant lenom de compartimentpour interroger. Cette méthode renvoie un objet AccessControlList. Pour obtenir chaque autorisation d'accès de la liste, appelez sa méthode getGrantsAsList, qui renvoie une liste Java standard d'objets Grant.

Importations

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

Code

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { AccessControlList acl = s3.getBucketAcl(bucket_name); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Veuillez consulter l'exemple complet sur GitHub.

Définition de la liste de contrôle d'accès pour un compartiment

Pour ajouter ou modifier des autorisations dans une liste ACL pour un compartiment, appelez lesetBucketAclMéthode. Cette méthode prend un objet AccessControlList qui contient une liste de bénéficiaires et de niveaux d'accès à définir.

Importations

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

Code

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { // get the current ACL AccessControlList acl = s3.getBucketAcl(bucket_name); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setBucketAcl(bucket_name, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Note

Vous pouvez directement fournir l'identifiant unique du bénéficiaire à l'aide de la classe Grantee, ou utiliser la classe EmailAddressGrantee pour définir le bénéficiaire par adresse e-mail, comme nous l'avons fait ici.

Veuillez consulter l'exemple complet sur GitHub.

Obtention de la liste de contrôle d'accès pour un objet

Pour obtenir la liste ACL actuelle pour un objet, appelez le code Amazon S3.getObjectAcl, en lui transmettant lenom de compartimentetNom de l'objetpour interroger. Comme getBucketAcl, cette méthode renvoie un objet AccessControlList que vous pouvez utiliser pour examiner chaque objet Grant.

Importations

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

Code

try { AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); List<Grant> grants = acl.getGrantsAsList(); for (Grant grant : grants) { System.out.format(" %s: %s\n", grant.getGrantee().getIdentifier(), grant.getPermission().toString()); } } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Veuillez consulter l'exemple complet sur GitHub.

Définition de la liste de contrôle d'accès pour un objet

Pour ajouter ou modifier des autorisations dans une liste ACL pour un objet, appelez le code Amazon S3setObjectAclMéthode. Cette méthode prend un objet AccessControlList qui contient une liste de bénéficiaires et de niveaux d'accès à définir.

Importations

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

Code

try { // get the current ACL AccessControlList acl = s3.getObjectAcl(bucket_name, object_key); // set access for the grantee EmailAddressGrantee grantee = new EmailAddressGrantee(email); Permission permission = Permission.valueOf(access); acl.grantPermission(grantee, permission); s3.setObjectAcl(bucket_name, object_key, acl); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } }
Note

Vous pouvez directement fournir l'identifiant unique du bénéficiaire à l'aide de la classe Grantee, ou utiliser la classe EmailAddressGrantee pour définir le bénéficiaire par adresse e-mail, comme nous l'avons fait ici.

Veuillez consulter l'exemple complet sur GitHub.

En savoir plus