带你读《从基础到应用云上安全航行指南》——干货长文快收藏!阿里云专家教你如何安全访问和管理ECS资源(1):https://developer.aliyun.com/article/1441586
三、权限管理的策略与授权案例
接下来介绍关于权限管理的策略和授权案例。首先先介绍一下访问控制的实现原理,介绍如何给身份进行授权,特别是关于ECS授权的一些基本的案例。接下来会介绍一些高阶的授权能力,比如可以基于资源组进行访问控制和资源的管理,也可以使用标签进行资源管理,最后介绍操作审计。
访问控制是管理资源访问权限的服务。它不仅提供了多种满足日常运维人员职责所需要的系统权限策略。也允许您通过图形化工具快速地创建自定义的用户权限策略。
∙ 它可以根据请求特征,比如请求源IP地址、日期时间、资源标签等条件属性匹配精细的资源访问控制策略。
∙ 也支持根据RAM用户或RAM角色的身份特征,判断其是否在资源维度和操作维度是否有访问权限。
∙ 也支持根据资源特征,比如资源是否在指定资源组中,判断RAM用户或RAM角色是否有访问权限。
当您的企业存在多用户协同操作资源的场景时,RAM可以让您避免与其他用户共享阿里云账号密钥,按需为用户分配最小权限,从而降低企业的信息安全风险。
RAM访问控制支持控制台、SDK、OpenAPI、阿里云CLI命令行等多种方式的调用,因此也是非常方便的。
如何给身份进行授权?默认情况下,阿里云的主账号控制了资源的所有权限,主账号创建出来的RAM用户是默认没有任何权限的,因此需要通过授权的方式给RAM用户赋予权限,用户的授权会分为两个步骤。
首先需要新建一组权限的策略,给RAM主体绑定权限的策略。权限策略也叫做policy,就是用一组语法结构去描述一组权限的集合,目前支持两种的权限策略,分别是阿里云维护的系统策略和用户自定义的权限策略,系统策略,用户是只能使用而不能够修改,是由阿里云来进行维护。用户的自定义策略,用户就可以通过可见化可视化的编辑器,包括权限策略的脚本编辑器,以及权限策略的模板等多种方式,进行自主的创建,更新和删除。
第二步是为RAM的主体进行授权,也就叫做attach policy,attach policy是给RAM用户或者用户组或者角色,绑定一个或者是多个的权限策略,他的授权范围可以是整个云账号的资源也可以是指在云账号下指定的一个资源组内的资源,绑定的权限策略,可以是系统策略,也可以是自定义的策略,如果绑定的权限策略被更新了,更新之后的权限策略就会自动生效,而无需要再重新绑定这个权限策略。
为了方便您使用,ECS已经预定了一些系统策略来方便您在日常的管理中快速的为RAM用户,RAM用户组或者是RAM角色去添加这些权限的策略。这里面包含了ECS管理员的权限,ECS只读的权限,管理弹性网卡的权限,下发云助手命令或者是只读云助手信息导入导出ECS实例镜像等权限。
这里我们举一个在企业内部控制员工资源使用权限的案例。
首先,企业的管理员可以按需创建和管理资源的职位,来创建一个SysAdmins的用户组,添加权限策略,并授予执行所有操作的权限,管理员需要严格的控制高权限的人数,并且给管理员去开启MFA登录。
管理员可以为需要使用的资源的职位创建Developers用户组,为开发人员创建相应的RAM用户,并按照各自用各自的职位加入到不同的用户组,根据研发的自定义,管理员可以根据最小够用的权限策略的原则去授予开发人员,去调用StarInstance、StopInstance、DescribeInstancestar 等ECS最基本的功能接口的权限,如果为了加强网络的安全控制,管理员可以添加这网络相关的权限策略,规定比如组内的用户的IP如果不是来自于企业网络内部,则拒绝其访问资源。
如果某一个开发人员的职位,变更为系统管理员,就可以将其RAM的用户从Developers用户组移动到SysAdmins用户组,如果Developers用户组的RAM用户,需要更大的权限,修改用户组的权限策略就可以应用到用户组里面所有的RAM用户。
对于云产品,比如ECS实例,可以给特定的ECS实例绑定RAM角色,基于STS临时访问凭证去访问其他的云产品,在阿里云上是可以实现这样一组策略。
再来举另外一个例子,也是为不同的职责的人员去授予不同的权限,其实可以根据企业的实际情况,给更多的角色分配更多的更细粒度的权限策略,这里既可以是系统的策略,也可以根据实际情况去自定义一些访问的策略,比如这里分成了云管理员,系统管理员,网络管理员,安全管理员,财务还有开发人员等各种各样的角色。他们的角色的访问策略就可以由您自己去管理。
接下来学习一些权限控制的高阶用法。
首先是基于资源组的细粒度资源管理和访问控制,资源组其实是根据资源的用途,权限,归属等维度,对您所拥有的云资源可以进行分组,从而实现企业内部多用户、多项目的资源的分级管理,每个云资源目前只能属于一个资源组,加入到资源组,它不会改变云资源间的关联关系,比如可以按照云资源的用途来进行分组,将生产环境的实例和测试环境的实例,分别放入到生产环境和测试环境的两个资源组中。
在产品测试的时候,只对测试环境内的资源组进行实际的操作,从而避免对生产环境的实例发生误操作,在产品需要上线的时候,再选择生产环境的资源组装的实例进行操作,也可以按公司不同的部门使用的资源放入到多个不同的资源组中,并且设置相应的管理员,从而实现分部门的管理实例。
这里举某个游戏公司项目开发的真实案例,某个游戏公司在并行开发三个游戏项目,每个项目都会用到多种云资源,公司是要求项目要能够独立管理,项目的人员也只能访问到它所在项目的资源,这时候就可以基于资源组来实现RAM的访问控制。
基于资源组的访问控制具体应该怎么做?
首先可以由企业的管理员分别给三个项目创建三个不同的资源组,并且把每个项目所用的独立资源放入到对应的资源组中。在资源管理页找到资源组,创建出资源组,点击资源组内,再点击转入资源,就可以将云产品对应的资源转入到资源组内。
第二步是企业的管理员给项目人员创建RAM用户,给RAM用户在资源组内授予ECS的相关的一些权限,这样RAM用户就可以访问本项目内的ECS资源,但无法访问其他项目的ECS资源。
除了使用资源组外,也可以使用标签来划分不同的资源,相比于资源组,标签是一种更加灵活的资源划分维度或者工具,比如可以按照地区、部门、环境分别给资源打上多个标签,同一个资源可以支持多个标签。
如果从资源视角来看,可以把资源分成各个云产品,比如有ECS计算资源,有OSS存储资源,有VPC网络资源,从标签的视角,就可以更加贴近于用户的视角,可以把资源按照地区或者是部门或者是环境等多个维度来进行区分,在此基础上,可以基于标签来实现访问的控制。
通过标签来进行RAM用户的健全的访问控制的原理如图所示。
首先是由云管理员使用阿里云的主账号新建一个自定义的策略,在策略中,可以指定带有特定的RequestTag,或者是特定的ResourceTag,RequestTag是意味着RAM用户在发起请求的时候必须要传入特定的Request标签,比如在创建资源时传入这个标签,就会给ECS实例自动打上Request的标签,而ResourceTag标签就意味着RAM用户要访问的资源本身必须包含特定的Resource的标签。
在阿里云的主账号创建好自定义策略之后,将自定义策略授予给RAM用户,预期的结果就是RAM用户只能按照标签匹配的条件来访问ECS资源,而操作未绑定标签的ECS资源时会报错。
再来看一个真实的客户案例,某公司希望根据不同的角色对资源进行管理,要求在API层面和控制台都可以用,这里分别有四个RAM角色,分别是资源的生产者,资源授权的管理者,还有两类的用户,一类是datacenter用户组里的用户,一类是bizcenter用户组里的用户。
资源的生产者负责资源的生产和调度,资源的授权者是负责管理资源标签的策略和授权的关系,前两者一般可以是用户公司的财务人员和运维人员,而datacenter的用户组的成员和bizcenter用户组的成员往往是公司的研发人员。
运维人员可以按照ResourceTag去创建出包含自定义的标签策略的策略,授予datacenter成员去访问带有这个datacenter tag的ECS资源;授权bizcenter的成员,可以访问带有这个bizcenter ECS tag的资源。
这里资源的授权就相当于对资源进行打标签,需要资源上有标签,在ECS上面添加相应的标签就可以。如果希望用户无法访问当前资源,只要把这个标签删除掉就可以,而不需要再去修改这个标签的权限策略,这样对于权限的管理就转化成了对于标签的管理,这样是一种更加灵活的使用权限控制的策略。
我们强烈建议您开启操作审计的服务,操作审计的服务称为ActionTrail,它可以帮助您去监控记录云账号对于产品服务的访问和使用的行为,您可以根据这些行为进行事后的行为分析、安全分析,来监控未授权的访问,或者识别潜在的安全配置错误,威胁或者是意外行为,也可以满足行为合规审计的一些要求。
小结:刚刚在权限管理中,我们介绍了ECS几个产品的安全能力,介绍了访问控制的实现原理,如何给身份授权以及给ECS授权的案例,建议您基于身份授予访问ECS资源的权限,对于有更细粒度的ECS资源访问控制的需求,建议您可以使用资源组或者是标签tag进行批量授权,最后还是建议您能够开启操作审计来监控云账号对于操作的行为进一步监控和控制。
带你读《从基础到应用云上安全航行指南》——干货长文快收藏!阿里云专家教你如何安全访问和管理ECS资源(3)https://developer.aliyun.com/article/1441584