访问控制

最近更新时间:2024-09-14 18:11:12

我的收藏

简介

本文档提供关于存储桶、对象的访问控制列表(ACL)的相关 API 概览以及 SDK 示例代码。

相关示例

功能名称
描述
示例代码
设置存储桶 ACL
设置指定存储桶的访问权限控制列表(ACL)
查询存储桶 ACL
查询指定存储桶的访问权限控制列表(ACL)
设置对象 ACL
设置存储桶中某个对象的访问控制列表
查询对象 ACL
查询对象的访问控制列表

前期准备:初始化 COS 服务实例

public class AccessManageModel { private CosXml cosXml; //将服务用户设置成数据成员 // 初始化COS服务实例 private void InitCosXml() { string region = Environment.GetEnvironmentVariable("COS_REGION"); CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion(region) // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build(); string secretId = Environment.GetEnvironmentVariable("SECRET_ID"); // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond); this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); } }

使用案例

设置存储桶 ACL

设置指定存储桶的访问权限控制列表(ACL)。
public void PutBucketAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; PutBucketACLRequest request = new PutBucketACLRequest(bucket); //设置私有读写权限 request.SetCosACL(CosACL.Private); //授予113197593账号读权限 COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); readAccount.AddGrantAccount("113197593", "113197593"); request.SetXCosGrantRead(readAccount); //执行请求 PutBucketACLResult result = cosXml.PutBucketACL(request); //请求成功 Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }

查询存储桶 ACL

查询指定存储桶的访问权限控制列表(ACL)。
public void GetBucketAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; GetBucketACLRequest request = new GetBucketACLRequest(bucket); //执行请求 GetBucketACLResult result = cosXml.GetBucketACL(request); //存储桶的 ACL 信息 AccessControlPolicy acl = result.accessControlPolicy; Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }

设置对象 ACL

设置存储桶中某个对象的访问控制列表(ACL)。
public void PutObjectAcl() { // 因为存储桶 ACL 最多1000条,为避免 ACL 达到上限,非必须情况不建议给对象单独设置 ACL(对象默认继承 bucket 权限). try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; string key = "exampleobject"; //对象键 PutObjectACLRequest request = new PutObjectACLRequest(bucket, key); //设置私有读写权限 request.SetCosACL(CosACL.Private); //授予1131975903账号读权限 COSXML.Model.Tag.GrantAccount readAccount = new COSXML.Model.Tag.GrantAccount(); readAccount.AddGrantAccount("1131975903", "1131975903"); request.SetXCosGrantRead(readAccount); //执行请求 PutObjectACLResult result = cosXml.PutObjectACL(request); //请求成功 Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }

查询对象 ACL

查询对象的访问控制列表。
public void GetObjectAcl() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; string key = "exampleobject"; //对象键 GetObjectACLRequest request = new GetObjectACLRequest(bucket, key); //执行请求 GetObjectACLResult result = cosXml.GetObjectACL(request); //对象的 ACL 信息 AccessControlPolicy acl = result.accessControlPolicy; Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }

API 操作

关于设置存储桶 ACL 的 API 接口说明,请参见 PUT Bucket acl 文档。
关于查询存储桶 ACL 的 API 接口说明,请参见 GET Bucket acl 文档。
关于设置对象 ACL 的 API 接口说明,请参见 PUT Object acl 文档。
关于查询对象 ACL 的 API 接口说明,请参见 GET Object acl 文档。