上一篇我们介绍了OBS权限管理中统一身份认证和企业项目管理,本期我们继续介绍OBS权限管理中的高级桶策略和ACL应用。
您是否也遇到过类似的问题或者困扰?
1、隔壁的主账户给了子用户创建一个桶,但是没有给他设置桶策略,子账户访问报403,困惑了一整天。
2、楼下是另外一个子账号,为了OBS控制台报无权限访问,百思不得其解。
3、对面一个子账户上传了一个文件,抓破头也无法分享给其他人。
这些问题或者困扰各不相同,下面将分别介绍高级桶策略和ACL应用来解答这些问题和困惑。
高级桶策略介绍:
桶策略是作用于配置桶策略的单个桶的。同时也提供代码模式配置方法,高级桶策略代码最多不能超过20KB。
桶策略参数:
(1)Effect,桶策略效果;指定本条策略描述的权限是允许请求还是拒绝请求。
(2)Action,桶策略动作;指定本条策略可以执行的操作。
(3)Condition,策略生效必须满足的条件,详情参考
/usermanual-obs/obs_03_0120.html
(4)Resource,资源;资源指桶或对象。您可以指定一个对象或对象集,当指定给对象集时,使用通配符(*),例如:file*。如果不输入,则表示指定资源为桶,且在动作处只能选择与桶相关的。多个资源使用英文逗号分隔。
(5)Principal,桶策略被授权用户。
“domain/账号ID”(表示被授权用户为xxx账号)。
“domain/账号ID:user/用户ID”(表示被授权用户为xxx账号下的xxx用户)
控制台:
对应代码模式:
应用案例:
步骤1:配置账号B的一个桶,允许账号A下的a租户只有上传权限,配置如下。
其中账户ID为A账户的账号ID
用户ID为A用户a租户的用户ID
资源为空代表桶本身,配置后a租户可以挂载外部桶但没有对象操作权限。
高级桶策略与IAM授权对比
(1)IAM的OBS细粒度权限直接授权给IAM用户组,而OBS桶的自身细粒度规则目标只能是一个或者多个IAM用户,对于多用户场景创建和维护的效率较低,如下图所示。
(2)IAM的OBS细粒度权限可以包含60个Bucket+Object动作规则,而OBS桶自身的细粒度策略中,支持的Bucket+Object动作规则只有34个,如下图所示。这也就意味着IAM的OBS细粒度权限精细度更高。
(3)IAM的OBS细粒度权限还可以支持“列举所有桶”操作的权限控制,这样的全局性操作控制在OBS桶的自身高级策略中是无法实现的。
(4)OBS桶的自定义桶策略,设定的Bucket访问权限只能针对该桶自己;而一条IAM的OBS细粒度权限则可以同时适配多个目标OBS桶。
(5)OBS桶的自定义桶策略,只能控制IAM用户的OBS访问权限,而不能控制其他云服务对OBS资源的访问权限的。IAM的OBS细粒度权限则可以通过委托授权来控制其他云服务对于OBS资源的访问权限。
(6)不论是IAM的OBS细粒度权限控制,还是OBS桶自定义的高级桶策略中,桶的访问控制与对象的访问控制是分开定义的,在华为云的OBS服务中,桶的访问控制规则与对象的访问控制规则是分开定义的,当前无法通过一条策略将桶本身和桶内对象都共享出去。
如下所示为OBS桶的自定义高级桶策略:
如下所示为IAM的OBS细粒度权限定义,也需要同时包含桶和对象两条规则
ACL介绍:
基于账号的访问控制。有一个很恰当的比喻:桶owner相当于房东,房东将桶出租给房客(子账户),子账户可以将贵重物品放到自己的房间里,但是房东没有权利去查看。房客可以给房东钥匙(设置对象ACL)赋予房东权限,使其有访问权限。
应用案例:
步骤1:账号A上传,B账号无权限下载
步骤2:可通过SDK,配置指定主账号具有对象下载权限;
上传者使用Java SDK配置指定账号权限。
这样对象的上传者,就可以将对象的权限赋予给桶owner。
点击这里,了解更多精彩内容