Vérification de la propriété du compartiment avec la condition du propriétaire du compartiment - Amazon Simple Storage Service

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.

Vérification de la propriété du compartiment avec la condition du propriétaire du compartiment

La condition du propriétaire du compartiment Amazon S3 garantit que les compartiments que vous utilisez dans vos opérations S3 correspondent à vos attentes. Comptes AWS

La plupart des opérations S3 lisent ou écrivent dans des compartiments S3 spécifiques. Ces opérations incluent le chargement, la copie et le téléchargement d'objets, la récupération ou la modification de configurations de compartiments et la récupération ou la modification de configurations d'objets. Lorsque vous exécutez ces opérations, vous spécifiez le compartiment que vous souhaitez utiliser en incluant son nom avec la demande. Par exemple, pour récupérer un objet à partir de S3, vous effectuez une demande qui spécifie le nom d'un compartiment et la clé d'objet à extraire depuis ce compartiment.

Étant donné qu'Amazon S3 identifie les compartiments en fonction de leurs noms, une application qui utilise un nom de compartiment incorrect dans une demande peut effectuer par inadvertance des opérations sur un compartiment différent de ce qui était prévu. Pour éviter les interactions de compartiments involontaires dans des situations comme celle-ci, vous pouvez utiliser la condition propriétaire du compartiment. La condition propriétaire du compartiment vous permet de vérifier que le compartiment cible appartient au Compte AWS prévu, ce qui vous offre une garantie supplémentaire que vos opérations S3 ont les effets souhaités.

Quand utiliser la condition propriétaire du compartiment

Nous vous recommandons d'utiliser la condition propriétaire du compartiment chaque fois que vous exécutez une opération S3 prise en charge et que vous connaissez l'ID de compte du propriétaire du compartiment prévu. La condition propriétaire du compartiment est disponible pour toutes les opérations d'objet S3 et la plupart des opérations de compartiment S3. Pour obtenir la liste des opérations S3 ne prenant pas en charge la condition propriétaire du compartiment, veuillez consulter Limites et restrictions.

Pour voir les avantages de l'utilisation de la condition du propriétaire du bucket, imaginez le scénario suivant impliquant le AWS client Bea :

  1. Bea développe une application qui utilise Amazon S3. Pendant le développement, Bea utilise ses tests uniquement Compte AWS pour créer un bucket nommébea-data-test, et configure son application pour qu'elle y envoie des demandes. bea-data-test

  2. Bea déploie son application, mais oublie de reconfigurer l'application pour qu'elle utilise un compartiment dans son Compte AWS de production.

  3. En production, l'application de Bea effectue des demandes réussies à bea-data-test Cela entraîne l'écriture de données de production dans le compartiment du compte de test de Bea.

Bea peut se protéger contre les situations de ce genre en utilisant la condition propriétaire du compartiment. Avec l'état du propriétaire du bucket, Bea peut inclure l' Compte AWS identifiant du propriétaire attendu du bucket dans ses demandes. Amazon S3 vérifie ensuite l'ID de compte du propriétaire du compartiment avant de traiter chaque demande. Si le propriétaire du compartiment réel ne correspond pas au propriétaire du compartiment prévu, la demande échoue.

Si Bea utilise la condition propriétaire du compartiment, le scénario décrit précédemment n'entraînera pas l'écriture par inadvertance de l'application de Bea dans un compartiment du compte de test. Au lieu de cela, les demandes effectuées par l'application lors de l'étape 3 échoueront avec un message d'erreur Access Denied. En utilisant la condition propriétaire du compartiment, Bea élimine le risque d'interaction accidentelle avec des compartiments dans le mauvais Compte AWS.

Vérification d'un propriétaire du compartiment

Pour utiliser la condition propriétaire du compartiment, vous incluez à votre demande un paramètre qui spécifie le propriétaire du compartiment prévu. La plupart des opérations S3 impliquent seulement un compartiment unique et n'exigent que ce paramètre unique pour utiliser la condition propriétaire du compartiment. Pour les opérations CopyObject, ce premier paramètre spécifie le propriétaire prévu du compartiment de destination et vous incluez un second paramètre pour spécifier le propriétaire prévu du compartiment source.

Lorsque vous effectuez une demande qui inclut un paramètre de condition propriétaire du compartiment, S3 compare l'ID de compte du propriétaire du compartiment et le paramètre spécifié avant de traiter la demande. Si le paramètre correspond à l'ID de compte du propriétaire du compartiment, S3 traite la demande. Si le paramètre ne correspond pas à l'ID de compte du propriétaire du compartiment, la demande échoue avec un message d'erreur Access Denied.

Vous pouvez utiliser la condition du propriétaire du compartiment avec les AWS Command Line Interface (AWS CLI), AWS les SDK et les API REST Amazon S3. Lorsque vous utilisez la condition du propriétaire du compartiment avec les API REST AWS CLI et Amazon S3, utilisez les noms de paramètres suivants.

Méthode d'accès Paramètre pour les opérations non copiées Paramètre source de l'opération Copy Paramètre de destination de l'opération Copy
AWS CLI --expected-bucket-owner --expected-source-bucket-owner --expected-bucket-owner
API REST Amazon S3 En-tête x-amz-expected-bucket-owner En-tête x-amz-source-expected-bucket-owner En-tête x-amz-expected-bucket-owner

Les noms des paramètres requis pour utiliser la condition propriétaire du compartiment avec les kits AWS SDK varient en fonction de la langue. Pour déterminer les paramètres requis, consultez la documentation du kit SDK correspondant à la langue souhaitée. Vous trouverez la documentation du kit SDK dans Outils pour créer sur AWS.

Exemples

Les exemples suivants montrent comment implémenter la condition du propriétaire du compartiment dans Amazon S3 à l'aide du AWS CLI ou du AWS SDK for Java 2.x.

Exemple : Chargement d'un objet

L'exemple suivant charge un objet dans le compartiment S3 DOC-EXAMPLE-BUCKET1 à l'aide de la condition propriétaire du compartiment pour s'assurer que DOC-EXAMPLE-BUCKET1 appartient au Compte AWS 111122223333.

AWS CLI
aws s3api put-object \ --bucket DOC-EXAMPLE-BUCKET1 --key exampleobject --body example_file.txt \ --expected-bucket-owner 111122223333
AWS SDK for Java 2.x
public void putObjectExample() { S3Client s3Client = S3Client.create();; PutObjectRequest request = PutObjectRequest.builder() .bucket("DOC-EXAMPLE-BUCKET1") .key("exampleobject") .expectedBucketOwner("111122223333") .build(); Path path = Paths.get("example_file.txt"); s3Client.putObject(request, path); }

Exemple : Copie d'un objet

L'exemple suivant copie l'objet object1 à partir du compartiment S3 DOC-EXAMPLE-BUCKET1 vers le compartiment S3 DOC-EXAMPLE-BUCKET2. Il utilise la condition propriétaire du compartiment pour s'assurer que les compartiments appartiennent aux comptes prévus en fonction du tableau suivant.

Compartiment Propriétaire prévu
DOC-EXAMPLE-BUCKET1 111122223333
DOC-EXAMPLE-BUCKET2 444455556666
AWS CLI
aws s3api copy-object --copy-source DOC-EXAMPLE-BUCKET1/object1 \ --bucket DOC-EXAMPLE-BUCKET2 --key object1copy \ --expected-source-bucket-owner 111122223333 --expected-bucket-owner 444455556666
AWS SDK for Java 2.x
public void copyObjectExample() { S3Client s3Client = S3Client.create(); CopyObjectRequest request = CopyObjectRequest.builder() .copySource("DOC-EXAMPLE-BUCKET1/object1") .destinationBucket("DOC-EXAMPLE-BUCKET2") .destinationKey("object1copy") .expectedSourceBucketOwner("111122223333") .expectedBucketOwner("444455556666") .build(); s3Client.copyObject(request); }

Exemple : Récupération d'une stratégie de compartiment

L'exemple suivant récupère la stratégie d'accès pour le compartiment S3 DOC-EXAMPLE-BUCKET1 à l'aide de la condition propriétaire du compartiment pour s'assurer que DOC-EXAMPLE-BUCKET1 appartient au Compte AWS 111122223333.

AWS CLI
aws s3api get-bucket-policy --bucket DOC-EXAMPLE-BUCKET1 --expected-bucket-owner 111122223333
AWS SDK for Java 2.x
public void getBucketPolicyExample() { S3Client s3Client = S3Client.create(); GetBucketPolicyRequest request = GetBucketPolicyRequest.builder() .bucket("DOC-EXAMPLE-BUCKET1") .expectedBucketOwner("111122223333") .build(); try { GetBucketPolicyResponse response = s3Client.getBucketPolicy(request); } catch (S3Exception e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } }

Limites et restrictions

La condition propriétaire du compartiment Amazon S3 comporte les restrictions et limitations suivantes :

  • La valeur du paramètre de condition du propriétaire du compartiment doit être un Compte AWS ID (valeur numérique à 12 chiffres). Les principals de service ne sont pas pris en charge.

  • La condition de propriétaire du bucket n'est pas disponible pour CreateBucketou aucune des opérations incluses dans AWS S3 Control. ListBuckets Amazon S3 ignore tous les paramètres de condition propriétaire du compartiment inclus dans les demandes envoyées à ces opérations.

  • La condition propriétaire du compartiment vérifie uniquement que le le compartiment appartient au compte spécifié dans le paramètre de vérification. La condition propriétaire du compartiment ne vérifie pas la configuration du compartiment. Elle ne garantit pas non plus que la configuration du compartiment remplit des conditions spécifiques ou correspond à un état antérieur.