¿Cómo puedo cambiar la propiedad de los objetos de propiedad pública (anónima) en mi bucket de Amazon S3?

4 minutos de lectura
0

Mi bucket de Amazon Simple Storage Service (Amazon S3) tiene un objeto de propiedad pública (anónima). ¿Cómo puedo cambiar la propiedad del objeto para que mi cuenta de AWS sea la propietaria de este?

Breve descripción

De forma predeterminada, un objeto de Amazon S3 pertenece a la identidad que lo ha cargado. Esto significa que si permite el acceso público de escritura a su bucket, los objetos cargados por los usuarios públicos (anónimos) pasarán a ser de propiedad pública. Para evitar problemas de seguridad, la práctica recomendada es bloquear el acceso público a su bucket.

Si un usuario anónimo ya ha subido un objeto a su bucket y quiere cambiar la propiedad del objeto, modifique la ACL del objeto. Cambie la ACL del objeto para conceder al propietario del bucket (su cuenta de AWS) el control total del objeto.

Nota: También puede utilizar la propiedad de objetos de Amazon S3 para controlar la propiedad de los objetos cargados por otra cuenta de AWS.

Resolución

Siga estos pasos para cambiar la propiedad del objeto a la cuenta de AWS propietaria del bucket:

1.    Para añadir una ACL de objeto, ejecute el comando put-object-acl mediante Interfaz de la línea de comandos de AWS (AWS CLI). Incluya la opción --acl con el valor bucket-owner-full-control para agregar una ACL que conceda al propietario del bucket el control del objeto. A continuación, incluya la opción --no-sign-request para utilizar credenciales anónimas en la solicitud. El comando put-object-acl completo con las opciones que necesita es similar al siguiente:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject  --acl bucket-owner-full-control   --no-sign-request

**Nota:**Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de utilizar la versión más reciente de AWS CLI.

2.    Para aplicar el cambio de propiedad, debe copiar el objeto sobre sí mismo. Para ello, ejecute el comando cp, de forma similar a la siguiente:

aws s3 cp s3://DOC-EXAMPLE-BUCKET/awsexampleobject  s3://DOC-EXAMPLE-BUCKET/awsexampleobject --storage-class STANDARD

Nota: Asegúrese de cambiar el valor --storage-class del comando de ejemplo por la clase de almacenamiento aplicable a su caso de uso. Además, asegúrese de incluir otras opciones de comando cp que necesite para el objeto.

3.    Para comprobar el cambio de propiedad, ejecute el comando get-object-acl, de forma similar a la siguiente:

aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key awsexampleobject

El comando devuelve un resultado que muestra el propietario del objeto, similar al siguiente:

{
    "Owner": {
        "DisplayName": "jane",
        "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "jane",
                "ID": "75050348ef85628a0977bexamplebdbc3062ce76f35cb463345ae65c2608d099",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }]}

4.    Si el control de versiones está habilitado en el bucket, también debe eliminar la versión anterior del objeto generado por el comando cp del paso 2. La versión anterior del objeto es de propiedad pública (anónima). Para eliminar esta versión del objeto, ejecute primero el comando list-object-versions en el bucket. Incluya la opción --prefix del comando para filtrar los resultados hasta el objeto que era de propiedad pública:

aws s3api list-object-versions --bucket DOC-EXAMPLE-BUCKET --prefix example.txt

En el resultado del comando, copie el ID de versión de la versión del objeto que era de propiedad pública. A continuación, ejecute el comando delete-object para el ID de versión que desee eliminar:

aws s3api delete-object --bucket DOC-EXAMPLE-BUCKET --key example.txt --version-id 'example.d6tjAKF1iObKbEnNQkIMPjj'

Advertencia: Revise el ID de versión detenidamente para asegurarse de que es el ID de la versión del objeto de propiedad pública. Si elimina una versión de objeto, no se podrá recuperar.


Información relacionada

Control de la propiedad de los objetos y desactivación de las ACL del bucket

Prácticas recomendadas de seguridad para Amazon S3

¿Por qué no puedo acceder a un objeto que otra cuenta de AWS ha subido a mi bucket de Amazon S3?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años