演讲人:夜来,阿里云开放平台云SSO产品专家
本篇内容将为大家介绍多账号身份权限集中管理解决方案。我们首先从一个企业的真实案例来带入说明企业在多账号管理和治理过程中,对多账号身份权限管理的具体需求和应对方案。
上图是一个有10家子公司的集团企业,目前这些子公司的运维和安全都是由各个子公司相应的团队自己负责的。由于每个子公司的员工身份分散在不同的账号内,集团安全合规团队没有办法对这些账号身份权限进行统一管理和治理,导致暴露出越来越多的安全风险问题。因此公司决定要找一个适用于自己集团问题的解决方案,对所有公司身份账号进行统一管控。
在这样的背景下,这个集团公司想要解决这个问题,会遇到哪些具体的问题呢?
首先,众所周知,如果在阿里云的一个云账号内,想要为员工和程序去配置相应的访问权限,可以使用像阿里云RAM访问控制产品,在账号内位为员工和程序创建对应的子用户身份,并为这些子用户身份来分配账号内资源的访问权限。
如果使用RAM访问控制这样的产品来对多账号结构进行身份和权限管理,是需要对每一个账号进行相应的配置的,这就会造成管理成本的大幅增加。
比如会造成身份权限的反复创建,举个例子,某个员工需要访问3个账号,那么就需要在3个账号内为他分别创建一个对应的RAM子用户,同时为这3个子用户分配对应的账号内资源权限。如果要将企业的身份权限系统与RAM访问控制进行单点登录配置,也需要将企业的IP和每一个运营账号去做单点登录配置。
相应的这就会产生大量的安全风险,包括企业的安全合规团队没办法集中查看所有用户的身份和权限,导致很多时候一些身份和权限都是过度授权,或是很多身份是不合理的存在,以至于一些不合理的授权漏洞也没法及时发现。
另外,一个子用户需要访问多个账号的话,就需要保管多个账号的登录密码,这就会导致这个用户泄露密码的可能性增加,以至于增加安全风险。在员工离职的时候,也需要到他的每个账号内去查找是否有对应的子用户身份,如果有需要做删除处理。如果没有办法进行统一管理,这就很可能遗漏掉一些以前创建的子用户身份,导致员工离职后仍然能够访问企业的相应资源。
为了解决这一系列的问题,阿里云提供了这款云SSO产品来帮助企业进行多账号身份权限的集中管理。通过下图可以了解云SSO产品的基本实现方式。
首先,企业在进行多账号权限管理的时候,云SSO会依托资源目录这样一个资源架构。也就是说,云SSO会有一个资源的管理账号以及将各个成员账号分配给不同业务和职能团队。资源管理账号所承担的是管控作用。
在资源目录的管理账号内创建云SSO的身份目录,为企业当中需要访问阿里云资源的员工创建对应的云SSO用户身份。这个用户身份是区别于RAM访问控制产品的,是一个新的独立用户身份。如果企业要将自己的身份权限系统和云SSO进行单点登录的打通,只需要做一次配置即将企业IDP和云SSO的目录进行单点登录配置即可。
接下来需要为企业员工配置相应的成员账号内访问权限。
首先可以将一些典型的职能来抽象成为一个权限模版,即访问配置。比如像网络管理员、数据库管理员、服务器管理员、财务管理员等等这样的角色,他们相应的职责和需要的权限都是可以高度抽象出来的。那么我们就可以通过为这些角色创建对应的访问配置来将角色权限固化下来。
然后就只需要为企业员工去分配对应账号内的角色权限即可。比如为一个员工配置在成员账号1中的数据库管理员这样的角色身份,那么就是为这个用户配置成员账号1内有数据库管理员这个访问配置权限,做三元组的关联关系。
进行这样的配置关系之后,云SSO产品会自动为这个员工的用户身份在对应的成员账号内创建一个RAM访问角色,最终这个员工在登录云SSO产品之后,会对应的登录到成员账号的角色身份上面,来实现对相应云资源的访问权限。
另外,由于有一些云产品并不是非常适合使用角色的方式登录,阿里云也为企业提供了用户同步的模式,为云SSO产品用户去对应创建一个同步的RAM用户身份,也是在对应的成员账号之内创建,最终实现云SSO用户可以登录到具体的成员账号的RAM用户身份上,并通过这个用户身份来访问相应的云资源。
以上就是云SSO产品实现的一个基本逻辑。
当员工获得了相应成员账号权限配置之后,当他登陆云SSO产品门户之后,就可以看到自己在哪些账号内有相应的什么角色权限了,可以选择具体的账号角色登录;也可以了解到自己在哪些账号内有具体的RAM用户登录权限,也可以登录到具体的用户身份上。
云SSO产品也支持CLI登录。具体的配置方式在文档中有非常详细的步骤解释,这里就不再赘言。
回到最开始的企业案例。
通过在云上多账号的规划方案来看下这个企业相对应的在身份权限上进行了怎样的配置。
首先,企业有一系列的员工身份。也就是上文介绍的可以抽象为典型访问配置的,比如企业管理员、企业财务、安全合规运维、网络管理员等等。
同时,为这个企业的10个子公司去创建相应的生产环境、测试环境等具体的开发环境成员账号。这些账号都会是独立的云账号,也就是说这家企业会有相应的可能超过10个以上的云账号。
将这些账号和身份的映射关系抽象出来,就会是如下图所示的关系。
首先,这家企业在自己的身份权限系统,也就是IDP内有一系列的员工身份。我们为这些员工在企业管理账号的云SSO目录下,创建相应的用户身份并配置单点登录关系。那么这些企业IDP内的员工身份就可以相应的登录到自己在阿里云上的映射云SSO用户身份上。
同时,我们为企业员工创建了一些典型的访问配置,即上文提到的系列角色职能。为云SSO的用户进行三元组授权关系,即这个用户在哪个具体成员账号内有什么样的访问配置权限。这个配置完成之后,云SSO产品会自动帮助这个用户在这个成员的账号内创建对应的角色,并授予他相应的日志管理员等权限。
这样一个授权关系实现之后,员工就可以通过角色登录的方式最终登录到成员账号内,去通过角色访问相应的例如审计类、日志类等产品。
另外,为了一些数据类产品,我们也提供了用户同步模式。
举个例子,如上图的Frank是做大数据研发的员工,我们可以为他做一个相应的用户同步的配置,同步在业务账号内创建RAM的访问用户身份,这样Frank就可以通过这个RAM用户身份访问到具体的大数据产品。
下面是云SSO产品的基本操作,包括为用户进行最基本的权限配置。
这里用一个有管理员身份的RAM子用户账号进行登录,云SSO控制台前面的开通步骤大家可以通过文档来具体了解。下面介绍下我如何为一个员工进行具体的多账号权限配置。
首先,需要为这个员工创建一个具体的云SSO身份。首先需要输入用户名和基本信息,然后为这个用户设置一个初始密码并发送给他做登录用。
接下来,推荐企业对一些职责相近的员工进行组的管理,举个例子,可以将项目组成员放在一个组里,并对整组员工进行快速授权。
另外,也需要创建一些典型的访问配置来代表用户拥有的常见权限角色,推荐使用云治理中心产品来批量快速地创建一些常见的访问配置。如下图所示,可以用“readonly”创建一个全局只读的用户身份;“会话持续时间”是指访问到成员账号之后,角色登录的整体时间;“初始页面”意思是登录后的响应页面,如果不设置的话,默认就是控制台首页;确认以上信息之后,可以添加相应的权限。
以上是系统策略,同时我们也可以为这个访问配置添加一个自定义策略,它的整个写法和语法是和RAM控制产品定制的策略是一模一样的。
当创建完成之后,就可以看到创建好的访问配置页面,接下来就需要为用户去授权对应的账号内相应的权限。
如上图所示,可以基于已有的职能账号,为目标员工用户授权。比如为Alice这个用户授权在勾选的3家子公司当中网络管理员的角色配置。当然也可以选择相应的用户组来为组成员进行批量授权。
开始配置之后,云SSO产品就会自动的帮你在成员账号内去创建对应的用户角色,并为这些角色授予对应的网络管理员权限。
同时,如上文介绍,我们可以在数据类产品中创建同步用户,通过RAM用户的方式去登录这个成员账号。举个例子,仍然为Alice在账号中配置一个大数据产品的同步用户。这里所涉及的冲突和删除规则请通过文档具体了解。
下面展示一下通过以上的配置之后,Alice登录后所看到的界面是什么样的。
如果在设置栏里将单点登录关系开启,就可以使用企业IDP进行相应的登录。登录时,页面会提示是否跳转到对应企业账号进行登录,点击跳转并通过企业账号进行登录。
当企业员工在自己的IDP登录界面上完成登录后,认证完成后就会自动跳转到云SSO的登录门户。在这个门户界面下,可以看到此员工配置的每一个访问成员账号及账号内拥有的角色身份。
选择其中的一个角色身份,即可登录到相应的成员账号内。由于我们配置过RAM用户同步,所以这个用户同时拥有一个可以访问RAM用户的身份。如果用这个用户身份登录,可以在界面的右上角看到,这个RAM用户身份适用于不同的访问场景。