Pourquoi la console Amazon S3 affiche l'erreur Access Denied (Accès refusé) lors de la modification d'une stratégie de compartiment ?

Date de la dernière mise à jour : 27/04/2021

Je reçois toujours une erreur de type Accès refusé lorsque j'essaie de modifier la stratégie de mon compartiment Amazon Simple Storage Service (Amazon S3). Comment puis-je corriger ce problème ?

Brève description

Pour afficher une stratégie de compartiment à partir de la console Amazon S3, l'utilisateur ou le rôle AWS Identity and Access Management (IAM) que vous utilisez doit être autorisé à effectuer l'action s3:GetBucketPolicy. Pour modifier une stratégie de compartiment existante, votre identité IAM doit être autorisée à exécuter l'action s3:PutBucketPolicy.

Pour résoudre le problème Access Denied (Accès refusé), vérifiez que :

  • Votre identité IAM dispose d'autorisations pour s3:GetBucketPolicy et s3:PutBucketPolicy.
  • La stratégie de compartiment n’interdit pas à votre identité IAM d’exécuter l’action s3:GetBucketPolicy ou s3:PutBucketPolicy.
  • Votre modification de la stratégie de compartiment n'accorde pas l'accès public lorsque Amazon S3 Block Public Access est activé.
  • La politique de contrôle des services AWS Organizations autorise l'accès à Amazon S3.
  • Si la stratégie de compartiment refuse à tout le monde l'accès à S3:GetBucketPolicy, S3:PutBucketPolicy, ou à toutes les actions Amazon S3 (s3:*), supprimez-la.
    Remarque :
    si vous ne pouvez pas supprimer une stratégie de compartiment, essayez de la supprimer en tant qu'utilisateur racine du compte AWS.

Solution

Votre identité IAM est autorisée à exécuter les actions s3:GetBucketPolicy et s3:PutBucketPolicy

1.    Ouvrez la console IAM.

2.    Sélectionnez l'entité utilisée pour accéder à la stratégie de compartiment, telle que Utilisateur ou Rôle.

3.    Sélectionnez le nom d'utilisateur ou de rôle IAM que vous utilisez pour accéder à la stratégie de compartiment.

4.    Dans l'onglet Autorisations de l'utilisateur ou du rôle IAM que vous utilisez, développez chaque stratégie pour afficher son document de stratégie JSON.

5.    Dans les documents de stratégie JSON, recherchez les stratégies associées à l'accès Amazon S3. Ensuite, vérifiez que vous êtes autorisé à exécuter les actions s3:GetBucketPolicy et s3:PutBucketPolicy sur le compartiment.

Par exemple, cette stratégie IAM permet à l'utilisateur ou au rôle d'exécuter les actions S3:GetBucketPolicy et S3:PutBucketPolicy sur DOC-EXAMPLE-BUCKET (DOC-EXAMPLE-COMPARTIMENT) :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ModifyBucketPolicy",
      "Action": [
        "s3:GetBucketPolicy",
        "s3:PutBucketPolicy"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
    },
    {
      "Sid": "AccessS3Console",
      "Action": [
        "s3:GetBucketLocation",
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    }
  ]
}

Remarque : l'instruction « AccessS3Console » de l'exemple précédent de stratégie IAM accorde l'accès à la console Amazon S3 et n'est pas spécifique à la modification d'une stratégie de compartiment.

6.    Dans le document de stratégie JSON, recherchez également les instructions avec "Effect": "Deny". Ensuite, vérifiez que ces instructions n'interdisent pas à l'utilisateur ou au rôle IAM que vous utilisez d'accéder à l'action s3:GetBucketPolicy ou s3:PutBucketPolicy sur le compartiment.

7.    Si vous ne trouvez pas de stratégies qui vous accordent l'autorisation s3:GetBucketPolicy ou s3:PutBucketPolicy sur le compartiment, ajoutez une stratégie qui accorde à votre identité IAM ces autorisations. Si vous trouvez des stratégies qui refusent l'accès à S3:GetBucketPolicy ou S3:PutBucketPolicy sur le compartiment, supprimez ces instructions ou stratégies. Pour plus d'informations sur la modification de vos autorisations IAM, consultez Modification des autorisations d'un utilisateur IAM.

La stratégie de compartiment n'interdit pas à votre identité IAM d'exécuter l'action s3:GetBucketPolicy ou s3:PutBucketPolicy

Si vous ne pouvez toujours pas modifier la stratégie de compartiment après avoir confirmé vos autorisations IAM, vérifiez la stratégie à l'aide d'une autre identité IAM. Cette identité IAM doit posséder un accès au compartiment pour vérifier que la stratégie ne contient pas d'instructions qui bloquent votre accès.

Suivez les étapes ci-dessous en utilisant une identité IAM ayant accès à la stratégie de compartiment :

1.    Ouvrez la console Amazon S3.

2.    Dans la liste des compartiments, ouvrez le compartiment avec la stratégie de compartiment à modifier.

3.    Sélectionnez l'onglet Permissions (Autorisations).

4.    Sélectionnez Bucket policy (Stratégie de compartiment).

5.    Rechercher les instructions avec "Effect": "Deny".

6.    Modifiez la stratégie de compartiment pour mettre à jour les instructions "Effect": "Deny" qui refusent incorrectement l'accès à S3:GetBucketPolicy ou S3:PutBucketPolicy à l'identité IAM.

Votre modification de la stratégie de compartiment n'accorde pas l'accès public lorsque Amazon S3 Block Public Access est activé

Vérifiez la modification de la stratégie de compartiment pour voir si la modification accorde un accès public au compartiment. Vérifiez ensuite si Amazon S3 Block Public Access est activé sur le compartiment ou le compte. Si S3 Block Public Access est activé, vous obtenez une erreur Accès refusé lorsque vous essayez d'enregistrer une stratégie de compartiment qui accorde l'accès public.

La politique de contrôle des services AWS Organizations autorise l'accès à Amazon S3

Si vous utilisez AWS Organizations, vérifiez les politiques de contrôle des services pour les instructions qui refusent explicitement l'accès à Amazon S3. En particulier, vérifiez les politiques de contrôle des services pour les instructions refusant l'action S3:PutBucketPolicy .

Par exemple, la stratégie suivante refuse explicitement l'accès à toutes les actions Amazon S3 et entraîne une erreur Accès refusé.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": "*"
        }
    ]
}

Si la stratégie de compartiment refuse à tout le monde l'accès à S3:GetBucketPolicy, S3:PutBucketPolicy, ou à toutes les actions Amazon S3 (s3:*), supprimez-la

Si aucune identité IAM ne peut afficher ou modifier la stratégie de compartiment, l'utilisateur racine du compte AWS est toujours autorisé à supprimer la stratégie de compartiment existante. Une fois la stratégie existante supprimée par l'utilisateur racine, l’utilisateur ou le rôle IAM que vous utilisez peut créer une stratégie de compartiment.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?