OBS服务细粒度访问控制的两种实现方法的对比
当前有两种方式可以实现OBS服务的细粒度访问控制:
IAM的OBS策略,即 IAM上针对OBS服务的细粒度策略控制
OBS桶策略,即OBS桶自身的高级策略控制
本文将对这二者进行一次详细的对比分析。
两种策略的相同/相似之处
两种策略控制机制,都可以通过 “Web/普通视图”和 “JSON视图”两种方式进行策略的定义,如下图所示
并且它们的JSON代码定义都是由基本的 Statement 来构成,每个Statement都可包含 Effect、Action、Resource、Condition 这几个key,并且这些Key的含义也基本类似
IAM的OBS策略 和 OBS桶策略 的JSON视图实例对比
从两种策略的JSON表达式中看不同之处
OBS桶策略的每一个Statement必须包含一个 Principal -> ID 字段,指定一个或多个目标账号id(domain/xxx) 和 目标用户id(user/xxx);
IAM的OBS策略中每一个Statement中不需要指定账号和用户信息,因为这个信息是在用户组/委托授权的时候,动态确定的
——这就意味着一个OBS桶策略只能适用于一个账户/用户规则,而一个IAM的OBS策略可以适用于多个账户/用户规则Action 中的JSON元素格式不同:IAM的OBS策略中action格式形如 obs:bucket:GetBucketAcl,而OBS桶策略的action格式形如 GetBucketAcl
——这就意味着它们所支持的细粒度Action规则并不完全相同,具体内容详见官网描述的OBS桶策略支持的Action 、IAM的OBS策略支持的桶授权项 和 对象授权项
特别需要注意的是,“列举所有桶”、“创建桶”、“删除桶”等几个常用操作的权限控制,只能在IAM的OBS策略中被支持Resource 中的JSON元素格式也不同:OBS桶策略的每一个Statement中,Resource字段中只能包含一条规则,要么指定该桶本身,要么指定该桶内的对象;而IAM的OBS策略的每个Statement中,Resource字段可以同时指定多条规则,包含多个目标桶资源和多个对象资源
——这就意味着一条OBS桶策略只能适配该桶自身及桶内的对象,而一条IAM的OBS策略可以适配多个桶及桶内的对象,显然IAM的OBS策略工作的效率更高,如果多个桶的权限控制策略是一样的,只需要创建和维护一条IAM的OBS策略即可
两种策略的“项目”感知能力不同
华为云上的一个企业账号下,经常需要对各种云服务资源(自然也包括OBS服务)进行基于“项目”的“物理隔离(IAM项目机制)”或“逻辑隔离(企业项目机制)”,在这种情况下,对不同的“项目”的授权只能基于IAM策略。
总结
本质而言,“OBS桶策略”和“IAM的OBS策略”都是OBS资源与IAM管理的结合。
OBS桶策略是基于单个OBS Bucket的,可见的IAM体系要素也仅有“企业账户”和“IAM用户”两点而已,局限性很大
IAM策略是IAM体系中进行授权管理的基本要素,能够与IAM体系中其他的所有机制无缝结合,从而更灵活方便地实现各种华为云资源的分配和管理。OBS桶策略能够实现的所有功能,IAM的OBS策略都能够完成,并能实现对OBS服务整体性操作(而非单个OBS桶)的权限管
由此,优先推荐客户使用IAM的OBS策略实现OBS服务细粒度访问控制
- 点赞
- 收藏
- 关注作者
评论(0)