Cuando otras cuentas de AWS carguen objetos en mi bucket de Amazon S3, ¿cómo puedo exigir que me concedan el control total sobre esos objetos?

2 minutos de lectura
0

Quiero que los usuarios de otras cuentas de AWS puedan cargar objetos en mi bucket de Amazon Simple Storage Service (Amazon S3). Sin embargo, quiero exigir que los usuarios me concedan el control total sobre esos objetos.

Solución

Añada una política de bucket que exija que los usuarios incluyan la lista de control de acceso (ACL) bucket-owner-full-control cuando carguen objetos en su bucket.

Por ejemplo, esta política de bucket especifica que ExampleUser solo podrá cargar objetos en DOC-EXAMPLE-BUCKET cuando la ACL del objeto esté configurada como bucket-owner-full-control:

{
  "Id": "Policy1541018284691",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1541018283275",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      },
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/ExampleUser"
        ]
      }
    }
  ]
}

Tras añadir esta política de bucket, los usuarios deberán incluir la ACL requerida como parte de la solicitud de carga, como en el siguiente ejemplo:

aws s3 cp example.jpg s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

Si los usuarios no cumplen el requisito de la ACL en su solicitud de carga, verán este mensaje de error:

«An error occurred (AccessDenied) when calling the PutObject operation: Access Denied»

En el caso de los objetos incluidos en su bucket que sean propiedad de otras cuentas, el propietario del objeto puede ejecutar un comando put-object-acl para concederle el control total sobre el objeto:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key example.jpg --acl bucket-owner-full-control

La ACL bucket-owner-full-control otorga al propietario del bucket acceso total a un objeto cargado por otra cuenta, pero esta ACL por sí sola no concede la titularidad sobre el objeto. Para obtener automáticamente la titularidad sobre los objetos cargados con la ACL bucket-owner-full-control, configure la opción «Propiedad de objetos» de S3 como «Propietario del bucket preferido». Tras actualizar la titularidad sobre los objetos de S3, los nuevos objetos cargados con la ACL bucket-owner-full-control pasarán automáticamente a ser propiedad del propietario del bucket.

Información relacionada

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

Administración de buckets mediante ACL predefinidas

Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM

Mapeo de permisos de ACL y permisos de política de acceso

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 5 meses