Solucionar errores de acceso denegado (403 Prohibido) en Amazon S3 - Amazon Simple Storage Service

Solucionar errores de acceso denegado (403 Prohibido) en Amazon S3

importante

El 13 de mayo de 2024, empezamos a implementar un cambio para eliminar los cargos por solicitudes no autorizadas que no haya iniciado el propietario del bucket. Una vez que se complete la implementación de este cambio, los propietarios de los buckets nunca incurrirán en cargos por solicitud o ancho de banda por las solicitudes que devuelvan errores AccessDenied (HTTP 403 Forbidden) cuando estas solicitudes se inicien desde fuera de la cuenta de AWS individual u organización de AWS. Para obtener más información sobre una lista completa de códigos de estado 3XX y 4XX HTTP que no se facturarán, consulte Facturación para respuestas de errores de Amazon S3. Este cambio de facturación no requiere actualizaciones en las aplicaciones y se aplica a todos los buckets de S3. Cuando se haya completado la implementación de este cambio en todas las Regiones de AWS, actualizaremos nuestra documentación.

En los siguientes temas se describen las causas más comunes de los errores de acceso denegado (403 Prohibido) en Amazon S3.

nota

Para Access Denied (HTTP 403 Forbidden), S3 no cobra al propietario del bucket cuando la solicitud se inicia fuera de la cuenta de AWS individual del propietario del bucket o de la organización de AWS del propietario del bucket.

nota

Si está intentando solucionar un problema de permisos, empiece por la sección Bucket policies and IAM policies (Políticas de buckets y políticas de IAM) y asegúrese de seguir las indicaciones de Tips for checking permissions (Consejos para comprobar los permisos).

Políticas de bucket y de IAM

Operaciones de bucket

Si no existe una política de bucket, el bucket permite de forma implícita las solicitudes de cualquier identidad AWS Identity and Access Management (IAM) de la cuenta propietaria del bucket. El bucket también rechaza implícitamente las solicitudes de cualquier otra identidad de IAM de cualquier otra cuenta y las solicitudes anónimas (sin firma). Sin embargo, si no existe una política de usuario de IAM, se niega implícitamente al solicitante (a menos que sea el usuario raíz) realizar ninguna solicitud. Para obtener más información sobre esta lógica de evaluación, consulte Cómo determinar si una solicitud se permite o se deniega dentro de una cuenta en la Guía del usuario de IAM.

Operaciones en el nivel de ls objeto

Si el objeto es propiedad de la cuenta propietaria del bucket, la política de bucket y la política de usuario de IAM funcionarán de la misma manera para las operaciones en el nivel de objeto que para las operaciones en el nivel de bucket. Por ejemplo, si no existe una política de bucket, el bucket permite de forma implícita las solicitudes de objetos de cualquier identidad de IAM de la cuenta propietaria del bucket. El bucket también rechaza implícitamente las solicitudes de objeto de cualquier otra identidad de IAM de cualquier otra cuenta y las solicitudes anónimas (sin firma). Sin embargo, si no existe una política de usuario de IAM, se niega implícitamente al solicitante realizar solicitudes de objetos (a menos que sea el usuario raíz).

Si el objeto es propiedad de una cuenta externa, el acceso al objeto solo se puede conceder a través de listas de control de acceso (ACL) a objetos. La política de bucket y la política de usuario de IAM todavía se pueden utilizar para denegar las solicitudes de objetos.

Por lo tanto, para garantizar que su política de bucket o de usuarios de IAM no esté provocando un error de acceso denegado (403 Prohibido), debe cumplir los siguientes requisitos:

  • Para acceder con la misma cuenta, no debe haber ninguna instrucción Deny explícita para el solicitante al que intenta conceder permisos, ni en la política de bucket ni en la política de usuarios de IAM. Si desea conceder permisos utilizando únicamente la política de bucket y la política de usuarios de IAM, debe haber al menos una instrucción Allow explícita en una de estas políticas.

  • Para un acceso entre cuentas, no debe haber ninguna instrucción Deny explícita para el solicitante al que intenta conceder permisos, ni en la política de bucket ni en la política de usuarios de IAM. Si desea conceder permisos entre cuentas utilizando únicamente la política de bucket y la política de usuarios de IAM, tanto la política de bucket como la política de usuarios de IAM del solicitante deben incluir una instrucción Allow explícita.

nota

Las instrucciones Allow de una política de bucket se aplican solo a los objetos que pertenecen a la misma cuenta propietaria del bucket. Sin embargo, las instrucciones Deny de una política de bucket se aplican a todos los objetos independientemente de quién sea el propietario.

Para revisar o editar la política de bucket
nota

Para ver o editar una política de bucket, debe tener el permiso s3:GetBucketPolicy.

  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, seleccione el nombre del bucket para el que desea crear una política de bucket.

  4. Elija la pestaña Permisos.

  5. En Política de bucket, elija Editar. Aparece la página Editar política de bucket.

Para revisar o editar la política de bucket mediante la AWS Command Line Interface (AWS CLI), use el comando get-bucket-policy.

nota

Si tiene bloqueado el acceso a un bucket debido a una política de bucket incorrecta, inicie sesión en la AWS Management Console con las credenciales de usuario raíz. Para recuperar el acceso al bucket, asegúrese de eliminar la política de bucket con sus credenciales de usuario raíz.

Consejos para comprobar los permisos

Para comprobar si el solicitante tiene los permisos adecuados para realizar una operación de Amazon S3, pruebe lo siguiente:

Configuración de ACL de Amazon S3

Al comprobar la configuración de las ACL, primero debe consultar la configuración de la propiedad del objeto para comprobar si las ACL están habilitadas en el bucket. Tenga en cuenta que los permisos de ACL solo se pueden usar para conceder permisos y no para rechazar solicitudes. Las ACL tampoco se pueden usar para otorgar acceso a los solicitantes rechazados mediante las denegaciones explícitas en las políticas de bucket o de usuarios de IAM.

La configuración de la propiedad del objeto se establece como Aplicada al propietario del bucket

Si la opción Aplicada al propietario del bucket está habilitada, es poco probable que la configuración de las ACL cause un error de acceso denegado (403 Prohibido), ya que esta opción deshabilita todas las ACL que afectan al bucket y a los objetos. Aplicada al propietario del bucket es la configuración predeterminada (y recomendada) para los buckets de Amazon S3.

La opción Aplicada al propietario del bucket se establece como Propietario del bucket preferido o Escritor de objetos

Los permisos de ACL siguen siendo válidos con la configuración Propietario del bucket preferido o Escritor de objetos. Hay dos tipos de ACL: ACL de bucket y ACL de objetos. Para conocer las diferencias entre estos dos tipos de ACL, consulte Mapeo de permisos de ACL y permisos de política de acceso.

Según la acción de la solicitud rechazada, compruebe los permisos de ACL de su bucket o del objeto:

  • Si Amazon S3 ha rechazado una LIST, un objeto PUT o una solicitud GetBucketAcl o PutBucketAcl, revise los permisos de ACL del bucket.

    nota

    No puede conceder permisos a objetos GET con la configuración de ACL del bucket.

  • Si Amazon S3 ha rechazado una solicitud GET sobre un objeto de S3 o una solicitud PutObjectAcl, revise los permisos de ACL del objeto.

    importante

    Si la cuenta propietaria del objeto es diferente a la cuenta propietaria del bucket, entonces la política del bucket no controlará el acceso al objeto.

Solución de un error de acceso denegado (403 Prohibido) provocado por una solicitud de objeto GET durante la propiedad de un objeto entre cuentas

Revise la Configuración de propiedad de objetos del bucket para determinar el propietario del objeto. Si tiene acceso a las ACL del objeto, también puede comprobar la cuenta del propietario del objeto. (Para ver la cuenta del propietario del objeto, revise la configuración de la ACL del objeto en la consola de Amazon S3). Como alternativa, también puede realizar una solicitud GetObjectAcl para encontrar el ID canónico del propietario del objeto a fin de verificar la cuenta del propietario del objeto. De forma predeterminada, las ACL otorgan permisos de forma explícita para las solicitudes GET a la cuenta del propietario del objeto.

Tras confirmar que el propietario del objeto es diferente del propietario del bucket, en función de su caso de uso y del nivel de acceso, elija uno de los siguientes métodos para solucionar el error Acceso denegado (403 Prohibido):

  • Desactivar las ACL (recomendado): este método se aplicará a todos los objetos y puede ejecutarlo el propietario del bucket. Este método otorga automáticamente la propiedad al propietario del bucket, además de control total sobre cada objeto del bucket. Antes de implementar este método, compruebe los requisitos previos para desactivar las ACL. Para obtener información sobre cómo configurar el bucket como Aplicada al propietario del bucket (recomendado), consulte Configuración de la propiedad de objetos en un bucket existente.

    importante

    Para evitar un error de acceso denegado (403 Prohibido), asegúrese de migrar los permisos de ACL a una política de bucket antes de desactivar las ACL. Para obtener más información, consulte los ejemplos de políticas de bucket para migrar desde los permisos de ACL.

  • Cambiar el propietario del objeto por el propietario del bucket: este método se puede aplicar a objetos individuales, pero solo el propietario del objeto (o un usuario con los permisos adecuados) puede cambiar la propiedad de un objeto. Se pueden aplicar costos de PUT adicionales. (Para obtener más información, consulte Precios de Amazon S3). Este método otorga al propietario del bucket la propiedad total del objeto, lo que le permite controlar el acceso al objeto mediante una política de bucket.

    Para cambiar la propiedad del objeto, lleve a cabo una de las siguientes acciones:

    • Usted (el propietario del bucket) puede volver a copiar el objeto en el bucket.

    • Puede cambiar la configuración de la propiedad del objeto del bucket a la que prefiera el propietario del bucket. Si el control de versiones está desactivado, los objetos del bucket se sobrescriben. Si el control de versiones está activado, aparecerán versiones duplicadas del mismo objeto en el bucket, y el propietario del bucket podrá establecer el vencimiento de una regla de ciclo de vida. Para ver instrucciones sobre cómo cambiar la configuración de Propiedad de objetos, consulte Configuración de la propiedad de objetos en un bucket existente.

      nota

      Al actualizar la configuración de Propiedad de objetos en la preferida por el propietario del bucket, la configuración solo se aplicará a los objetos nuevos que se carguen en el bucket.

    • Puede hacer que el propietario del objeto vuelva a cargar el objeto con la ACL de objetos predefinidos bucket-owner-full-control.

    nota

    Para las cargas entre cuentas, también puede requerir la ACL de objetos predefinidos bucket-owner-full-control en la política de bucket. Para ver un ejemplo de política de bucket, consulte Conceder permisos entre cuentas para cargar objetos al mismo tiempo que se garantiza que el propietario del bucket tenga el control total.

  • Mantener al escritor de objetos como propietario del objeto: este método no cambia el propietario del objeto, pero sí le permite otorgar acceso a los objetos de forma individual. Para otorgar acceso a un objeto, debe tener el permiso PutObjectAcl para el objeto. A continuación, para corregir el error Acceso denegado (403 Prohibido), añada al solicitante como beneficiario para acceder al objeto en las ACL del objeto. Para obtener más información, consulte Configuración de la ACL.

Configuración del bloqueo de acceso público en S3

Si la solicitud que da error implica acceso público o políticas públicas, compruebe la configuración del bloqueo de acceso público en S3 en su cuenta, bucket o punto de acceso de S3. A partir de abril de 2023, todas las configuraciones de bloqueo de acceso público estarán activadas de forma predeterminada para los buckets nuevos. Para obtener más información sobre el concepto de “público” de Amazon S3, consulte Qué significa "pública".

Cuando se establece en TRUE, las configuraciones de Bloquear acceso público actúan como políticas de denegación explícitas que anulan los permisos permitidos por las ACL, las políticas de bucket y las políticas de usuarios de IAM. Para determinar si las configuraciones de Bloquear acceso público rechazan su solicitud, revise las siguientes situaciones:

  • Si la lista de control de acceso (ACL) es pública, la configuración BlockPublicAcls rechazará las llamadas PutBucketAcl y PutObjectACL.

  • Si la solicitud incluye una ACL pública, la configuración BlockPublicAcls rechazará las llamadas PutObject.

  • Si la configuración BlockPublicAcls se aplica a una cuenta y la solicitud incluye una ACL pública, cualquier llamada CreateBucket que incluya una ACL pública fallará.

  • Si el permiso de tu solicitud solo lo concede una ACL pública, la configuración IgnorePublicAcls rechazará la solicitud.

  • Si la política de bucket especificada permite el acceso público, la configuración BlockPublicPolicy rechazará las llamadas PutBucketPolicy.

  • Si la configuración BlockPublicPolicy se aplica a un punto de acceso, fallarán todas las llamadas PutAccessPointPolicy y PutBucketPolicy que especifiquen una política pública y se realicen a través del punto de acceso.

  • Si el punto de acceso o el bucket tienen una política pública, la configuración RestrictPublicBuckets rechazará todas las llamadas entre cuentas, excepto las de las entidades principales Servicio de AWS. Esta configuración también rechaza todas las llamadas anónimas (o sin firma).

Para revisar y actualizar las configuraciones de Bloquear acceso público, consulte Establecer la configuración de Block Public Access para sus buckets de S3.

Configuración del cifrado de Amazon S3

Amazon S3 admite el cifrado del lado del servidor en el bucket. El cifrado del lado del servidor es el cifrado de datos en su destino por la aplicación o servicio que los recibe. Amazon S3 cifra sus datos en el nivel de objeto; los escribe en los discos de sus centros de datos de AWS y cuando usted accede a ellos, los descifra para usted.

De forma predeterminada, Amazon S3 aplica ahora el cifrado del lado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Amazon S3 también le permite especificar el método de cifrado del lado del servidor al cargar objetos.

Para revisar el estado de cifrado del lado del servidor y la configuración de cifrado de su bucket
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el bucket para el que desea comprobar la configuración de cifrado.

  4. Elija la pestaña Propiedades.

  5. Desplácese hacia abajo hasta la sección Cifrado predeterminado y consulte la configuración Tipo de cifrado.

Para comprobar la configuración de cifrado mediante la AWS CLI, utilice el comando get-bucket-encryption.

Para comprobar el estado de cifrado de un objeto
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el nombre del bucket que contiene el objeto.

  4. En la lista Objetos, seleccione el nombre del objeto al que desea agregar cifrado o cuyo cifrado desea modificar.

    Aparece la página de detalles del objeto.

  5. Desplácese hacia abajo hasta la sección Configuración del cifrado del lado del servidor para ver la configuración de cifrado del lado del servidor del objeto.

Para comprobar el estado de cifrado del objeto mediante la AWS CLI, utilice el comando head-object.

Requisitos de permisos y cifrado

Amazon S3 admite tres tipos de cifrado del lado del servidor:

  • Cifrado en el servidor con claves administradas por Amazon S3 (SSE-S3)

  • Cifrado del lado del servidor con claves AWS Key Management Service (AWS KMS) (SSE-KMS)

  • Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)

Según la configuración de cifrado, asegúrese de que se cumplan los siguientes requisitos de permisos:

  • SSE-S3: no se requieren permisos adicionales.

  • SSE-KMS (con una clave administrada por el cliente): para cargar objetos, se requiere el permiso kms:GenerateDataKey en la AWS KMS key. Para descargar objetos y realizar cargas de varias partes, se requiere el permiso kms:Decrypt de la clave KMS.

  • SSE-KMS (con una Clave administrada de AWS): el solicitante debe ser de la misma cuenta que posee la clave KMS aws/s3. El solicitante también debe tener los permisos de Amazon S3 correctos para acceder al objeto.

  • SSE-C (con una clave administrada por el cliente): no se requieren permisos adicionales. Puede configurar la política de bucket para requerir y restringir el cifrado del lado del servidor con claves de cifrado proporcionadas por el cliente para los objetos del bucket.

Si el objeto está cifrado con una clave administrada por el cliente, asegúrese de que la política de claves de KMS le permita realizar las acciones kms:GenerateDataKey o kms:Decrypt. Para obtener instrucciones sobre cómo comprobar la política de claves de KMS, consulte Consultar una política de claves en la Guía para desarrolladores de AWS Key Management Service.

Configuración de bloqueo de objetos de S3

Si el bucket tiene activado el bloqueo de objetos de S3 y el objeto está protegido por un período de retención o una retención legal, Amazon S3 muestra un error de acceso denegado (403 Prohibido) cuando intenta eliminar el objeto.

Para comprobar si el bucket tiene activado el bloqueo de objetos
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. En la lista Buckets, elija el nombre del bucket en cuestión.

  4. Elija la pestaña Propiedades.

  5. Desplácese hacia abajo hasta la sección Bloqueo de objetos. Compruebe si la configuración de Bloqueo de objetos está Habilitada o Deshabilitada.

Para determinar si el objeto está protegido por un período de retención o una retención legal, consulta la información de bloqueo del objeto.

Si el objeto está protegido por un período de retención o una retención legal, compruebe lo siguiente:

  • Si la versión del objeto está protegida por el modo de retención de conformidad, no se podrá eliminar permanentemente. Una solicitud DELETE permanente de cualquier solicitante, incluido el usuario raíz, generará un error de acceso denegado (403 Prohibido). Además, tenga en cuenta que cuando envía una solicitud DELETE para un objeto protegido por el modo de retención de conformidad, Amazon S3 crea un marcador de eliminación para el objeto.

  • Si la versión del objeto está protegida con el modo de retención de control y usted tiene el permiso s3:BypassGovernanceRetention, puede omitir la protección y eliminar la versión de forma permanente. Para obtener más información, consulte Omitir el modo de gobierno.

  • Si la versión del objeto está protegida por una retención legal, una solicitud DELETE permanente puede generar un error de acceso denegado (403 Prohibido). Para eliminar la versión del objeto de forma permanente, debe eliminar la retención legal en la versión del objeto. Para eliminar una retención legal, debe tener el permiso s3:PutObjectLegalHold. Para obtener más información acerca de la eliminación de una retención legal, consulte Configurar el Bloqueo de objetos de S3.

Política de punto de conexión de VPC

Si accede a Amazon S3 desde un punto de conexión de nube privada virtual (VPC), asegúrese de que la política de punto de conexión de VPC no le impida acceder a los recursos de Amazon S3. De forma predeterminada, la política de puntos de conexión de VPC permite todas las solicitudes a Amazon S3. También puedes configurar la política de puntos de conexión de VPC para restringir determinadas solicitudes. Para obtener información sobre cómo comprobar la política de puntos de conexión de VPC, consulte Uso de políticas de punto de conexión para controlar el acceso a puntos de conexión de VPC en la Guía de AWS PrivateLink.

Políticas de AWS Organizations

Si su Cuenta de AWS pertenece a una organización, las políticas de AWS Organizations pueden impedirle acceder a los recursos de Amazon S3. Las políticas de AWS Organizations no bloquean ninguna solicitud a Amazon S3 de forma predeterminada. Sin embargo, asegúrese de que sus políticas de AWS Organizations no estén configuradas para bloquear el acceso a los buckets de S3. Para obtener instrucciones sobre cómo comprobar sus políticas de AWS Organizations, consulte Enumeración de todas las políticas en la Guía del usuario de AWS Organizations.

Configuración del punto de acceso

Si recibe un error de acceso denegado (403 Prohibido) al realizar solicitudes a través de los puntos de acceso de Amazon S3, es posible que tenga que comprobar lo siguiente:

  • Las configuraciones de los puntos de acceso

  • La política de usuarios de IAM que se utiliza para los puntos de acceso

  • La política de bucket que se usa para administrar o configurar los puntos de acceso entre cuentas

Configuraciones y políticas de los puntos de acceso
  • Al crear un punto de acceso, el origen de la red puede ser Internet o VPC. Si el origen de la red se establece solo en VPC, Amazon S3 rechazará cualquier solicitud realizada al punto de acceso que no provenga de la VPC especificada. Para comprobar el origen de la red del punto de acceso, consulte Crear puntos de acceso restringidos a una nube privada virtual.

  • Con los puntos de acceso, también se puede personalizar la configuración del bloqueo de acceso público, que es similar a la configuración del bloqueo de acceso público en el nivel de bucket o de cuenta. Para ver la configuración personalizada de Bloquear acceso público, consulte Administrar el acceso público a los puntos de acceso.

  • Para realizar solicitudes correctas a Amazon S3 a través de los puntos de acceso, asegúrese de que el solicitante tenga los permisos de IAM necesarios. Para obtener más información, consulte Configurar las políticas de IAM para el uso de puntos de acceso.

  • Si la solicitud incluye puntos de acceso entre cuentas, asegúrese de que el propietario del bucket haya actualizado la política del bucket para autorizar las solicitudes desde el punto de acceso. Para obtener más información, consulte Concesión de permisos para puntos de acceso entre cuentas.

Si el error Acceso denegado (403 Prohibido) persiste después de consultar todos los elementos de este tema, obtenga el ID de solicitud de Amazon S3 y póngase en contacto con AWS Support para obtener más información.