Pourquoi ne puis-je pas accéder à un dossier ou à un fichier spécifique dans mon compartiment Amazon S3 ?

Lecture de 6 minute(s)
0

Je ne peux pas accéder à un préfixe ou à un objet spécifique qui se trouve dans mon compartiment Amazon S3 (Simple Storage Service). Je peux toutefois accéder au reste des données du compartiment.

Brève description

Vérifiez les autorisations suivantes pour tous les paramètres qui vous interdisent l'accès au préfixe ou à l'objet :

  • Propriété du préfixe ou de l'objet
  • Restrictions liées à la politique du compartiment
  • Restrictions dans votre politique utilisateur IAM (Identity and Access Management) AWS
  • Autorisations relatives aux objets chiffrés par AWS Key Management Service (AWS KMS)

Notez également les conditions d'accès suivantes :

  • Si vous avez chiffré l'objet avec une clé AWS KMS, seul le compte AWS qui a chiffré l'objet peut la lire.
  • Si vous avez défini des limites d'autorisations et des politiques de session, les autorisations maximales du demandeur peuvent être affectées. L'accès aux objets peut également être affecté.
  • D'autres politiques, telles que les politiques de point de terminaison de VPC et les politiques de contrôle des services (SCP) peuvent spécifier des restrictions. Vérifiez donc ces politiques et mettez-les à jour en conséquence.
  • Vous pouvez également contrôler la propriété des objets chargés à l'aide d'Amazon S3 Object Ownership. Si vous définissez Object Ownership sur BucketOwnerPreferred, les comptes dotés de l'ACL prédéfinie bucket-owner-full-control peuvent écrire des objets qui sont transférés au propriétaire du compartiment.

Résolution

Propriété du préfixe ou de l'objet

Par défaut, lorsqu'un compte AWS charge un objet S3, le compte est propriétaire de cet objet. Cela est vrai même lorsqu'un autre compte est propriétaire du compartiment. Si d'autres comptes peuvent charger des objets dans votre compartiment, procédez comme suit pour obtenir des autorisations sur l'objet ou le préfixe auquel vous ne pouvez pas accéder :

  1. Pour obtenir l'identifiant canonique Amazon S3 pour votre compte, exécutez cette commande AWS CLI (Command Line Interface) :

    aws s3api list-buckets --query Owner.ID
  2. Obtenez l'identifiant canonique Amazon S3 du compte propriétaire de l'objet auquel vous ne pouvez pas accéder :

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. Si les identifiants canoniques ne correspondent pas, cela signifie que vous (le propriétaire du compartiment) n'êtes pas propriétaire de l'objet. Pour un objet individuel, le propriétaire de cet objet peut vous accorder le contrôle total à l'aide de la commande put-object-acl suivante :

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control

    Pour les objets contenus dans un préfixe, le propriétaire de l'objet doit recopier le préfixe et vous accorder le contrôle total des objets dans le cadre de l'opération. Par exemple, le propriétaire de l'objet peut exécuter cette commande ](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html)cp[ avec le paramètre --acl bucket-owner-full-control :

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/abc/ s3://DOC-EXAMPLE-BUCKET/abc/ --acl bucket-owner-full-control --recursive --storage-class STANDARD

    Conseil : vous pouvez exiger que les autres comptes vous accordent la propriété des objets qu'ils chargent dans votre compartiment à l'aide d'une politique de compartiment.

Restrictions liées à la politique du compartiment

  1. Ouvrez la console Amazon S3.

  2. Dans la liste des compartiments, ouvrez le compartiment contenant la politique de compartiment que vous souhaitez vérifier.

  3. Choisissez l'onglet Autorisations.

  4. Choisissez la politique du compartiment.

  5. Recherchez les instructions avec « Effect » : « Deny ». Passez ensuite en revue ces instructions pour rechercher les références au préfixe ou à l'objet auquel vous ne pouvez pas accéder. Par exemple, cette politique de compartiment refuse à tout le monde l'accès au préfixe abc/* dans DOC-EXAMPLE-BUCKET :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
        }
      ]
    }
  6. Modifiez la politique du compartiment pour mettre à jour ou supprimer toute instruction « Effect » : « Deny » qui vous refuse à tort l'accès au préfixe ou à l'objet.

Restrictions dans votre politique utilisateur IAM

  1. Ouvrez la console IAM.

  2. Depuis la console, ouvrez l'utilisateur ou le rôle IAM que vous utilisez pour accéder au préfixe ou à l'objet.

  3. Sous l'onglet Autorisations de l'utilisateur ou du rôle IAM, développez chaque politique pour afficher son document de politique JSON.

  4. Dans les documents de politique JSON, recherchez les politiques relatives à l'accès à Amazon S3. Ensuite, recherchez une instruction « Effect » : « Deny » qui vous bloque l'accès au préfixe ou à l'objet.

    Par exemple, la politique IAM suivante a une instruction « Effect » : « Deny » qui bloque l'accès de l'identité IAM au préfixe abc/* dans DOC-EXAMPLE-BUCKET. La politique a également une instruction « Effect » : « Allow » qui accorde l'accès à DOC-EXAMPLE-BUCKET. Bien que l'instruction « allow » s'applique à l'ensemble du compartiment, l'instruction de refus explicite empêche l'identité IAM d'accéder au préfixe abc/* :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
          ]
        },
        {
          "Sid": "StatementFullPermissionS3",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
  5. Modifiez la politique pour mettre à jour ou supprimer une instruction « Effect » : « Deny » qui vous refuse à tort l'accès au préfixe ou à l'objet.

Autorisations d'accès à un objet chiffré par AWS KMS

Si un objet est chiffré à l'aide d'une clé AWS KMS, vous devez disposer d'autorisations pour accéder à la fois à l'objet et à la clé. Vérifiez si vous ne pouvez pas accéder à l'objet parce que vous avez besoin d'autorisations pour accéder à une clé AWS KMS :

  1. Ouvrez la console Amazon S3 pour afficher les propriétés de l'un des objets auxquels vous ne pouvez pas accéder. Vérifiez les propriétés de chiffrement de l'objet.

  2. Si l'objet est chiffré à l'aide d'une clé AWS KMS personnalisée, consultez la stratégie de clé. Vérifiez que cette stratégie autorise votre identité IAM à effectuer les actions suivantes :

    "Action": ["kms:Decrypt"]
  3. Si votre identité IAM ne dispose pas des autorisations requises pour effectuer l'une de ces actions, modifiez la stratégie de clé pour accorder les autorisations manquantes.

**Important :**si votre identité IAM et votre clé AWS KMS appartiennent à des comptes différents, vérifiez que vous disposez des autorisations appropriées. Votre politique IAM et votre stratégie de clé doivent vous accorder des autorisations pour les actions AWS KMS requises.

Informations connexes

Pourquoi ne puis-je pas accéder à un objet qui a été chargé dans mon compartiment Amazon S3 par un autre compte AWS ?

Comment puis-je autoriser un utilisateur à accéder à un dossier spécifique dans mon compartiment Amazon S3 ?

Dois-je spécifier la clé AWS KMS lorsque je télécharge un objet chiffré par KMS depuis Amazon S3 ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois