Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
¿Cómo puedo solucionar los errores 403 Access Denied de Amazon S3?
Mis usuarios están intentando acceder a los objetos de mi bucket de Amazon Simple Storage Service (Amazon S3), pero Amazon S3 devuelve el error 403 Access Denied.
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Troubleshooting errors for the AWS CLI (Solución de problemas de la AWS CLI). Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Utilización del documento de Automatización de AWS Systems Manager
Para ayudarte a determinar los problemas al leer objetos de un bucket de S3 público específico, utiliza el documento de automatización AWSSupport-TroubleshootS3PublicRead de AWS Systems Manager.
Comprobación de la configuración de la propiedad del bucket y el objeto
En el caso de los errores AccessDenied desde solicitudes GetObject o HeadObject, comprueba si el objeto y el bucket tienen el mismo propietario. Además, comprueba si el propietario del bucket tiene permisos de lectura o de control total de la lista de control de acceso (ACL).
Nota: Al crear un nuevo bucket, las ACL se desactivan de forma predeterminada. Se recomienda utilizar las políticas de AWS Identity and Access Management (IAM) en lugar de las ACL para controlar el acceso a los recursos de S3.
Confirmación de la cuenta propietaria de los objetos
De forma predeterminada, la cuenta de AWS propietaria del bucket en el que se almacena el objeto también es propietaria del objeto. Si otras cuentas pueden subir objetos a tu bucket, comprueba los permisos de los objetos a los que los usuarios no pueden acceder.
Para comprobar si el bucket y el objeto tienen el mismo propietario, sigue estos pasos:
-
Ejecuta el comando list-buckets de la AWS CLI para obtener el ID canónico de Amazon S3 de tu cuenta:
aws s3api list-buckets --query "Owner.ID"
-
Ejecuta el comando list-objects para obtener el ID canónico de Amazon S3 de la cuenta propietaria del objeto al que los usuarios no pueden acceder:
aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix exampleprefix
Nota: Sustituye DOC-EXAMPLE-BUCKET por el nombre del bucket y exampleprefix por el valor del prefijo. Puedes usar el comando list-objects para comprobar varios objetos al mismo tiempo.
-
Si los ID canónicos no coinciden, significa que no eres el propietario del objeto. El propietario del objeto puede ejecutar el comando put-object-acl para concederte el control total del objeto:
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key exampleobject.jpg --acl bucket-owner-full-control
Nota: Sustituye DOC-EXAMPLE-BUCKET por el nombre del bucket que contiene los objetos y exampleobject.jpg por el nombre de la clave.
-
Una vez que el propietario del objeto cambie la ACL del objeto a bucket-owner-full-control, el propietario del bucket podrá acceder al objeto. Para cambiar también el propietario del objeto a la cuenta del bucket, ejecuta el comando cp desde la cuenta del bucket para copiar el objeto sobre sí mismo.
Creación de un rol de IAM con permisos para el bucket
Si el rol de IAM y el propietario del bucket pertenecen a la misma cuenta, el rol de IAM o el bucket deben tener permisos. No necesitas permisos en el rol de IAM y en el bucket.
Para añadir permisos en diferentes cuentas, crea un rol de IAM en tu cuenta con permisos para tu bucket. A continuación, concede a otra cuenta el permiso para asumir el rol de IAM. Para obtener más información, consulta Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM.
Comprobación de la política de bucket o las políticas de usuario de IAM
Revisa la política de bucket o las políticas de usuario de IAM asociadas para ver si hay instrucciones que pueda denegar el acceso. Comprueba que las solicitudes a tu bucket cumplan las condiciones de la política de bucket o de las políticas de IAM. Comprueba si hay instrucciones Deny incorrectas, acciones que faltan o errores tipográficos en una política.
Condiciones de la instrucción Deny
Comprueba las instrucciones Deny para ver las condiciones que bloquean el acceso en función de lo siguiente:
- Autenticación multifactor (MFA)
- Claves de cifrado
- Dirección IP específica
- Nubes virtuales privada (VPC) o puntos de enlace de VPC específicos
- Usuarios o roles de IAM específicos
Nota: Si necesita MFA y los usuarios utilizan la AWS CLI para enviar solicitudes, asegúrate de que los usuarios configuren la AWS CLI para usar MFA.
Por ejemplo, en la siguiente política de bucket, Statement1 permite el acceso público para descargar objetos (s3:GetObject) de DOC-EXAMPLE-BUCKET. Sin embargo, Statement2 niega explícitamente a todos el acceso para descargar objetos desde DOC-EXAMPLE-BUCKET, a menos que la solicitud provenga del punto de enlace de VPC vpce-1a2b3c4d. Como las instrucciones Deny tienen prioridad sobre las instrucciones Allow, se niega el acceso a los usuarios que intenten descargar objetos desde fuera de vpce-1a2b3c4d.
{ "Id": "Policy1234567890123", "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": "*" }, { "Sid": "Statement2", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringNotEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } }, "Principal": "*" } ] }
Política de bucket o políticas de IAM
Comprueba si la política de bucket o las políticas de IAM permiten las acciones de Amazon S3 que tus usuarios tienen que realizar. Por ejemplo, la siguiente política de bucket no incluye el permiso para la acción s3:PutObjectAcl:
{ "Id": "Policy1234567890123", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567890123", "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/Dave" ] } } ] }
Si el usuario de IAM intenta modificar la ACL de un objeto, el usuario recibe un error Access Denied.
Otros errores de políticas
Comprueba si hay espacios adicionales, un ARN incorrecto u otros errores tipográficos en la política de buckets o en las políticas de usuario de IAM.
Si una política de IAM tiene un espacio adicional en el ARN, el ARN se evalúa incorrectamente y el usuario recibe un error Access Denied. Por ejemplo, una política de IAM que tenga un espacio adicional en el ARN: arn:aws:s3::: DOC-EXAMPLE-BUCKET/* se evalúa como arn:aws:s3:::%20DOC-EXAMPLE-BUCKET/.
Confirmación de si los límites de los permisos de IAM permiten el acceso a Amazon S3
Confirma que los límites de los permisos de IAM establecidos en las entidades de IAM permitan el acceso a Amazon S3.
Comprobación de la configuración de Bloqueo del acceso público de Amazon S3 para el bucket
Si recibes errores Access Denied en las solicitudes de lectura pública permitidas, comprueba la configuración de Bloqueo de acceso público de Amazon S3 del bucket en la cuenta y el bucket. Estas configuraciones pueden anular los permisos que permiten el acceso de lectura público.
Revisión de las credenciales de usuario
Revisa las credenciales que tus usuarios han configurado para acceder a Amazon S3. Los usuarios deben configurar los SDK de AWS y la AWS CLI para usar las credenciales de la identidad de IAM que tiene acceso a tu bucket.
En la AWS CLI, ejecuta el comando configure para comprobar las credenciales:
aws configure list
Si los usuarios utilizan una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para acceder a tu bucket, comprueba que la instancia utilice el rol correcto. Conéctate a la instancia y, a continuación, ejecuta el comando get-caller-identity:
aws sts get-caller-identity
Revisión de las credenciales de seguridad temporales
Si se muestra a los usuarios errores Access Denied procedentes de credenciales de seguridad temporales que ha concedido AWS Security Token Service (AWS STS), revisa la política de sesión asociada. Cuando un administrador usa la llamada a la API AssumeRole o el comando assume-role para crear credenciales de seguridad temporales, el administrador puede aprobar políticas específicas de la sesión.
Para encontrar las políticas de sesión asociadas, busca eventos AssumeRole en el historial de eventos de AWS CloudTrail dentro del mismo periodo de tiempo que las solicitudes de acceso con error. A continuación, revisa el campo requestParameters en los registros de CloudTrail para ver si hay parámetros policy o policyArns. Confirma que la política o el ARN de la política asociados concedan los permisos necesarios de Amazon S3.
Por ejemplo, el siguiente fragmento de un registro de CloudTrail muestra que las credenciales temporales incluyen una política de sesión en línea que otorga permisos s3:GetObject a DOC-EXAMPLE-BUCKET:
"requestParameters": { "roleArn": "arn:aws:iam::123412341234:role/S3AdminAccess", "roleSessionName": "s3rolesession", "policy": "{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"] }] }" }
Confirmación de si la política de puntos de enlace de Amazon VPC tiene los permisos correctos para acceder a los recursos de S3
Si tus usuarios utilizan una instancia de EC2 que se enruta a través de un punto de enlace de Amazon Virtual Private Cloud (Amazon VPC) para acceder a tu bucket, consulta la política de puntos de enlace de VPC.
Por ejemplo, la siguiente política de punto de enlace de VPC solo permite el acceso a DOC-EXAMPLE-BUCKET. Los usuarios que usan el punto de enlace de VPC para enviar solicitudes no pueden acceder a ningún otro bucket:
{ "Id": "Policy1234567890123", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567890123", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Principal": "*" } ] }
Revisión de la política de IAM de tu punto de acceso de Amazon S3
Si usas un punto de acceso de Amazon S3 para administrar el acceso al bucket, revisa la política de IAM del punto de acceso.
Los permisos que concedas en una política de punto de acceso solo entran en vigor cuando la política de bucket asociada también permite el mismo acceso. Confirma que tanto la política de bucket como la política de punto de acceso concedan los permisos correctos.
Confirmación de que el objeto está en el bucket y que el nombre del objeto no contiene caracteres especiales
Comprueba si el objeto solicitado está en el bucket. De lo contrario, la solicitud no encontrará el objeto y Amazon S3 dará por supuesto que el objeto no existe. Si no tienes los permisos de s3:ListBucket, recibirás un error Access Denied en lugar del error 404 Not Found.
Nota: Hay un procedimiento diferente para recuperar objetos que tienen caracteres especiales en sus nombres.
Ejecuta el comando head-object de la AWS CLI para comprobar si hay un objeto en el bucket:
aws s3api head-object --bucket DOC-EXAMPLE-BUCKET --key exampleobject.jpg
Nota: Sustituye DOC-EXAMPLE-BUCKET por el nombre de tu bucket.
Si el objeto está en el bucket, el error Access Denied no enmascara el error 404 Not Found. Comprueba otros requisitos de configuración para solucionar el error Access Denied.
Si el objeto no está en el bucket, el error Access Denied estará enmascarando un error 404 Not Found. Soluciona el problema relacionado con el objeto que falta.
Comprobación de la configuración de cifrado de AWS KMS
Si un usuario de IAM tiene todos los permisos sobre un objeto pero sigue sin poder acceder al objeto, comprueba si el objeto tiene el cifrado de AWS Key Management Service (AWS KMS) (SSE-KMS). Puedes usar la consola de Amazon S3 para ver las propiedades del objeto y comprobar la información de SSE-KMS del objeto.
Si el objeto se cifra con una clave administrada por el cliente, la política de claves de KMS debe permitirte realizar la acción kms:GenerateDataKey o kms:Decrypt. Para obtener más información, consulta Permite el acceso a la Cuenta de AWS y habilita las políticas de IAM.
Si el usuario de IAM pertenece a una cuenta diferente a la clave de AWS KMS, modifica la política de IAM para conceder el permiso kms:Decrypt. Por ejemplo, para descargar los objetos de SSE-KMS, debes especificar el permiso kms:Decrypt tanto en la política de claves como en la política de IAM. Para obtener más información sobre el acceso entre cuentas con el usuario de IAM y la clave de KMS, consulta Permitir a los usuarios de otras cuentas utilizar una clave de KMS.
En el caso de los buckets activados por Pago por el solicitante, confirma que los usuarios especificaron el parámetro request-payer.
Si has activado Pago por el solicitante en el bucket, los usuarios de otras cuentas deberán especificar el parámetro request-payer cuando envíen solicitudes a tu bucket. Para confirmar si has activado Pago por el solicitante, utiliza la consola de Amazon S3 para ver las propiedades de tu bucket.
El siguiente ejemplo de comando de la AWS CLI incluye el parámetro correcto para acceder a un bucket entre cuentas con Pago por solicitante:
aws s3 cp exampleobject.jpg s3://DOC-EXAMPLE-BUCKET/exampleobject.jpg --request-payer requester
Comprobación de las SCP de AWS Organizations
Si utilizas AWS Organizations, comprueba las políticas de control de servicio (SCP) para asegurarte de que se permita el acceso a Amazon S3. Las SCP especifican los permisos máximos para las cuentas afectadas. Por ejemplo, la siguiente SCP deniega explícitamente el acceso a Amazon S3 y produce un error Access Denied:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:*", "Resource": "*" } ] }
Para obtener más información sobre las características de AWS Organizations, consulta Enabling all features for an organization with AWS Organizations (Habilitación de todas las características para una organización con AWS Organizations).
Información relacionada
Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3
Getting Amazon S3 request IDs for AWS Support (Obtención de los ID de las solicitudes de Amazon S3 para AWS Support)

Contenido relevante
- Como solucionar el error: Supplied Policy document is breaching Cloudwatch Logs policy length limit.Respuesta aceptadapreguntada hace un meslg...
- preguntada hace 8 díaslg...
- preguntada hace 25 díaslg...
- Respuesta aceptadapreguntada hace 6 díaslg...
- preguntada hace 2 meseslg...
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 años