Além das listas de controle de acesso (ACLs) no nível do bucket, o Object Storage Service (OSS) fornece ACLs no nível do objeto. Configure a ACL de um objeto durante o upload ou modifique-a após o envio.
ACLs de objetos
Um objeto possui quatro permissões de leitura e gravação:
A ACL de um objeto tem precedência sobre a ACL do bucket em que ele está armazenado. Por exemplo, se a ACL de um objeto em um bucket privado estiver definida como public-read, todos os usuários, incluindo usuários anônimos, poderão ler o objeto.
Tipo de permissão | Descrição | Valor da permissão |
Herdada do bucket | Se não configurar a ACL de um objeto, a ACL do objeto será igual à do bucket em que ele está armazenado. | Aliyun::OSS::ACL::DEFAULT |
Privada | Somente o proprietário do objeto pode executar operações de leitura e gravação. Outros usuários não têm acesso ao objeto. | Aliyun::OSS::ACL::PRIVATE |
Public-read | Somente o proprietário do objeto pode executar operações de gravação. Outros usuários, incluindo usuários anônimos, podem apenas ler o objeto. Aviso Isso pode causar acesso não autorizado e custos inesperados. Tenha cuidado ao usar esta ACL. | Aliyun::OSS::ACL::PUBLIC_READ |
Public-read-write | Todos os usuários, incluindo usuários anônimos, podem executar operações de leitura e gravação no objeto. Aviso Esta ACL permite que todos os usuários acessem e gravem dados no objeto pela Internet. Isso pode causar acesso não autorizado, custos inesperados ou upload de conteúdo proibido. Não defina a ACL do objeto como public-read-write, a menos que seja estritamente necessário. | Aliyun::OSS::ACL::PUBLIC_READ_WRITE |
Exemplos
O código a seguir mostra como configurar e obter a ACL de um 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
Referências
Para obter mais informações sobre a operação da API para configurar a ACL de um objeto, consulte PutObjectACL.
Para saber mais sobre a operação da API para consultar a ACL de um objeto, consulte GetObjectACL.