Pourquoi les utilisateurs IAM d’un autre compte AWS reçoivent-ils des erreurs « Accès refusé » alors que ma politique relative aux compartiments leur accorde un accès complet à ce compte ?

Lecture de 9 minute(s)
0

La politique de mon compartiment Amazon Simple Storage Service (Amazon S3) accorde un accès complet à un autre compte AWS. Toutefois, lorsque les utilisateurs d’AWS Identity and Access Management (IAM) depuis ce compte essaient d’accéder à mon compartiment, ils reçoivent un message d’erreur « Accès refusé ».

Brève description

Si votre politique de compartiment autorise déjà l’accès à l’autre compte, les utilisateurs utilisant plusieurs comptes peuvent recevoir des erreurs « Accès refusé » pour les raisons suivantes :

  • La politique IAM de l’utilisateur n’autorise pas l’accès au compartiment.
  • L’objet est chiffré par AWS Key Management Service (AWS KMS) et l’utilisateur n’a pas accès à la clé AWS KMS.
  • Une instruction de rejet figurant dans la politique du compartiment ou la politique IAM bloque l’accès de l’utilisateur.
  • La politique relative au point de terminaison Amazon Virtual Private Cloud (Amazon VPC) bloque l’accès au compartiment.
  • La politique de contrôle des services d’AWS Organizations bloque l’accès au compartiment.
  • L’objet n’appartient pas au compte AWS propriétaire du compartiment.
  • Vous avez activé Le demandeur paye pour le compartiment.
  • Vous avez adopté une politique de session qui bloque l’accès au compartiment.

Résolution

**Remarque :**Si vous recevez des erreurs lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version la plus récente.

La politique IAM de l’utilisateur n’autorise pas l’accès au compartiment

Pour l’accès intercompte, assurez-vous d’accorder l’accès au compartiment dans la politique IAM du compte A et dans la politique du compartiment dans le compte B.

Suivez ces étapes pour vérifier la politique IAM de l’utilisateur dans le compte A :

1.   Ouvrez la console IAM.

2.    Depuis la console, ouvrez l’utilisateur ou le rôle IAM qui ne peut pas accéder au compartiment.

3.    Dans 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 portant le nom du compartiment. Vérifiez ensuite que ces politiques autorisent les actions S3 correctes sur le compartiment.

5.    Si l’utilisateur ou le rôle IAM n’autorise pas l’accès au compartiment, ajoutez une politique qui accorde les autorisations appropriées. Par exemple, la politique IAM suivante autorise un utilisateur à télécharger des objets (s3:GetObject) depuis DOC-EXAMPLE-BUCKET :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": "s3:GetObject",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

L’objet est chiffré par AWS KMS et l’utilisateur n’a pas accès à la clé AWS KMS

Si la politique IAM (compte A) et la politique du compartiment (compte B) autorisent l’accès intercompte, vérifiez que le compartiment est chiffré par défaut avec AWS KMS. Vous pouvez également vérifier les propriétés de l’objet pour le chiffrement AWS KMS. Si un objet est chiffré par une clé AWS KMS, l’utilisateur doit également disposer des autorisations nécessaires pour utiliser la clé.

Pour accorder à un utilisateur IAM l’autorisation de télécharger et de charger vers un compartiment lors de l’utilisation d’une clé KMS pour le chiffrement, procédez comme suit :

1.    Modifiez la stratégie de clé KMS pour ajouter une instruction similaire à la suivante :

**Remarque :**Saisissez l’Amazon Resource Name (ARN) de l’utilisateur IAM en tant que principal.

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

2.    Si la clé KMS appartient au même compte que l’utilisateur IAM, vous n’avez pas besoin de mettre à jour la stratégie de clé. Si la clé KMS appartient à un compte différent de celui de l’utilisateur IAM, vous devez également mettre à jour les autorisations de l’utilisateur IAM. Ajoutez une instruction de politique IAM similaire à la suivante :

**Remarque :**Entrez l’ARN de la clé KMS en tant que ressource.

{
  "Sid": "KMSAccess",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}

Une instruction de rejet figurant dans la politique du compartiment ou la politique IAM bloque l’accès de l’utilisateur

Vérifiez la politique du compartiment et les politiques IAM de l’utilisateur pour détecter toute instruction refusant explicitement à l’utilisateur l’accès au compartiment.

Pour vérifier la politique de compartiments, procédez comme suit :

1.    Ouvrez la console Amazon S3.

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

3.    Choisissez l’onglet Autorisations.

4.    Choisissez la politique relative aux compartiments.

5.    Recherchez les instructions avec « Effet » : « Rejeter ».

6.    Modifiez la politique du compartiment pour modifier ou supprimer tout « Effet » : Les instructions « Refuser » qui interdisent à l’utilisateur l’accès au compartiment.

Procédez comme suit pour vérifier les politiques IAM de l’utilisateur :

1.   Ouvrez la console IAM.

2.    Depuis la console, ouvrez l’utilisateur ou le rôle IAM qui ne peut pas accéder au compartiment.

3.    Dans l’onglet Autorisations de l’utilisateur ou du rôle IAM, développez chaque politique pour afficher les documents de politique JSON.

4.    Dans les documents de politique JSON, recherchez les politiques de compartiment S3 dont les instructions contiennent « Effet » : « Rejeter ».

5.    Modifiez les politiques d’autorisations IAM de l’utilisateur pour modifier ou supprimer « Effet » : Les instructions « Rejeter » qui interdisent à tort à l’utilisateur l’accès au compartiment.

La politique de point de terminaison d’un VPC bloque l’accès au compartiment

Si les utilisateurs accèdent au compartiment via une instance Amazon Elastic Compute Cloud (Amazon EC2) routée via un point de terminaison d’un VPC, vérifiez la politique relative aux points de terminaison du VPC. Vérifiez que la politique de point de terminaison d’un VPC inclut les autorisations appropriées pour accéder au compartiment S3.

Par exemple, la politique de point de terminaison d’un VPC suivante autorise l’accès à DOC-EXAMPLE-BUCKET :

{
  "Id": "Policy1234567890123",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1234567890123",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": "*"
    }
  ]
}

Avertissement : L’élément « Principal » : « \ * » permet à tous ceux qui utilisent le point de terminaison d’un VPC d’accéder au compartiment. Assurez-vous de limiter la portée de la valeur principal en fonction de votre cas d’utilisation.

La politique de contrôle des services d’AWS Organizations bloque l’accès au compartiment

Si le compte de l’utilisateur a activé AWS Organizations, vérifiez les politiques de contrôle des services pour vous assurer que l’accès à Amazon S3 est autorisé. Par exemple, la politique suivante refuse explicitement l’accès à Amazon S3 et entraîne une erreur « Accès refusé » :

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

Pour plus d’informations sur les fonctionnalités d’AWS Organizations, consultez la section Activer toutes les fonctionnalités de votre organisation.

L’objet n’appartient pas au compte AWS propriétaire du compartiment

Par défaut, un objet S3 appartient au compte AWS qui l’a chargé. Cela est vrai même lorsque le compartiment appartient à un autre compte. Les autorisations du compartiment ne s’appliquent pas automatiquement à un objet lorsque celui-ci appartient à un autre compte.

Pour résoudre les erreurs d’accès refusé liées à la propriété de l’objet, essayez les solutions suivantes :

$ aws s3api put-object-acl --bucket examplebucket --key keyname --acl bucket-owner-full-control

**Remarque :**Pour accéder à l’objet, le propriétaire de l’objet doit explicitement accorder l’accès au propriétaire du compartiment. Utilisez donc le compte du propriétaire de l’objet pour exécuter ces commandes.

Vous avez activé Requester Pays (Le demandeur paye) pour le compartiment

Si vous avez activé Requester Pays (Le demandeur paye) pour votre compartiment, les utilisateurs d’autres comptes doivent spécifier le paramètre request-payer lorsqu’ils envoient des demandes vers votre compartiment. Dans le cas contraire, ces utilisateurs reçoivent le message d’erreur « Accès refusé ».

Pour résoudre cette erreur, effectuez les actions suivantes :

  • Pour les requêtes DELETE, GET, HEAD, POST et PUT, incluez x-amz-request-payer : requester dans l’en-tête.
  • Pour les URL signées, incluez x-amz-request-payer=requester dans la demande.
  • Pour les commandes AWS CLI, incluez le paramètre --request-payer. Exemple :
$ aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester

Vous avez adopté une politique de session qui bloque l’accès au compartiment

Une politique de session est une politique intégrée que vous pouvez rapidement créer et transmettre au cours de la session lorsque vous assumez le rôle. Vous pouvez transmettre la politique de session pour étendre davantage les autorisations de la session de rôle. Les politiques de session sont des politiques avancées que vous transmettez en tant que paramètre lorsque vous créez par programmation une session temporaire pour un rôle ou un utilisateur fédéré. Les autorisations effectives de la session correspondent à l’intersection des politiques basées sur l’identité du rôle et de la politique de session. Par conséquent, assurez-vous que la politique de session que vous avez adoptée ne bloque pas l’accès au compartiment S3.

Informations connexes

Comment résoudre les erreurs 403 « Accès refusé » d’Amazon S3 ?

Pourquoi les utilisateurs utilisant plusieurs comptes reçoivent-ils des erreurs « Accès refusé » lorsqu’ils essaient d’accéder à mon compartiment chiffré par une clé AWS KMS personnalisée ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an