资源组
资源组是用户对资源的一种划分与管理,目前阿里云的ECS、RDS、SLB等众多产品都已经支持资源组,ECI现在开始正式支持资源组。
通过资源组对资源的划分可以是根据资源的用途特性划分,也可以是对用户权限的管理。
比如公司通过统一的阿里云账号购买云资源,但是有的是用于测试环境,有的是用于生产环境,这时候资源组就是比较使用,通过资源组对资源进行分组管理,可以很好的划分测试与生产环境下的资源。
本文重点讲解是ECI的资源组与RAM用户权限管理的结合使用场景。
效果
在没有资源组之前,如果阿里云账号给RAM用户授权ECI相关的权限,那么他的权限可以覆盖到账号下的所有ECI,能创建、修改、删除(如果有)所有的ECI。当阿里云账号的各个RAM用户的资源需要进行隔离的时候,可能就会产生冲突。有了资源组之后就可以将RAM用户的权限缩小在一个资源组内,即RAM用户只能操作该资源组下的资源,操作其他资源组的资源会因越权而被阻止。
API 鉴权说明
创建API:CreateContainerGroup
阿里云账号
如果是阿里云账号创建,权限最大。用户可以添加资源至账号下的任意资源组。如果用户没有传入资源组,则会默认添加资源至默认资源组。
RAM用户
如果RAM用户的权限被约束在某个资源组内。那么创建资源时必须传入资源组id(如果刚好授权的资源组是默认资源组,可以不用传,因为如果用户没有传入资源组,则会添加到账号下的默认资源组);如果用户传入了资源组,就会鉴权该资源组。
如果RAM用户的权限没有被约束在一个资源组内,创建没有影响,会自动加入默认资源组。
查询API:DescribeContainerGroups
阿里云账号
如果是阿里云账号创建,权限最大,默认也会返回所有资源,不存在资源组的约束。
但是,如果用户传入了资源组进行过滤,我们会返回该资源组下的满足条件的资源。阿里云账号有这样的权限。
RAM用户
对于被约束在某个资源组下的RAM用户,查询的时候资源组是必传的,否则鉴权不通过。资源组校验通过后,才会进行查询。查询到的资源也都是该资源组下的。
日志查询API:DescribeContainerLog
阿里云账号
大账号拥有绝对的权限,可以查询账号下任意ECI的容器日志。
RAM用户
无需用户传入资源组,我们会自动帮用户找到这个资源对应的资源组(如果资源加入过任何资源组),并进行鉴权,如果通过就继续,不通过就挡掉。防止越权操作。
删除API:DeleteContainerGroup
阿里云账号
大账号拥有绝对的权限,可以删除账号下的所有资源。
RAM用户
对于该API,同样无需用户传入资源组,我们会自动帮用户找到这个资源对应的资源组(如果资源加入过任何资源组),并进行鉴权,如果通过就继续,不通过就挡掉。防止越权操作。
资源生命周期管理
目前ECI还不支持用户修改资源组,即资源只能在创建的时候加入指定的资源组或默认资源组,资源删除的时候会自动从资源组移除。
常见使用场景
阿里云账号下有三个资源组:默认资源组、test_a、test_b。
阿里云账号下有两个RAM用户:test、test2,前者只有test_a下的ECIfull权限,后者只有默认资源组下的ECIfull权限。
创建API:CreateContainerGroup
阿里云账号:
阿里云账号创建不传入资源组ID,加入默认资源组。
阿里云账号创建传入资源组ID,且合法的,加入该资源组。
阿里云账号创建传入资源组ID,且不合法,加入默认资源组。
RAM用户:
RAM用户test创建不传入资源组ID,鉴权不通过。
RAM用户test创建传入不合法的资源组ID,鉴权不通过。
RAM用户test2创建不传入资源组ID,加入默认资源组。
RAM用户test创建传入正确的资源组ID,加入该资源组。
查询API:DescribeContainerGroups
阿里云账号:
阿里云账号不设置资源组过滤条件,返回所有满足条件的资源。
阿里云账号设置了资源组的过滤条件,合法,只返回该资源组下的满足条件的资源。
阿里云账号设置了资源组的过滤条件,不合法,查询返回空。
RAM用户:
RAM用户test查询没有设置资源组ID,鉴权不通过。
RAM用户test查询设置了资源组ID,不合法,鉴权不通过。
RAM用户test查询设置了资源组ID,合法,返回该资源组下的过滤资源。
RAM用户test查询设置了资源组ID,合法,但是传入的resourceId不在该资源组内,无法查看返回空。
日志查询API:DescribeContainerLog
阿里云账号:
可以任意查询默认资源组内资源。
可以任意查询test_a资源组内资源。
RAM用户:
RAM用户test查询自己资源组下的资源,鉴权通过。
RAM用户test查询非自己资源组下的资源,鉴权不通过。
删除API:DeleteContainerGroup
阿里云账号:
可以任意删除默认资源组下资源。
可以任意删除test_a资源组下资源。
RAM用户:
RAM用户test删除自己资源组下的资源,鉴权通过。
RAM用户test删除非自己资源组下的资源,鉴权不通过。