跨帐号访问COS资源
日常工作中,经常会存在跨帐号访问COS资源的场景,例如两个主体公司,甲方和乙方,资源归属甲方,但需要乙方进行软件开发和部署,所以甲方需要授权给乙方一定的资源访问和访问管理权限。下面就介绍一下,如果跨账号来访问COS资源,并实现精细化管理。
整体的授权示意图如下:
下面实践开始,假设
甲方主帐号
UIN:10000****231
APPID:125****742
甲方子帐号
Asubuser
UIN:10001****462
乙方主帐号
UIN:10000****930
APPID: 125****344
乙方子帐号
Bsubuser
UIN:10001****187
首先,需要甲方帐号给乙方帐号做授权。有两种方式,在bucket权限管理中
1.使用ACL的方式做跨主账号授权
授权纬度:数据读取、数据写入、权限读取、权限写入;完全控制(包括前面四种)。
2.授权Policy,进行精细化做跨主账号授权
授权纬度:用户ID,资源范围,操作行为,限制条件
我们这里通过ACL给10000****930(乙方主账号)授权了“数据读取、权限读取”两个只读权限。接下来我们来验证一下。
调用列出对象(ListObjects)接口,看到返回正常请求
调用设置对象ACL(PutOjectAcl)接口返回403无权限
到这里,我们可以通过ACL的方式授权另一个乙方主账号来访问A账号的bucket资源。且操作结果符合预期。
下一步,我们要授权乙方账号中的子帐号来访问A账号的bucket资源。
我们创建一个自定义策略,这个策略是授权子帐号管理wainsun桶的全部权限。(uid/ 这里的内容是资源拥有者的appid,后面的wainsun-125xxx 指的是资源拥有者要授权的bucket全称,bucket-appid方式)
{
"version": "2.0",
"statement": [{
"effect": "allow",
"action": "cos:*",
"resource": "qcs::cos:ap-beijing:uid/125****742:wainsun-125****742/*"
}]
}
授权给乙账号的子帐号Bsubuser,并执行设置对象ACL(PutOjectAcl),接口返回403
执行列出对象(ListObjects),正常返回。
这里我们可以看到,虽然我们给Bsubuser授权的是全部权限,但是由于给“乙方主帐号”授权的为只读权限,那么Bsubuser依然被限定为只读权限。也就是说。Bsubuser的权限是授权策略和“乙方主帐号”授权策略的交集。
由此,我们演示了跨帐号授权访问和跨帐号的子帐号授权方访问的方法。
BTW:文章中提到的ACL授权和policy自定义策略授权意外,后续还会支持角色授权,角色授权后,可通过授权的帐号进行控制台的登录访问,会更加方便数据的管理与维护。
- 【专业技术】Android内存泄漏简介
- 设计模式之工厂方法(r4笔记第89天)
- delete相关的pl/sql调优(r4笔记第87天)
- Java文件上传与下载【面试+工作】
- QBC查询
- 一条delete语句的调优(r4笔记第86天)
- Java支付宝接口开发【面试+工作】
- 03.SVN检出/解决冲突/提交
- Spring思维导图,让Spring不再难懂(mvc篇)
- SQL优化一(SQL使用技巧)
- Spring思维导图,让Spring不再难懂(aop篇)
- MongoDB初探第二篇 (r4笔记第82天)
- Spring思维导图,让Spring不再难懂(cache篇)
- 曲折的10g,11g中EM的安装配置过程(r4笔记第98天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法