Além das listas de controle de acesso (ACLs) no nível do bucket, o Object Storage Service (OSS) oferece ACLs no nível do objeto. Configure a ACL de um objeto durante o upload ou modifique-a posteriormente.
ACLs de objeto
Um objeto possui quatro tipos de permissão de leitura e escrita:
A ACL de um objeto tem precedência sobre a ACL do bucket onde ele está armazenado. Por exemplo, se a ACL de um objeto em um bucket privado for definida como public-read, todos os usuários, incluindo anônimos, poderão ler esse objeto.
|
Tipo de permissão |
Descrição |
Valor da permissão |
|
Herdada do bucket |
Se você não configurar a ACL de um objeto, ela será igual à ACL do bucket onde o objeto está armazenado. |
Aliyun::OSS::ACL::DEFAULT |
|
Private |
Somente o proprietário do objeto pode executar operações de leitura e escrita nele. Outros usuários não têm acesso ao objeto. |
Aliyun::OSS::ACL::PRIVATE |
|
Public-read |
Apenas o proprietário do objeto pode executar operações de escrita. Demais usuários, inclusive anônimos, têm permissão somente para leitura. Aviso
Isso pode resultar em acesso não autorizado e custos inesperados. Tenha cautela ao utilizar esta ACL. |
Aliyun::OSS::ACL::PUBLIC_READ |
|
Public-read-write |
Qualquer usuário, incluindo anônimos, pode ler e escrever no objeto. Aviso
Esta ACL permite que todos os usuários acessem e gravem dados no objeto pela internet, o que pode causar acessos não autorizados, custos imprevistos ou envio de conteúdo proibido. Evite definir 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 abaixo demonstra como configurar e consultar 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 mais detalhes sobre a operação de API usada para configurar a ACL de um objeto, consulte PutObjectACL.
Para obter informações sobre a operação de API destinada a consultar a ACL de um objeto, consulte GetObjectACL.