Pourquoi est-ce que je reçois un message d'erreur « 403 Forbidden » (Interdit) lorsque j'essaie de charger des fichiers dans Amazon S3 ?

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

J'essaie de charger des fichiers dans mon compartiment Amazon Simple Storage Service (Amazon S3) à l'aide de la console Amazon S3. Toutefois, je reçois l'erreur « 403 Forbidden » (Interdit) à la place.

Brève description

L'erreur « 403 Forbidden » (Interdit) peut se produire pour les raisons suivantes :

  • Les autorisations sont manquantes pour s3:PutObject pour ajouter un objet ou s3:PutObjectAcl pour modifier l'ACL de l'objet.
  • Vous n'avez pas l'autorisation pour utiliser une clé AWS Key Management Service (AWS KMS).
  • Il y a une instruction de refus explicite dans la politique de compartiment.
  • Amazon S3 Block Public Access est activé.
  • La liste de contrôle d'accès (ACL) du compartiment n'autorise pas l'utilisateur racine du compte AWS à écrire des objets.
  • Une politique de contrôle du service AWS Organizations n'autorise pas l'accès à Amazon S3.

Solution

Vérifiez vos autorisations pour s3:PutObject ou s3:PutObjectAcl.

Procédez comme suit :

  1. Ouvrez la console AWS Identity and Access Management (IAM).
  2. Sélectionnez l'identité utilisée pour accéder à la politique de compartiment, telle que Utilisateur ou Rôle.
  3. Sélectionnez le nom de l'identité IAM que vous utilisez pour accéder à la politique de compartiment.
  4. Dans l'onglet Autorisations, développez chaque politique pour afficher son document de politique JSON.
  5. Dans les documents de politique JSON, recherchez les politiques associées à l'accès Amazon S3. Ensuite, vérifiez que vous disposez des autorisations pour les actions s3:PutObject ou s3:PutObjectAcl sur le compartiment.

Demander l'autorisation d'utiliser une clé AWS KMS

Pour accéder à un compartiment S3 qui utilise le chiffrement par défaut avec une clé AWS KMS personnalisée, un administrateur de clé doit vous accorder une autorisation sur la politique de clé.

Pour charger un objet dans un compartiment chiffré, votre utilisateur ou votre rôle IAM doit disposer au minimum des autorisations AWS KMS pour kms:Encrypt et kms:GenerateDataKey.

Vérifier les instructions de refus explicites dans la politique de compartiment

Procédez comme suit :

  1. Ouvrez la console Amazon S3.
  2. Dans la liste des compartiments, ouvrez le compartiment sur lequel vous souhaitez charger des fichiers.
  3. Sélectionnez l'onglet Permissions (Autorisations).
  4. Sélectionnez Bucket policy (Politique de compartiment).
  5. Rechercher les instructions avec "Effect": "Deny" (effet : rejeter).
  6. Vérifiez que votre politique de compartiment inclut les paramètres de demande d'URI corrects pour s3:PutObject afin de répondre aux conditions spécifiques.

Important : Avant d'enregistrer une politique de compartiment avec "Effect": "Deny", veillez à vérifier les instructions qui refusent l'accès au compartiment S3. Si vous êtes bloqué, consultez J'ai accidentellement refusé à tout le monde l'accès à mon compartiment Amazon S3. Comment puis-je rétablir l'accès ?

L'exemple d'instruction suivant refuse explicitement l'accès à s3:PutObject sur awsdoc-example-bucket sauf si la demande de chargement inclut le chiffrement avec la clé AWS KMS arn:aws:kms:us-east-1:111122223333:key :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/*",
      "Condition": {
        "StringNotLikeIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
        }
      },
      "Principal": "*"
    }
  ]
}

Désactiver S3 Block Public Access

Si vous transmettez l'ACL publique dans une demande de chargement et que la fonctionnalité Block Public Access S3 est activée, désactivez-la avant de charger des fichiers.

Pour plus d'informations sur la configuration des paramètres Block Public Access S3 au niveau du compte, reportez-vous à Configuration des paramètres de Block Public Access pour votre compte. Pour configurer les paramètres au niveau du compartiment, reportez-vous à Configuration des paramètres Block Public Access pour vos compartiments S3.

Accorder à l'utilisateur racine l'autorisation d'écrire des objets

Configurez les autorisations ACL du compartiment pour accorder à l'utilisateur racine l'accès à l'écriture d'objets.

Supprimer des politiques de contrôle des services pour AWS Organizations

Si vous utilisez AWS Organizations, supprimez toutes les politiques de contrôle des services qui refusent explicitement les actions S3.