Todos os produtos
Search
Central de documentação

Object Storage Service:Gerenciar ACLs de objetos (OSS SDK for C# 1.0)

Última atualização: Jul 03, 2026

Este tópico descreve como gerenciar as listas de controle de acesso (ACLs) de objetos.

Observações

  • Este tópico utiliza o endpoint público da região China (Hangzhou). Caso precise acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, utilize um endpoint interno. Para obter mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.

  • Este tópico demonstra a criação de uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token Service (STS), consulte Inicialização (C# SDK V1).

  • Para configurar a ACL de um objeto, você precisa da permissão oss:PutObjectAcl. Para consultar ACLs de objetos, é necessária a permissão oss:GetObjectAcl. Para mais detalhes, consulte Conceder uma política personalizada.

Tipos de ACL

A tabela a seguir descreve as ACLs configuráveis para um objeto.

Nota

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 estiver definida como public-read, todos os usuários, incluindo anônimos, poderão ler esse objeto.

Tipo de ACL

Descrição

Valor

Herdada do bucket

A ACL do objeto é igual à do bucket onde está armazenado. Esta é a ACL padrão de um objeto.

CannedAccessControlList.Default

Privada

Somente o proprietário do objeto pode lê-lo e gravá-lo. Outros usuários não têm acesso ao objeto.

CannedAccessControlList.Private

Leitura pública

Apenas o proprietário do objeto pode gravar nele. Outros usuários, incluindo anônimos, só podem ler o objeto.

Aviso

Isso pode causar acesso não autorizado e custos inesperados. Tenha cautela ao usar esta ACL.

CannedAccessControlList.PublicRead

Leitura e gravação públicas

Todos os usuários, incluindo anônimos, podem ler e gravar o objeto.

Aviso

Esta ACL permite que qualquer usuário acesse e grave dados no objeto pela internet, o que pode resultar em acesso não autorizado, custos inesperados ou upload de conteúdo proibido. Não defina a ACL do objeto como leitura e gravação públicas, a menos que seja estritamente necessário.

CannedAccessControlList.PublicReadWrite

Código de exemplo

O código abaixo exemplifica como configurar e consultar a ACL de um objeto específico:

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "yourEndpoint";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Specify the name of the bucket. Example: examplebucket. 
var bucketName = "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
var objectName = "exampleobject.txt";
// Specify the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou.
const string region = "cn-hangzhou";

// Create a ClientConfiguration instance and modify the default parameters based on your requirements.
var conf = new ClientConfiguration();

// Use the signature algorithm V4.
conf.SignatureVersion = SignatureVersion.V4;

// Create an OSSClient instance.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
c.SetRegion(region);
// Configure the ACL of the object. 
try
{
    // Call SetObjectAcl to configure the ACL of the object. 
    client.SetObjectAcl(bucketName, objectName, CannedAccessControlList.PublicRead);
    Console.WriteLine("Set Object:{0} ACL succeeded ", objectName);
}
catch (Exception ex)
{
    Console.WriteLine("Set Object ACL failed with error info: {0}", ex.Message);
}
// Query the ACL of the object. 
try
{
    // Call GetObjectAcl to query the ACL of the object. 
    var result = client.GetObjectAcl(bucketName, objectName);
    Console.WriteLine("Get Object ACL succeeded, Id: {0}  ACL: {1}",
        result.Owner.Id, result.ACL.ToString());
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID: {2}\tHostID: {3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Referências

  • Para obter o código de exemplo completo de gerenciamento da ACL de um objeto, visite o GitHub.

  • Para mais informações sobre a operação de API usada para configurar a ACL de um objeto, consulte PutObjectACL.

  • Para detalhes sobre a operação de API destinada à consulta da ACL de um objeto, consulte GetObjectACL.