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

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

J'essaie d'accéder à mon compartiment Amazon Simple Storage Service (Amazon S3). Toutes les ressources pertinentes proviennent du même compte AWS. Cependant, j'obtiens une erreur « 403 Accès refusé ».

Brève description

Lorsque vous effectuez une requête interdite à votre compartiment Amazon S3, le service renvoie une 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é à partir de 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 politiques basées sur l'accès, l'utilisateur et les ressources associées à la ressource S3 et à l'utilisateur ou au rôle AWS Identity and Access Management (IAM) spécifié dans les paramètres d'entrée.

Remarque : Le compte AWSSupport-TroubleshootS3AccessSameAccount n'évalue pas les autorisations pour les ressources entre comptes. En outre, le demandeur doit être dans le même compte AWS que le compartiment ou l'objet S3.

Solution

Étapes requises

Procédez comme suit pour exécuter le runbook AWSSupport-TroubleshootS3AccessSameAccount à partir de la console Systems Manager :

1.    Ouvrez la console Systems Manager.

2.    Dans le panneau de navigation, choisissez Automatisation.

3.    Choisissez Exécuter l'automatisation.

4.    Sous Choisir un document, choisissez l'onglet Propriété d'Amazon.

5.    Dans la barre de recherche du document d'automatisation, saisissez AWSSupport-TroubleshootS3AccessSameAccount, puis appuyez sur Entrée.

6.    Sélectionnez AWSSupport-TroubleshootS3AccessSameAccount.

7.    Choisissez Exécuter l'automatisation.

8.    Sélectionnez Exécution simple.

9.    Pour S3ResourceArn, entrez l'ARN du compartiment ou de l'objet S3 à 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 pour laquelle vous souhaitez que le runbook évalue le contexte d'accès.

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

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

12.    Choisissez Exécuter.

Utilisez l'état Exécution pour suivre la progression du document. Une fois que l'état est passé à Success, passez en revue les résultats répertoriés dans la section Outputs. Les résultats incluent des codes d'erreur pour chaque objet évalué.

Remarque : pour revoir le résultat d'une étape individuelle de l'évaluation, sélectionnez 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 assumé par Systems Manager pour envoyer des requêtes à votre compartiment. Si vous laissez ce champ vide, Systems Manager utilise l'identité IAM que vous utilisez pour configurer le document. Pour plus d'informations, reportez-vous à la section Autorisations IAM requises pour AutomationAssumeRole.

Important : la politique d'approbation du rôle IAM que vous sélectionnez doit autoriser Systems Manager Automation à assumer le rôle. En outre, le rôle IAM doit ê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, saisissez le nom de la session dans RequestRoleSessionName.

Si l'objet possède plusieurs versions, saisissez le VersionId de l'objet pour S3ObjectVersionId. 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, saisissez l'ARN de la 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 entrer l'ID de point de terminaison Amazon Virtual Private Cloud (Amazon VPC) associé à l'évaluation de l'accès. Les politiques de compartiment 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 liées à 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 de service (SCP) spécifique d'AWS Organizations, saisissez le SCP pour SCPPolicy. Supprimez les retours à la ligne, tabulations ou espaces blancs lorsque vous saisissez une valeur.

Remarque : Si vous exécutez le runbook à partir du compte de gestion Organization, l'étape précédente n'est pas nécessaire.

Pour Tags, vous pouvez étiqueter vos automatisations pour vous aider à les catégoriser.

Pour la commande AWS CLI et le lien d'exécution partageable, le runbook fournit un exemple de commande AWS Command Line Interface (AWS CLI) pour Linux, Unix et macOS X. Le runbook fournit également un lien d'exécution 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"
           }
        ]
     }

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


Avez-vous besoin d'aide pour une question technique ou de facturation ?