¿Por qué no puedo acceder a un objeto que otra cuenta de AWS ha subido a mi bucket de Amazon S3?
Un usuario de AWS Identity and Access Management (IAM) de otra cuenta de AWS subió un objeto a mi bucket de Amazon Simple Storage Service (Amazon S3). Cuando intento acceder a ese objeto, aparece el error 403 Acceso denegado. ¿Cómo puedo solucionar este problema?
Descripción corta
En el caso de los depósitos de Amazon S3 existentes con la configuración de propiedad de objetos predeterminada, el propietario del objeto es la cuenta de AWS que cargó el objeto en el depósito. Para estos buckets existentes, el propietario del objeto tenía que conceder permisos de forma explícita a un objeto (adjuntando una lista de control de acceso). De lo contrario, el propietario del bucket no podrá acceder al objeto.
Con la Propiedad del objeto de S3, los propietarios de bucket ahora pueden administrar la propiedad de cualquier objeto cargado en sus buckets. De forma predeterminada, todos los buckets de S3 recién creados tienen habilitada la configuración impuesta por el propietario del bucket. Cuando se habilita la configuración impuesta por el propietario del bucket, los propietarios del bucket se convierten en los propietarios de todos los objetos del bucket. Además, todas las ACL de un bucket y sus objetos están deshabilitadas.
También puede establecer la propiedad de objetos de S3 en los buckets existentes habilitando la configuración impuesta por el propietario del bucket o la configuración preferida del propietario del bucket. Cuando la configuración preferida del propietario del bucket está habilitada, las ACL siguen habilitadas. Además, solo los objetos cargados al bucket con una ACL de bucket-owner-full-control y el propietario del bucket son propiedad del propietario del bucket. Si habilita la configuración impuesta por el propietario del bucket en un bucket existente, tenga en cuenta que también puede deshabilitarla en cualquier momento. (Desactivar la configuración impuesta por el propietario en un bucket existente vuelve a habilitar cualquier política de control de acceso (ACL) de los buckets y objetos que se aplicaron previamente)
Se recomienda que los propietarios del bucket utilicen la configuración impuesta por el propietario del bucket en los buckets nuevos y existentes y, al mismo tiempo, administren los permisos mediante políticas de IAM y de bucket.
Importante: Antes de deshabilitar cualquier ACL en los buckets existentes, evalúe el impacto potencial. Si hay varias ACL en un objeto o bucket, revise y actualice su bucket y sus políticas de IAM para conceder los permisos necesarios.
Resolución
Para deshabilitar las ACL activadas en su bucket y tomar posesión de todos los objetos del bucket, ejecute el siguiente comando:
aws s3api put-bucket-ownership-controls --bucket example-bucket --ownership-controls 'Rules=[{ObjectOwnership=BucketOwnerEnforced}]'
Si no puede deshabilitar las ACL en su bucket, use las siguientes opciones para conceder acceso a los objetos de su bucket.
Conceder acceso durante una operación de poner o copiar
Durante una operación de poner o copiar, el propietario del objeto puede especificar que la ACL del objeto otorgue el control total al propietario del bucket.
Para una operación de venta, el propietario del objeto puede ejecutar este comando:
aws s3api put-object --bucket destination_DOC-EXAMPLE-BUCKET --key dir-1/my_images.tar.bz2 --body my_images.tar.bz2 --acl bucket-owner-full-control
Nota: Si recibe errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de la CLI de AWS.
Para una operación de copia de un solo objeto, el propietario del objeto puede ejecutar uno de estos comandos:
aws s3api copy-object --bucket destination_DOC-EXAMPLE-BUCKET --key source_DOC-EXAMPLE-BUCKET/myobject --acl bucket-owner-full-control
-o-
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/myobject s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control
Para una operación de copia de varios objetos, el propietario del objeto puede ejecutar este comando:
aws s3 cp s3://source_DOC-EXAMPLE-BUCKET/ s3://destination_DOC-EXAMPLE-BUCKET/ --acl bucket-owner-full-control --recursive
Conceder el acceso después de añadir el objeto al bucket
Si el objeto ya está en un bucket de otra cuenta, el propietario del objeto puede conceder acceso al propietario del bucket con el comando put-object-acl:
aws s3api put-object-acl --bucket destination_DOC-EXAMPLE-BUCKET --key keyname --acl bucket-owner-full-control
Exigir que los objetos otorguen al propietario del bucket el control total
Puede usar una política de bucket para exigir que cualquier objeto que otra cuenta suba a su bucket deba configurar la ACL como «bucket-owner-full-control». Para ver un ejemplo, consulte Cuando otras cuentas de AWS suben objetos a mi bucket de S3, ¿cómo puedo exigir que me concedan la propiedad de los objetos?
Información relacionada
Tutorial de IAM: Delegue el acceso a todas las cuentas de AWS mediante roles de IAM
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace un año