Gestion des autorisations Amazon S3 d'accès pour les compartiments et les objets - AWS SDK pour Java 1. x

La AWS SDK pour 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 des autorisations Amazon S3 d'accès pour les compartiments et les objets

Vous pouvez utiliser des listes de contrôle d'accès (ACLs) pour les Amazon S3 compartiments et les objets afin de contrôler avec précision vos ressources. Amazon S3

Note

Ces exemples de code supposent que vous comprenez le contenu de la section Utilisation du AWS SDK pour Java et que vous avez configuré les AWS informations d'identification par défaut à l'aide des informations de configuration des informations AWS d'identification et de la région pour le développement.

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

Pour obtenir l'ACL actuelle d'un bucket, appelez la getBucketAcl méthode AmazonS3 en lui transmettant le nom du bucket à interroger. Cette méthode renvoie un AccessControlListobjet. 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); }

Consultez 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 à une ACL pour un bucket, appelez la méthode d'AmazonS3. setBucketAcl Il faut un AccessControlListobjet contenant une liste de bénéficiaires et de niveaux d'accès pour le 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 fournir l'identifiant unique du bénéficiaire directement à l'aide de la classe Grantee, ou utiliser la EmailAddressGranteeclasse pour définir le bénéficiaire par e-mail, comme nous l'avons fait ici.

Consultez l'exemple complet sur GitHub.

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

Pour obtenir l'ACL actuelle d'un objet, appelez la getObjectAcl méthode d'AmazonS3 en lui transmettant le nom du bucket et le nom de l'objet à interroger. Par exemplegetBucketAcl, cette méthode renvoie un AccessControlListobjet que vous pouvez utiliser pour examiner chaque subvention.

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); }

Consultez 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 à une ACL pour un objet, appelez la méthode d'AmazonS3. setObjectAcl Il faut un AccessControlListobjet contenant une liste de bénéficiaires et de niveaux d'accès pour le 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 fournir l'identifiant unique du bénéficiaire directement à l'aide de la classe Grantee, ou utiliser la EmailAddressGranteeclasse pour définir le bénéficiaire par e-mail, comme nous l'avons fait ici.

Consultez l'exemple complet sur GitHub.

En savoir plus