概述
身份管理和访问控制是Landing Zone的基础模块之一。在企业在上云之初,应该首先考虑如何设计和落地身份管理和访问控制方案,而不是创建云资源。这样做的好处是:
- 确保对云资源的任何访问都使用适当的身份,且每个身份拥有“最小够用”(既不过大,也不过小)的权限。
- 确保从不同网络环境、设备、地理位置发起的对云资源的访问都是安全的。
- 当身份、权限发生变化(如新增用户,用户职责发生变化,员工离职、转岗等)时,可以做到持续管理,降低配置难度和管理成本,避免信息泄漏、误操作等风险。
在阿里云,我们使用访问控制(RAM)等产品和服务来实现身份管理与访问控制的能力。RAM概览
方案示例
在上云规划过程中,X公司识别出有下列身份需要对云资源进行访问。
身份类型 | 权限需求 |
---|---|
超级管理员 | 10人的云管理团队,其成员需要拥有对云治理服务(如身份、权限、资源、合规、安全、网络、监控、备份等)的管理权限,无需拥有对计算、存储等业务所需资源的直接管理权限,但在需要时可以接管控制权。该团队还可以细分为财务管理员、安全合规管理员、网络管理员、数据库管理员等角色,侧重于云治理框架中某一方面的管理工作。 |
企业员工 | 各业务团队成员,他们需要使用归属于本部门的云资源进行开发、测试、运维等工作,一般不允许访问其他部门的资源,但如果出现跨部门合作,也应该可以被授权访问其他部门的资源。 |
企业外部人员 | 部分业务团队,需要合作伙伴获取本部门少量资源的读写权限。 |
企业客户 | 有些业务部门开发的应用提供代客户保存数据的服务,其业务场景需要允许客户直接访问由客户上传,但保存在企业的云存储中的数据。 |
为了满足上述需求,X公司按照“最小够用”原则,对所有身份进行精细化权限管理:
- 对于超级管理员、企业员工
使用RAM的“单点登录”(Single Sign On, SSO)功能,将阿里云身份系统与企业自有身份系统打通,实现单点登录,并要求所有访问云资源的超级管理员、企业员工等使用SSO登录阿里云。
- 对于企业外部人员
- 长期使用者,在企业身份系统中创建用户,采用同样的单点登录措施。
- 临时使用者,在需要访问的云账号中创建RAM角色并授予带时间限制的有限资源访问权限,允许其使用自己持有的云账号进行角色切换登录。
- 对于企业客户
每次客户需要访问云资源时,由企业应用程序为其生成短时有效的安全访问令牌(STS Token),供客户在应用程序内使用。
我们用一个图更直观地说明上述精细化权限管理方案。
其中,身份集成部分的设计逻辑如下图所示。
方案设计思路
下面我们详细说明身份管理和访问控制模块的设计思路。
身份管理针对超级管理员、企业员工和需要长期使用企业云资源的外部人员,应使用企业自有的身份系统,以外部身份凭证登录阿里云。与只使用由云平台颁发的身份凭证相比,这样做有着诸多优势,包括:
- 企业员工可以使用同样的用户名和密码登录企业自身应用和云平台。
- 根据用户在企业身份系统中的指定属性,例如:根据其所属的组,来对应在云上不同账号、不同资源的操作权限。
- 当员工转岗、离职时,只需要在本地进行转移组、删除等操作,即可解除其在云上的权限,不会造成信息泄露。
在各类外部身份凭证中,最常用的是由企业自有的身份系统(Identity Provider, IdP)提供的基于SAML 2.0协议的身份凭证。阿里云提供基于SAML 2.0协议的SSO能力,以满足企业使用外部身份凭证登录阿里云的需求。根据登录后转换成的云平台身份不同,SSO又可以分为用户SSO和角色SSO两种。详细信息,请参考SSO概览。
我们建议企业客户使用角色SSO,并将企业IdP中的用户组映射到阿里云RAM角色,从而实现对企业内外部员工的有效管理。
下面简要介绍企业对使用云资源的人员进行身份集成管理的工作模式。
准备自有IdP企业需要首先准备自有IdP,才能完成SSO配置。企业应做如下考虑:
- 如果企业已经具有支持SAML 2.0协议的身份管理系统,如Azure AD,ADFS或企业自建IdP,可以直接用来与阿里云RAM进行SSO配置。
- 对跨国企业、除云资源外还有其他云上应用需要访问的企业、需要与钉钉进行集成的企业等,可以考虑购买Okta、阿里云IDaaS服务等云上IdP服务。
- 对希望快速搭建IdP并开始使用的企业,可以考虑用开源软件如KeyCloak、Shibboleth搭建IdP,也可以参考简单的开源实现。
在上云初期,企业需要进行一次性的初始化身份集成配置,主要步骤包括:
- 在IdP配置一个与阿里云进行角色SSO的应用。
- 为该应用分配使用的用户和用户组。
- 根据阿里云角色SSO配置要求进行SAML属性配置。
- 在每个阿里云账号中配置身份提供商。
- 测试配置结果。
在企业新增或移除阿里云账号时,需要相应进行SSO配置修改,包括如下:
- 根据IdP的SAML属性配置方式不同,可能需要进行配置修改,或重新分配用户与用户组。
- 在新增账号中配置身份提供商。
- 在移除账号中删除身份提供商。
当企业发生访问云资源的人员配置(新增用户,删除用户,变更用户权限)时,通常不需要进行SSO配置修改,只需要对用户和用户组进行操作,包括如下:
- 新增用户时,应在IdP中将其加入到已经配置了SSO访问的用户组。
- 删除用户时,可以直接删除即可,IdP通常会自动移除其访问权限。
- 用户权限发生修改时,应修改其用户组配置。
访问控制
阿里云实现了基于属性的访问控制(Attribute Based Access Control, ABAC),这是一种权限描述能力强,可感知访问上下文以进行精细权限管理的先进访问控制机制。当客户请求到达阿里云时,阿里云将评估当前访问的请求特征、身份特征、资源特征,并与身份所配置的权限进行匹配,从而完成鉴权。每个云产品支持的身份和访问控制粒度可以参见支持RAM的云服务和支持STS的云服务。
针对大部分人员用户来说,可以根据其职责进行较粗粒度的权限划分即可,一个企业通常针对如下几种角色进行权限设计:
- 全局云管理员:拥有企业在阿里云上资源的全部权限。
- 网络管理员:拥有对各类网络产品的管理权限。
- 数据库管理员:拥有对各类云上数据库的管理权限。
- 监控管理员:拥有云监控、应用实时监控等服务的管理权限。
- 安全管理员:拥有全部安全产品的管理权限。
- 合规管理员:拥有合规相关产品的管理权限。
- 日志管理员:拥有日志服务的管理权限。
- 日志查看者:拥有读取日志的权限。
- 应用管理员:只拥有某个应用所对应的资源权限。
- 普通用户:不具备任何云上资源访问权限,只在必要时进行单个权限点授权。
同时,还需要根据人员访问条件进行限制:
- 所有人员必须在企业内网访问云资源(使用IP限制策略)。
- 对于临时身份,同一种应用场景可以只使用一个RAM角色,但针对每个会话授予单个资源、具有访问时间限制的权限,以确保权限最小化。