Además de las listas de control de acceso (ACL) de bucket, Object Storage Service (OSS) ofrece ACL de objeto. Configure la ACL de un objeto al cargarlo o modifíquela después de la carga.
ACL de objetos
Un objeto cuenta con cuatro permisos de lectura y escritura:
La ACL de un objeto tiene prioridad sobre la ACL del bucket donde se almacena. Por ejemplo, si la ACL de un objeto en un bucket privado se establece como public-read, todos los usuarios, incluidos los anónimos, pueden leer el objeto.
Tipo de permiso | Descripción | Valor del permiso |
Heredado del bucket | Si no configura la ACL de un objeto, este adopta la misma ACL que el bucket donde se almacena. | Aliyun::OSS::ACL::DEFAULT |
Privado | Solo el propietario del objeto puede ejecutar operaciones de lectura y escritura. Los demás usuarios no tienen acceso al objeto. | Aliyun::OSS::ACL::PRIVATE |
Lectura pública | Únicamente el propietario del objeto puede ejecutar operaciones de escritura. Los demás usuarios, incluidos los anónimos, solo pueden leer el objeto. Aviso Esta configuración puede provocar accesos no autorizados y costos inesperados. Tenga precaución al usar esta ACL. | Aliyun::OSS::ACL::PUBLIC_READ |
Lectura y escritura públicas | Todos los usuarios, incluidos los anónimos, pueden ejecutar operaciones de lectura y escritura en el objeto. Aviso Esta ACL permite que cualquier usuario acceda al objeto y escriba datos en él por internet, lo cual puede generar accesos no autorizados, costos inesperados o cargas de contenido prohibido. No establezca la ACL del objeto como lectura y escritura públicas a menos que sea estrictamente necesario. | Aliyun::OSS::ACL::PUBLIC_READ_WRITE |
Ejemplos
A continuación se muestra un ejemplo de código para configurar y obtener la ACL de un objeto:
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# The China (Hangzhou) region is used as an example. Replace the endpoint with the one for your region.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Specify the bucket name. For example, examplebucket.
bucket = client.get_bucket('examplebucket')
# Specify the full path of the object. The full path cannot contain the bucket name. For example, exampledir/example.txt.
# Get the ACL of the object that is set during the upload.
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl
# Modify the ACL of the object.
bucket.set_object_acl('exampledir/example.txt', Aliyun::OSS::ACL::PUBLIC_READ)
acl = bucket.get_object_acl('exampledir/example.txt')
puts acl
Referencias
Para más información sobre la operación de API que permite configurar la ACL de un objeto, consulte PutObjectACL.
Para más detalles acerca de la operación de API que permite consultar la ACL de un objeto, consulte GetObjectACL.