Comment résoudre les erreurs 403 Accès refusé depuis mon compartiment Amazon S3 où toutes les ressources proviennent du même compte AWS ?

Lecture de 5 minute(s)
0

J’essaie d’accéder à mon compartiment Amazon Simple Storage Service (Amazon S3). Toutes les ressources pertinentes proviennent du même compte AWS. Cependant, je reçois le message d'erreur « 403 Accès refusé ».

Brève description

Lorsque vous effectuez une requête interdite à votre compartiment Amazon S3, le service renvoie un message d’erreur « 403 Accès refusé ». Pour résoudre manuellement les erreurs 403 Accès refusé, consultez Comment résoudre les erreurs 403 Accès refusé à partir d’Amazon S3 ?

Vous pouvez également utiliser le runbook AWSSupport-TroubleshootS3AccessSameAccount d’AWS Systems Manager pour vous aider à diagnostiquer les problèmes d’accès refusé depuis votre compartiment S3. Le runbook évalue le niveau d’accès accordé au demandeur sur votre ressource S3 pour toutes les ressources pertinentes du même compte AWS. Cela inclut les stratégies basées sur l’accès, l’utilisateur et les ressources associées à la ressource Amazon S3. Il inclut également l'utilisateur ou le rôle AWS Identity and Access Management (IAM) spécifié dans les paramètres d'entrée.

**Remarque :**L'AWSSupport-TroubleshootS3AccessSameAccount n'évalue pas les autorisations pour les ressources inter-comptes. De plus, le demandeur doit disposer du même compte AWS que le compartiment ou l’objet S3.

Résolution

Étapes requises

Suivez ces étapes pour exécuter le runbook AWSSupport-TroubleshootS3AccessSameAccount à partir de la console Systems Manager :

1.    Ouvrez la console Systems Manager.

2.    Dans le volet de navigation, choisissez Automatisation.

3.    Choisissez Exécuter l’automatisation.

4.    Sous Choisir un document, sélectionnez l’onglet Propriété d’Amazon.

5.    Dans la barre de recherche de documents d’automatisation, choisissez le filtre Préfixe de nom de document dans la liste déroulante. Choisissez ensuite Égal à dans la liste déroulante et saisissez TroubleshootS3AccessSameAccount. Appuyez ensuite sur Entrée.

6.    Sélectionnez AWSSupport-TroubleshootS3AccessSameAccount.

7.    Choisissez Suivant.

8.    Sélectionnez Exécution simple.

9.    Pour S3ResourceArn, entrez l’ARN du compartiment ou de l’objet S3 que vous souhaitez dépanner. Par exemple, pour tester le chargement ou le téléchargement d’un objet.

arn:aws:s3:::bucket_name/key_name

10.    Pour S3Action, choisissez l'action S3 que vous souhaitez que le runbook évalue.

11.    Pour RequesterArn, entrez utilisateur IAM ou du rôle ARN pour lequel vous souhaitez rechercher le niveau d’accès sur la ressource S3 spécifique :

arn:aws:iam::123456789012:user/user_name or arn:aws:iam::123456789012:role/example-rol

12.    Choisissez Exécuter.

Utilisez l’état Exécution pour suivre la progression du document. Une fois que l’état est passé à Succès, passez en revue les résultats répertoriés dans la section Sorties. Les résultats incluent des codes d’erreur pour chaque objet évalué.
Remarque : Pour examiner le résultat d'une étape individuelle de l'évaluation, choisissez l'ID d'étape approprié sous Étapes exécutées.

Étapes facultatives

Les étapes suivantes sont facultatives.

  • Pour AutomationAssumeRole, vous pouvez sélectionner un rôle IAM que le Systems Manager assumera pour envoyer des requêtes à votre compartiment. Si vous laissez ce champ vide, la console Systems Manager utilise l’identité IAM que vous utilisez pour configurer le document. Pour plus d’informations, consultez la section Autorisations IAM requises pour AutomationAssumeRole.
    Important : La politique de confiance du rôle IAM que vous sélectionnez doit autoriser la Systems Manager Automation à traiter le rôle par défaut. Le rôle IAM doit également être autorisé à exécuter le runbook AWSSupport-TroubleshootS3AccessSameAccount.

  • Si l’ARN IAM est un rôle et que vous souhaitez fournir un nom de session spécifique, entrez le nom de la session dans RequesterRoleSessionName.

  • Si l’objet possède plusieurs versions, alors pour S3ObjectVersionId, entrez le VersionId de l’objet. Ce paramètre vous permet de spécifier la version de l’objet pour lequel vous souhaitez évaluer le contexte d’accès.

  • Si cela est pertinent pour l’action, entrez l’ARN de clé KMS pour KmsKeyArn. Par exemple, pour tester le téléchargement d’un objet chiffré à l’aide d’une clé KMS.

  • Pour VpcEndpointId, vous pouvez saisir l’ID de point de terminaison Amazon Virtual Private Cloud (Amazon VPC) associé à l’évaluation de l’accès. Les politiques relatives aux compartiments Amazon S3 peuvent contrôler l’accès aux compartiments à partir de points de terminaison Amazon VPC spécifiques.

  • Pour ContextKeyList, vous pouvez entrer la liste des clés de contexte de condition et les valeurs correspondantes relatives à l’évaluation de la politique. Par exemple, un refus explicite pour un objet PutObject dans votre politique de compartiment :

    {"ContextKeyName":"s3:x-amz-server-side-encryption-aws-kms-key-id","ContextKeyValues':["arn:aws:kms:us-east-1:123456789012:key/abc12345-b1e9-45a3-aa90-39ec93dd9b82'],"ContextKeyType":"string'}
  • Si vous souhaitez que le runbook compare l’entrée avec une Politique de contrôle des services (SCP) spécifique d’AWS Organizations, saisissez la SCP pour SCPPolicy. Supprimez les retours à la ligne, les tabulations ou les espaces blancs lorsque vous saisissez une valeur. Si vous exécutez le runbook à partir du Compte de gestion d’organisation, cette étape n’est pas nécessaire.

  • Pour les Balises, vous pouvez étiqueter vos automatisations pour vous aider à les classer.

  • Pour la commande AWS CLI et le lien d'exécution partageable, le runbook fournit un exemple d’Interface de la ligne de commande AWS (AWS CLI) pour Linux, Unix et macOS. Le runbook fournit également un lien partageable.

Autorisations IAM requises pour AutomationAssumeRole

Le paramètre AutomationAssumeRole nécessite certaines actions pour utiliser le runbook.

L’exemple de politique suivant inclut les actions requises pour le rôle d’automatisation :

{  
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "iam:SimulateCustomPolicy",
        "iam:GetUser",
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListAttachedUserPolicies",
        "iam:ListUserPolicies",
        "iam:GetUserPolicy",
        "iam:ListGroupsForUser",
        "iam:ListGroupPolicies",
        "iam:GetGroupPolicy",
        "iam:ListAttachedGroupPolicies",
        "iam:GetRole",
        "iam:GetRolePolicy",
        "iam:ListAttachedRolePolicies",
        "iam:ListRolePolicies"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetObjectAcl",
        "s3:GetObjectVersionAcl",
        "s3:GetObject",
        "s3:GetObjectVersion"
      ],
      "Resource": "arn:aws:s3:::bucket_name/destination-prefix",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetBucketPolicy",
        "s3:GetBucketAcl",
        "s3:ListBucket",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation",
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::bucket_name",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ec2:DescribeVpcEndpoints"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "kms:GetKeyPolicy"
      ],
      "Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "Effect": "Allow"
    },
    {
      "Action": [
        "organizations:ListPolicies",
        "organizations:DescribePolicy"
      ],
      "Resource": "arn:aws:organizations::aws:policy/service_control_policy/*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:GetAutomationExecution",
        "ssm:DescribeAutomationExecutions"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": "ssm:StartAutomationExecution",
      "Resource": "arn:aws:ssm:*:*:automation-definition/AWSSupport-TroubleshootS3AccessSameAccount:*",
      "Effect": "Allow",
      "Sid": "StartAutomationExecution"
    },
    {
      "Action": "access-analyzer:ValidatePolicy",
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}