Object权限控制
设置Object的访问权限
目前BOS支持两种方式设置ACL。第一种是使用Canned Acl,在PutObjectAcl的时候,通过头域的"x-bce-acl"或者"x-bce-grant-permission'来设置object访问权限,当前可设置的权限包括private和public-read,两种类型的header不可以同时在一个请求中出现。第二种方式是上传一个ACL文件。 详细信息请参考设置Object权限控制。
-
通过使用头域的"x-bce-acl"来设置object访问权限
Plain Text1// 只能为private,public-read和public-read-write中的一个 2let cannedAcl = "private"; 3// cannel acl 4try { 5 await bosClient.putObjectAcl(bucketName, objectName, cannedAcl); 6 logger.info("put object acl success"); 7} catch (bosResponse) { 8 logger.error(`errCode: ${bosResponse.error.code}`) 9 logger.error(`requestId: ${bosResponse.error.requestId}`) 10 logger.error(`errMessage: ${bosResponse.error.message}`) 11 logger.error(`statusCode: ${bosResponse.statusCode}`) 12}
-
设置细粒度的权限
import { ObjectAclConf } from "bos/src/main/ets/bos/api/DataType"
// 给用户e13b12d0131b4c8bae959df4969387b8授予读权限 let acl =
{ "accessControlList":[ { "grantee":[{ "id":"e13b12d0131b4c8bae959df4969387b8" }], "permission":["READ"] } ] }
let objectAclConf = JSON.parse(acl) as ObjectAclConf;try { await bosClient.putObjectAcl(bucketName, objectName, undefined, undefined, undefined, objectAclConf); logger.info("put object acl success"); } catch (bosResponse) { logger.error(
errCode: ${bosResponse.error.code}
) logger.error(requestId: ${bosResponse.error.requestId}
) logger.error(errMessage: ${bosResponse.error.message}
) logger.error(statusCode: ${bosResponse.statusCode}
) }
查看Object的权限
示例代码
1let objectAclConf: ObjectAclConf;
2
3try {
4 objectAclConf = await bosClient.getObjectAcl(bucketName, objectName);
5 logger.info(`get object acl success, info : ${JSON.stringify(objectAclConf)}`)
6} catch (bosResponse) {
7 logger.error(`errCode: ${bosResponse.error.code}`)
8 logger.error(`requestId: ${bosResponse.error.requestId}`)
9 logger.error(`errMessage: ${bosResponse.error.message}`)
10 logger.error(`statusCode: ${bosResponse.statusCode}`)
11}
getObjectAcl
方法返回的解析类中可供调用的参数有:
参数 | 说明 |
---|---|
accessControlList | 标识object的权限列表 |
grantee | 标识被授权人 |
id | 被授权人ID |
permission | 标识被授权人的权限 |
删除Object的权限
示例代码
1try {
2 await bosClient.deleteObjectAcl(bucketName, objectName);
3 logger.info(`delete object acl success`)
4} catch (bosResponse) {
5 logger.error(`errCode: ${bosResponse.error.code}`)
6 logger.error(`requestId: ${bosResponse.error.requestId}`)
7 logger.error(`errMessage: ${bosResponse.error.message}`)
8 logger.error(`statusCode: ${bosResponse.statusCode}`)
9}