Como soluciono erros 403 de acesso negado do meu bucket do Amazon S3 em que todos os recursos são da mesma conta da AWS?

Data da última atualização: 18/04/2022

Estou tentando acessar meu bucket do Amazon Simple Storage Service (Amazon S3). Todos os recursos relevantes são da mesma conta da AWS. No entanto, estou recebendo um erro “403 Acesso negado”.

Breve descrição

Quando você executa uma solicitação proibida para o bucket do Amazon S3, o serviço retorna um erro “403 Acesso negado”. Para solucionar manualmente erros 403 de acesso negado, consulte Como soluciono erros 403 de acesso negado do Amazon S3?

Você também pode usar o runbook AWSSupport-TroubleshootS3AccessSameAccount do AWS Systems Manager para ajudar a diagnosticar problemas de acesso negado do bucket do S3. O runbook avalia o nível de acesso concedido ao solicitante no seu recurso do S3 para todos os recursos relevantes da mesma conta da AWS. Isso inclui políticas baseadas em acesso, usuário e recursos associadas ao recurso do S3 e ao usuário ou função do AWS Identity and Access Management (IAM) especificado nos parâmetros de entrada.

Observação: o AWSSupport-TroubleshootS3AccessSameAccount não avalia permissões para recursos entre contas. Além disso, o solicitante deve estar na mesma conta da AWS que o bucket ou objeto do S3.

Resolução

Etapas necessárias

Siga estas etapas para executar o runbook AWSSupport-TroubleshootS3AccessSameAccount no console do Systems Manager:

1.    Abra o console do Systems Manager.

2.    No painel de navegação, escolha Automation (Automação).

3.    Escolha Execute automation (Executar automação).

4.    Em Escolher documento (Choose document), escolha a guia Owned by Amazon (Propriedade da Amazon).

5.    Na barra de pesquisa de documentos de automação, insira AWSSupport-TroubleshootS3AccessSameAccount e pressione Enter.

6.    Selecione AWSSupport-TroubleshootS3AccessSameAccount.

7.    Escolha Execute automation (Executar automação).

8.    Escolha Simple execution (Execução simples).

9.    Para S3ResourceArn, insira o ARN do bucket ou objeto do S3 para o qual você deseja solucionar problemas. Por exemplo, para testar um upload ou download de um objeto:

arn:aws:s3:::bucket_name/key_name

10.    Para S3Action, escolha a ação do S3 para a qual você deseja que o runbook avalie o contexto de acesso.

11.    Para RequesterArn, insira o ARN do usuário ou da função do IAM para o qual você deseja encontrar o nível de acesso no recurso específico do S3. Por exemplo:

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

12.    Escolha Execute (Executar).

Use o status de Execution (Execução) para acompanhar o progresso do documento. Depois que o status mudar para Success (Sucesso), revise os resultados listados na seção Outputs (Saídas). Os resultados incluem códigos de erro para cada objeto avaliado.

Observação: para revisar o resultado de uma etapa individual na avaliação, escolha Step ID (ID da etapa) relevante em Executed steps (Etapas executadas).

Etapas opcionais

As etapas a seguir são opcionais.

Para AutomationAssumeRole, você pode selecionar uma função do IAM para o Systems Manager assumir para enviar solicitações ao seu bucket. Se você deixar esse campo em branco, o Systems Manager usará a identidade do IAM que você está usando para configurar o documento. Para obter mais informações, consulte a seção Permissões do IAM necessárias para AutomationAssumeRole.

Importante: a política de confiança da função do IAM selecionada deve permitir que o Systems Manager Automation assuma a função. Além disso, a função do IAM deve ter permissão para executar o runbook AWSSupport-TroubleshootS3AccessSameAccount.

Se o ARN do IAM for uma função e você quiser fornecer um nome de sessão específico, para RequesterRoleSessionName, insira o nome da sessão.

Se o objeto tiver várias versões, para S3ObjectVersionId, insira o VersionId do objeto. Esse parâmetro permite especificar a versão do objeto para a qual você deseja avaliar o contexto de acesso.

Se for relevante para a ação, insira o ARN da chave do KMS para KmsKeyArn. Por exemplo, para testar o download de um objeto criptografado com uma chave KMS.

Para VpcEndpointId, você pode inserir o ID do endpoint da Amazon Virtual Private Cloud (Amazon VPC) relacionado à avaliação de acesso. As políticas de bucket do Amazon S3 podem controlar o acesso a buckets de endpoints específicos da Amazon VPC.

Para ContextKeyList, você pode inserir a lista de chaves de contexto de condição e os valores correspondentes relacionados à avaliação da política. Por exemplo, uma negação explícita para um PutObject na sua política de bucket:

{"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”}

Se quiser que o runbook compare a entrada com uma política de controle de serviço (SCP) específica do AWS Organizations, para SCPPolicy, insira o SCP. Remova todas as novas linhas, guias ou espaços em branco ao inserir um valor.

Observação: se você executar o runbook a partir da conta de gerenciamento da Organização, a etapa anterior não será necessária.

Para Tags (Etiquetas), você pode marcar suas automações para ajudar na categorização.

Para o comando da AWS CLI e o link de execução compartilhável, o runbook fornece um exemplo de comando da AWS Command Line Interface (AWS CLI) para Linux, Unix e macOS X. O runbook também fornece um link de execução compartilhável.

Permissões do IAM necessárias para AutomationAssumeRole

O parâmetro AutomationAssumeRole requer certas ações para usar o runbook.

O exemplo de política a seguir inclui as ações necessárias para a função de automação:

}
  "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"
           }
        ]
     }

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?