All Products
Search
Document Center

Object Storage Service:Manage bucket ACLs (C# SDK V1)

Last Updated:Sep 24, 2026

Set and get bucket ACLs to control read and write permissions on the objects in a bucket.

Notes

  • In this topic, the public endpoint of the China (Hangzhou) region is used. If you want to access OSS from other Alibaba Cloud services in the same region as OSS, use an internal endpoint. For more information about OSS regions and endpoints, see Regions and endpoints.

  • This topic demonstrates creating an OSSClient instance with an OSS endpoint. For alternative configurations, such as using a custom domain or authenticating with credentials from Security Token Service (STS), see Initialization (C# SDK V1).

  • To set the ACL of a bucket, you must have the oss:PutBucketAcl permission. To get the ACL of a bucket, you must have the oss:GetBucketAcl permission. For more information, see Grant a custom policy.

Set the ACL of a bucket

OSS supports the following bucket ACLs.

ACL

Description

Method

Private

Only the bucket owner and authorized users can read and write objects. Other users have no access.

CannedAccessControlList.Private

Public-read

Only the bucket owner and authorized users can read and write objects. Other users can only read objects. Use with caution.

CannedAccessControlList.PublicRead

Public-read-write

All users can read and write objects in the bucket. Use with caution.

CannedAccessControlList.PublicReadWrite

The following code shows how to set the ACL of a bucket:

using System;
using Aliyun.OSS;
using Aliyun.OSS.Common;

namespace Samples
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 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 bucket name. Example: examplebucket.
            var bucketName = "examplebucket";
            // Specify the region where the bucket is located. For example, if the bucket is 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 as needed.
            var conf = new ClientConfiguration();
            // Use Signature V4.
            conf.SignatureVersion = SignatureVersion.V4;

            // Create an OssClient instance.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            client.SetRegion(region);
            
            try
            {
                // Set the bucket ACL to public-read.
                client.SetBucketAcl(bucketName, CannedAccessControlList.PublicRead);
                Console.WriteLine("Set bucket ACL succeeded");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Set bucket ACL failed. {0}", ex.Message);
            }
        }
    }
}

Obtain bucket access permissions

The following code gets the bucket ACL:

using System;
using Aliyun.OSS;
using Aliyun.OSS.Common;

namespace Samples
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Specify the endpoint of the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
            var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 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 bucket name. Example: examplebucket.
            var bucketName = "examplebucket";
            // Specify the region where the bucket is located. For example, if the bucket is 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 as needed.
            var conf = new ClientConfiguration();
            // Use Signature V4.
            conf.SignatureVersion = SignatureVersion.V4;

            // Create an OssClient instance.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            client.SetRegion(region);
            
            try
            {

                var acl = client.GetBucketAcl(bucketName);
                Console.WriteLine("Get bucket ACL success {0}", acl.ACL);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Get bucket ACL failed. {0}", ex.Message);
            }
        }
    }
}

References

  • For the complete sample code that is used to set the ACL of a bucket, see the GitHub example.

  • For the complete sample code that is used to retrieve the ACL of a bucket, see the GitHub example.

  • For more information about the API operation that is used to set the ACL of a bucket, see PutBucketAcl.

  • For more information about the API operation that is used to retrieve the ACL of a bucket, see GetBucketAcl.