Object权限控制
更新时间:2024-04-25
权限控制
设置对象的访问权限
目前BOS支持两种方式设置ACL. 具体可参考权限控制
第一种是使用Canned Acl,在bos_put_object_acl的时候,通过头域的"x-bce-acl", "x-bce-grant-read", 或者 "x-bce-grant-permission"来设置对象的访问权限,当前可设置的权限包括private和public-read,三种类型的header不可以同时在一个请求中出现.
第二种方式是以自定义Acl样式, 具体可通过上传其json字符串, 设置accessControlList, 或者直接上传ACL文件. 具体可参考权限控制概述
设置Canned ACL
Canned ACL是预定义的访问权限,用户可选择对某个对象进行设置,支持三种接口:
bos_acl_e bos_acl;
bos_acl = BOS_ACL_PRIVATE;
bos_status_t *s = NULL;
bos_table_t *resp_headers = NULL;
bos_string_t object;
s = bos_put_object_acl(options, &bucket, &object, bos_acl, NULL, NULL, NULL, NULL, &resp_headers);
print_headers(resp_headers);
if (bos_status_is_ok(s)) {
printf("put bucket acl succeeded\n");
} else {
printf("put bucket acl failed\n");
}
设置自定义ACL
用户可参考如下代码设置Bucket内的对象的自定义访问权限,支持三种不同参数:
bos_acl_e bos_acl;
bos_acl = 6;
bos_status_t *s = NULL;
bos_table_t *resp_headers = NULL;
bos_string_t object;
char * acl_json = "{ \"accessControlList\": [ { \"grantee\":[{ \"id\":\"168bf6fd8fa74d9789f35a283a1f15e2\
" }], \"permission\":[\"WRITE\"] } ] }";
s = bos_put_object_acl(options, &bucket, &object, NULL, acl_json, NULL, NULL, NULL, &resp_headers);
print_headers(resp_headers);
if (bos_status_is_ok(s)) {
printf("put object acl succeeded\n");
} else {
printf("put object acl failed\n");
}
获取对象的访问权限
如下代码可获取一个对象的访问权限:
s = bos_get_object_acl(options, &bucket, &object, &root, &resp_headers);
*jsonString = json_dumps(root, JSON_INDENT(2));
printf("\n%s\n", jsonString);
注意:
acl涉及到的具体结构体Grant, 在bucket acl和object acl体系中共用
目前object acl体系中只用到其中grantee, permission两个字段.
其余注释的字段均为bucket acl体系独有.