基于SAML2.0协议的企业身份提供商IdP多级授权CAM/TVM解决方案
本方案介绍了一种基于SAML2.0协议的IdP(企业身份提供商)多级授权管控方案,包括Cloud Access Management和Token Vending Machine两部分。帮助企业在规划验证,迁移上云的过程中更安全,更高效地统一管理身份权限。
方案概述

当企业计划上云的验证准备过程和正式迁云过程中,会面临各种复杂的身份认证和权限分配的管理问题。尤其是对于大规模集团型企业,存在不同的业务主体和合作关系,需要对众多的云账号进行统一的纳管和多级授权。
本文档则介绍了一种基于SAML2.0协议的IdP(企业身份提供商)多级授权管控方案,包括Cloud Access Management和Token Vending Machine两部分。帮助企业在规划验证,迁移上云的过程中更安全,更高效地统一管理身份权限。
方案优势
离散多账号统一管控的多级授权模型
可以纳管任意的不同业务主体的云账号,再进行云账号级别的二级授权管控。同时可以纳管在云账号下的角色Role,再进行角色Role级别的二级授权管理。
减少长期AccessKey的泄露风险敞口
使用STS Token临时密钥方案来替代长期的AccessKey的使用,减少长期的AccessKey的使用范围和频度,从而减少长期AccessKey泄露的风险敞口。提高安全性。
严格的安全合规审计
进行严格的代码漏洞筛查和合规审计的检查,确保从开发设计,测试,上线,文档,验收的所有核心流程的安全合规的高标准交付,确保客户的数据安全和规范操作。
开源版本、支持定制二次开发
企业可基于源码进行二次开发,依据企业自身的需求,定制更强大,功能更丰富的模块。
客户场景
身份权限的统一分级授权、SSO单点登录
场景描述
对企业存在的多账号进行统一的收编纳管,并进行分级授权,通过配置化的方式,实现基于Role的SSO单点登录。
适用客户
- 有企业身份提供商IdP系统,希望共用IdP身份认证信息,使用角色SSO进行单点登录(可扩展为用户SSO)到阿里云Console。
- 集团型企业,有分级授权需求,统一收编管控,再细分授权管理。
使用STS Token进行程序访问
场景描述
使用STS Token替代长期AccessKey的使用,用于开发,日常,测试,预发及生产联调等场景,减少长期AccessKey的使用范围和频度,降低长期AccessKey的泄露风险敞口。
适用客户
- 对程序访问的安全合规有较高要求的企业。
客户案例
客户背景
某跨国集团公司X,是全球电子电气工程领域的领先企业,同时深耕中国市场百余年。
客户痛点
跨国集团型企业,总部和中国大区总部,以及大区的子公司和生态公司在内,在阿里云有100+注册账号,且业务形态也不尽相同。由于中国大区需要符合中国的等保合规,信息安全法,个人信息保护法等约束条件,但同时又需要符合全球总部的高标准的合规审计要求。中国大区总部希望在符合全球总部合规审计要求的前提下,统一管控中国区云资源,统一付费,然后分级授权给子公司和生态公司,再针对服务项征收相应服务费。同时对于程序访问,希望提供临时访问凭据的方案,在非必要情况下,减少长期AccessKey的使用。
实施方案
- 中国大区总部负责功能定制,IT私有化部署,迁移方案准备,项目验收,发布上线
- 中国大区总部对纳管的子公司或生态公司,进行账号纳管初始化操作,预置RAM用户和系统管理角色Role
- 子公司或生态公司,针对中国大区总部的迁移方案逐步分批纳管企业身份提供商IdP人员,再分配细分角色Role给具体的人员
- 子公司或生态公司人员使用企业身份提供商IdP的认证方式登录到CAM/TVM,选择被分配的角色Role登录到阿里云Console
客户收益
- 实现对任何离散云账号的多级授权管控,统一纳管。
- 使用STS Token临时访问凭据,减少AccessKey泄露的风险敞口。
方案架构
1. 身份账号治理整体架构

图:整体业务架构图
2.横向预置分组和角色
预置横向分组
横向分组默认通过标准命名规范来自动进行聚合查询,但存在命名不规范的情况。在命名不规范的时候,需要通过追加的方式实现聚合查询。所以横向分组本质上是一对多分组,在一对多分组的前提下,提供标准命名规范配置项来实现自动聚合,最终的分组元素集合是一对多选配角色+标准命名规范配置项的并集。
横向分组不能被其他账号删除,仅可被超级管理员管理。
预置角色操作限制
CAM/TVM和阿里云控制台的预置角色,不能被其他账号删除,仅可被超级管理员管理。
预置企业级权限角色(示例)
·企业权限管理员:可以为账号分配账号权限管理员权限,可以查看所有账号下的角色对应那些人员,角色名字为ent_IAM_admin
·企业管理员:拥有所有账号所有权限,角色名字为cloud-super-admin
·企业安全管理员:拥有所有账号只读权限, 角色名字为cloud-security-admin
·企业商务管理员:只拥有所有账号账单权限, 角色名字为cloud-business-admin
·企业网络管理员:只拥有所有网络相关权限 角色名字为cloud-network-admin
预置账号级权限角色(示例)
·权限管理员:为本账号的预定义角色分配用户account_IAM_admin,创建角色并为角色分配策略
·资源管理员:可以申请,更改,删除任何云上资源,例如ECS,RDS等,但是对于网络资源例如VPC,交换机,商务等相关资源只有只读权限,因为网络需要由IT统一管理account_resource_admin
·用户商务管理员:只能查看资源账号的费用情况account_business_readonly
·用户安全管理员:只读查看所有资源账号下的资源情况,并且接受安全报告account_security_admin
3.部署架构

1.企业身份提供商IdP使用SAML 2.0协议同CAM/TVM系统进行身份认证,CAM/TVM系统使用Https协议提供服务;
2.DNS解析使用主DNS+辅助DNS的Failvoer架构,高可用性;
3.接入层使用私网SLB服务+弹性公网EIP组合,高扩展性,双可用区负载横向扩容容灾,可选配WAF防火墙,附带安全组策略,根据实际需要配置看是否限定访问策略;
4.服务层使用私网ECS裸机多可用区部署,横向扩容。根据实际情况配置;通过vswitch虚拟交换机接入SLB服务;附带安全组策略和白名单控制访问对象,保证数据安全;
5.数据缓存使用Redis双可用区主从架构,交叉部署,双可用区容灾;
Redis仅存储用户登录态Session信息数据;可通过设置白名单和安全组控制访问对象,保证数据安全;
5.数据层使用RDS高可用版本,RDS开启传输层加密,使用表级别TDE透明加密。通过设置白名单,安全组和ssl加密,保证数据安全。
6.SAML 2.0协议的证书管理统一使用KMS托管
产品费用及名词
产品费用
|
产品名称 |
产品说明 |
产品费用 |
|
资源目录RD |
资源目录RD(Resource Directory)是阿里云面向企业客户提供的一套多级账号和资源关系管理服务。 |
免费,详情参见产品定价。 |
|
云服务器ECS |
云服务器ECS(Elastic Compute Service)是一种简单高效、处理能力可弹性伸缩的计算服务。帮助您构建更稳定、安全的应用,提升运维效率,降低IT成本,使您更专注于核心业务创新。 |
收费,详情参见产品计费。 |
安全性
- 主账号预置保留的高危权限RAM账号须妥善保管,原则上不允许删除。
- 预置的系统角色Role原则上不允许删除。
- 私钥证书须妥善保管,必要时定期轮转。
注意事项
- 方案的部署架构中提供的是最小高可用方案,企业可根据自身需求调整。
实施步骤
实施准备
- 确保已经开通RAM访问控制服务,并了解基本的SAML2.0协议和单点登录SSO原理。
- 有基本的阿里云云产品服务的运维常识和运维能力,对付费类型选择和产品选型有一定认知基础,可根据企业自身需要选配资源规格。
操作步骤
1.私有化部署
|
Public Cloud Resources Deployment |
||
|
Step Number |
Action |
Additional step |
|
1 |
Create VPC |
|
|
2 |
Create vSwitch |
|
|
3 |
Create ECS in 2 AZ |
create snapshot policy |
|
4 |
Create KMS |
create default KMS |
|
5 |
Create RDS |
primary AZ is K and standby AZ is H |
|
6 |
Create Redis |
primary AZ is H and standby AZ is K |
|
7 |
Create SLB |
|
|
8 |
Create EIP |
eip for SLB |
|
9 |
Add EIP to SLB |
|
|
10 |
Create SSL certification |
apply SSL cert |
|
11 |
Upload cert file |
Upload SSL cert to alicloud |
|
12 |
Configure SLB port listening |
|
|
13 |
Reset default ECS passphase |
|
|
14 |
Login verification |
|
|
15 |
ECS network test |
|
|
16 |
Create NAT |
create SNAT |
|
17 |
Create SNAT |
|
|
18 |
Setup Bastionhost instance |
Add ECS |
|
19 |
WAF? |
Need to check with CYS and PRA document |
|
Application Level Deployment |
||
|
Step Number |
Action |
Additional step |
|
20 |
Create OSS bucket |
2buckets -front OSS and backend OSS |
|
21 |
Front-End Compile |
5 front-end files,refer app structure |
|
22 |
Upload Front-End file |
Upload related 2 files into front-end OSS bucket.index.js &index.css |
|
23 |
Change index.html |
Based on OSS bucket address, change souce code |
|
24 |
Backend Compile |
Compile backend file (will create siemens.jar file)and upload to backend OSS bucket |
|
25 |
Init RDS database |
Create a database and a super admin user |
|
26 |
Create database table by SQL script |
Modify SQL creation files,add user gid and master account id (node) |
|
27 |
Set security group |
|
|
28 |
Upload configuration file and operation script |
Modify configuration file and operation script by local and upload into OSS bucket |
|
29 |
Create private key and p12 cert |
can be refered from Ali implementation document x.x part |
|
30 |
Upload private key and p12 cert file in to KMS |
can be refered from Ali implementation document x.x part |
|
31 |
KMS AK/SK |
can be refered from Ali implementation document x.x part |
|
32 |
SAML(myID) metadata |
Download metadata xml file from siemens interna https://connect.auxmyid.siemens.com/ and upload into OSS, config address into application.yml |
|
33 |
Upload Ali TVM&CAM cert file |
Upload cert file into myID system and rollout |
|
34 |
Get myID certification file |
Copy myID cert file info and create a myid.cert, upload to OSS bucket |
|
35 |
||
|
36 |
Upload CAM&TVM app jar and configuration yml, myID cert(3 files) into OSS bucket |
wget https://siemens-daily.oss-cn-beijing.aliyuncs.com/siemens.jar |
|
37 |
Prepare JDK fille |
jdk-8u301-linux-x64.tar.gz |
|
38 |
Upload deploy.sh stop.sh,start.sh |
modify deploy.sh that application ops script and upload deploy.sh/stop.sh/start.sh to OSS buckte |
|
39 |
use Bastionhost to operation and maintantence |
|
2.账户管理-用户管理
用户管理的核心功能是维护合法的用户集合,提供新增、删除、修改相关的操作。用户管理具有单一职责,只进行IdP系统用户的合法同步,用户列表中的用户集合是IdP系统的真子集,最佳实践为仅对真正有登录阿里云需求的IdP用户进行录入,遵循最小权限分配原则。
在CAM系统中提供了用户管理的功能,包括:个人信息更新/Owner(超管)创建用户/Owner(超管)更新用户/超管删除用户。每个用户都是独立个体,同MyID系统中的用户一一对应,通过SALM 2.0协议交互,严格校验。

2.1)创建用户
Owner和超管可以创建用户。需要填写用户别名、GID、邮箱、描述信息,系统验证GID和用户别名,不允许重复。

2.2)修改用户
Owner和超管可以修改用户别名、邮箱、描述信息,GID作为唯一标识创建后不可修改。系统验证用户别名,不允许重复。

2.3)删除用户
只允许超管删除用户,点击用户对应的“删除”按钮,删除用户(系统先验证是否存在其他组或关联关系里,如果存在,需要先移除关系再删除)

2.4)个人信息更新
用户本人可以根据需要修改用户个人信息。可以修改用户别名、邮箱、描述信息,系统验证GID和用户别名,不允许重复。

3.账户管理-账号运维
账号运维核心功能是对结点组织结构,纳管的阿里云账号关联信息,以及授权用户进行阿里云账号访问控制等的管理功能集合。
结点分为管理结点和账号结点。用户对结点组织结构的管理,需要通过已有管理权限的Owner或超管进行显示授权。授权方式为超管或结点Owner对结点运维人员集合Owners的配置,从用户池中选择添加进行授权或从结点Owners中移除,回收权限。在Owners中指定的用户均为结点运维职责的人员,至少存在一个用户,对结点的生命周期负责(销毁需要超管权限)。
不在结点的Owners集合中的用户均为普通用户,普通用户可以被对应结点Owner授权为管理角色或授权登录阿里云Console。
总计共有五个模块:账户信息、用户组、系统Role,自定义Role和横向Role配置表。
管理结点视角包含账户信息,用户组(管理结点下横向多对多用户组,和账号结点下系统Role一对一的用户组),云账号下的系统Role,及管理结点下的横向Role配置表四个模块。
账号结点视角包含账户信息,用户组(账号结点下自定义Role一对一的用户组),云账号下自定义Role三个模块。
3.1)管理结点相关账号运维职责
Root管理结点为Master Account(超管结点),最佳实践推荐开启资源目录,关联对应的资源目录中的MA云账号UID,并配套提供Terraform自动化工具,进行相关基于身份提供商IdP的Role预置初始化操作。CAM系统中管理的账号结点的最佳实践,推荐和资源目录管理的账号结构保持对应的逻辑关系,但非必须一致,可根据业务需要选择是否启用资源目录。
管理结点核心功能为结点组织结构维护,结点运维人员Owner分级授权管理和横向系统Role分级授权管理。
管理结点的Owner具有超管权限,主要包含:
1) 结点组织结构树的维护
2) 对当前管理结点和所有子级结点指派Owner管理员;
3) 可以对子级账号结点进行系统Role的管理;
4) 可以横向聚合授权系统Role。
a.结点组织结构树的维护功能提供创建账号结点和文件夹,并维护结点的信息。


b.结点运维人员Owner分级授权管理,通过创建子级结点时添加/删除Owner来授权用户管理结点。或在已经关联的结点信息中维护Owner列表。

c.子级云账号的预置系统Role的管理,云账号级别的系统Role授权等


d.横向Role分级授权管理,创建横向的Role管理通过配置正则实现的横向Role及多对多的用户组关联实现。
横向Role分级授权只具有筛选和自动聚合功能,具体的横向系统Role需要在对应的账号结点的系统Role中进行配置,最佳实践配合Terraform脚本初始化创建系统Role,并配置系统Role的前缀prefix。或者通过手动的方式自行创建系统Role。系统Role的管理需要超管权限。


3.2账号结点相关账号运维
账号结点账号结点关联云账号UID,非Ram子用户UID。
同管理结点不同的是账号结点只有当前账号相关的管理职责,维护当前账号的信息,添加自定义的Role,并对自定义的Role进行授权管理。用户组和自定义Role只具有一对一的关系。账号结点的Owner对系统横向的管理不具有可见性,也不可操作。
账号结点核心功能为纳管云账号信息维护,账号结点运维人员Owner授权管理和维护云账号下自定义角色Role授权管理。
账号结点的Owner具有账号管理权限,主要包含:
1) 云账号信息维护,对当前云账号结点指派Owner管理员;
2) 对当前纳管云账号进行自定义Role的管理;
3) 对自定义Role进行用户登录阿里云Console的授权。
a.云账号信息维护,对当前云账号结点指派Owner管理员

b.对当前纳管云账号进行自定义Role的管理

c.对自定义Role进行用户登录阿里云Console的授权

4.阿里云Console登录
普通用户首先使用员工卡+PIN Code,登录MyID系统,点击登录TVM系统之后可以看到自己拥有的所有账号下的角色。用户登录列表被授权的权限,为所有结点Owner管理员分配给当前登录用户的角色Role的权限集合。
4.1)用角色登录阿里云控制台
用户选择相应角色,SSO登录阿里云控制台。

4.2)获取阿里云CLI/API Token
用户点击获取Token按钮,可以查看或下载Token信息。

5.操作审计
登录用户所有的API操作及参数的日志记录。可根据时间,类型,操作人员GID进行查询。
