¿Cómo soluciono los errores de acceso denegado 403 de mi bucket de Simple Storage Service (Amazon S3) en el que todos los recursos proceden de la misma cuenta de AWS?

Última actualización: 18/04/2022

Estoy intentando acceder a mi bucket de Amazon Simple Storage Service (Amazon S3). Todos los recursos relevantes proceden de la misma cuenta de AWS. Sin embargo, recibo el error “403 Access Denied” (Acceso denegado 403).

Descripción corta

Cuando realiza una solicitud prohibida a su bucket de Simple Storage Service (Amazon S3), el servicio devuelve un error “403 Access Denied” (Acceso denegado 403). Para solucionar manualmente los errores de acceso denegado 403, consulte ¿Cómo soluciono los errores de acceso denegado 403 de Simple Storage Service (Amazon S3)?

También puede utilizar el runbook AWSSupport-Troubleshoots3AccessSameAccount de AWS Systems Manager para diagnosticar problemas de acceso denegado desde su bucket de S3. El runbook evalúa el nivel de acceso que se concede al solicitante en su recurso de S3 para todos los recursos relevantes de la misma cuenta de AWS. Esto incluye políticas de acceso, usuarios y recursos que están asociadas al recurso de S3 y al usuario o rol de AWS Identity and Access Management (IAM) que se especifica en los parámetros de entrada.

Nota: AWSSupport-Troubleshoots3AccessSameAccount no evalúa los permisos para los recursos multicuenta. Además, el solicitante debe estar en la misma cuenta de AWS que el bucket u objeto de S3.

Resolución

Pasos requeridos

Siga estos pasos para ejecutar el runbook AWSSupport-Troubleshoots3AccessSameAccount desde la consola de Systems Manager:

1.    Abra la consola de Systems Manager.

2.    En el panel de navegación, seleccione Automation (Automatización).

3.    Elija Execute automation (Ejecutar automatización).

4.    En Choose document (Elegir documento), elija la pestaña Owned by Amazon (Propiedad de Amazon).

5.    En la barra de búsqueda de documentos de automatización, ingrese AWSSupport-Troubleshoots3AccessSameAccount y, a continuación, presione Intro.

6.    Seleccione AWSSupport-TroubleshootS3AccessSameAccount.

7.    Elija Execute automation (Ejecutar automatización).

8.    Elija Simple execution (Ejecución simple).

9.    En S3ResourceArn, ingrese el ARN del bucket u objeto de S3 para el que desea solucionar el problema. Por ejemplo, para probar la carga o descarga de un objeto:

arn:aws:s3:::bucket_name/key_name

10.    En S3Action, elija la acción de S3 para la que desea que el runbook evalúe el contexto de acceso.

11.    En RequesterARN, especifique el usuario de IAM o el ARN de rol para el que desea encontrar el nivel de acceso en el recurso de S3 específico. Por ejemplo:

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

12.    Seleccione Execute (Ejecutar).

Utilice el estado Execution (Ejecución) para realizar un seguimiento del progreso del documento. Una vez que el estado cambie a Success (Realizado correctamente), revise los resultados que aparecen en la sección Outputs (Resultados). Los resultados incluyen códigos de error para cada objeto que se evalúa.

Nota: para revisar el resultado de un paso individual en la evaluación, elija el Step ID (ID de paso) relevante en Executed steps (Pasos ejecutados).

Pasos opcionales

Los siguientes pasos son opcionales.

Para AutomationAssumeRole, puede seleccionar un rol de IAM para que Systems Manager asuma que envía solicitudes a su bucket. Si deja este campo en blanco, Systems Manager utilizará la identidad de IAM que está utilizando para configurar el documento. Para obtener más información, consulte la sección Permisos de IAM requeridos para AutomationAssumeRole.

Importante: la política de confianza del rol de IAM que seleccione debe permitir que Systems Manager Automation asuma la función. Además, el rol de IAM debe tener permiso para ejecutar el runbook AWSSupport-Troubleshoots3AccessSameAccount.

Si el ARN de IAM es un rol y desea proporcionar un nombre de sesión específico, en RequesterRoleSessionName, especifique el nombre de la sesión.

Si el objeto tiene varias versiones, en S3ObjectVersionId, especifique el VersionId del objeto. Este parámetro le permite especificar la versión del objeto para el que desea evaluar el contexto de acceso.

Si es relevante para la acción, especifique el ARN clave de KMS para KmsKeyArn. Por ejemplo, para probar la descarga de un objeto que está cifrado con una clave de KMS.

Para VpcEndpointId, puede especificar el ID de punto de conexión de nube virtual privada de Amazon (Amazon VPC) relacionado con la evaluación de acceso. Las políticas de bucket de Simple Storage Service (Amazon S3) pueden controlar el acceso a los buckets desde puntos de conexión de Amazon VPC específicos.

En ContextKeyList, puede especificar la lista de claves de contexto de condición y los valores correspondientes relacionados con la evaluación de políticas. Por ejemplo, una denegación explícita para un objeto PutObject en su 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”}

Si desea que el runbook compare la entrada con una política de control de servicios (SCP) específica de AWS Organizations, en SCPPolicy, especifique la SCP. Elimine las líneas, tabulaciones o espacios en blanco nuevos al ingresar un valor.

Nota: si ejecuta el runbook desde la cuenta de administración de la organización, el paso anterior no es necesario.

En Tags (Etiquetas), puede etiquetar sus automatizaciones para facilitar la clasificación.

Para el comando de la CLI de AWS y el enlace de ejecución compartible, el runbook proporciona un ejemplo de comando de AWS Command Line Interface (AWS CLI) para Linux, Unix y macOS X. El runbook también proporciona un enlace de ejecución compartible.

Permisos de IAM requeridos para AutomationAssumeRole

El parámetro AutomationAssumeRole requiere ciertas acciones para usar el runbook.

El siguiente ejemplo de política incluye las acciones necesarias para el rol de automatización:

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

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?