作者:bennett
链接:https://www.zhihu.com/question/464250144/answer/1933066403
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
正好最近在项目中也遇到了同样的问题,这个问题可以使用云上的身份管理系统来解决,本质上是实现一个多平台之间的单点登录;我是通过腾讯数字身份管控平台来实现的,以下用我的一个实际配置过程作为参考。
1、基本思路
基本的思路是这样:首先基于腾讯数字身份管控平台来建立用户的身份信息(同时腾讯也支持通过导入/同步本地用户的方式从本地LDAP/AD/企业微信来获取用户身份信息),然后将用户的身份信息与各个云平台和各个云应用建立访问关系,同时将用户的权限配置(比如角色)添加到云平台/云应用上,这样可以实现用户使用同一个身份在腾讯数字身份管控平台上进行登录,然后用户可以以配置好的身份权限“单点登录”到各个云平台和云应用中去。
2、各个云平台配置举例
2.1 腾讯云
2.1.1 IAM侧配置
1、创建应用
1)进入控制台>应用管理,点击新建应用
2)选择SAML模板,点击下一步
3)填写应用基本信息
Idp Entity ID:账号认证的服务方,如eiam作为IDP,主要就是完成认证,默认为"tencent_idp",管理员可修改。
SP Entity ID:向用户提供商业服务的软件(比如腾讯云),此次填入http://cloud.tencent.com。
SP ACS URL:应用的SAML协议登录路径,此处填写https://cloud.tencent.com/login/saml
SP登出地址:应用认证成功后的跳转地址,此处填写https://cloud.tencent.com
Assertion Attribute:选择用户基本信息传递给SP服务提供商(比如腾讯云),如手机号码、邮箱地址、用户昵称、用户名称,此处可以不用填写。
自定义属性:单点登录腾讯云需要的传递的基本属性信息。
1)第一个属性
KEY值: https://cloud.tencent.com/SAML/Attributes/Role
VALUE值:qcs::cam::uin/1000200:roleName/TestProviderRoleEiam,qcs::cam::uin/1000200:saml-provider/eiam
2)第二个属性
KEY值:https://cloud.tencent.com/SAML/Attributes/RoleSessionName
VALUE值:TestProviderRoleEiam
备注:uin是的腾讯云账号ID,从腾讯云账号信息中获取;roleName对应腾讯云创建的角色名称;saml-provider,对应腾讯云创建的服务提供商名称;RoleSessionName对应腾讯云角色昵称。
4)填写好上述内容后,点击完成,应用即创建完成。然后点击应用配置>导出IDaaS SAML元配置文件。
5)点击后,浏览器自动打开XML文件,单机鼠标右键,选择存储为对于的的目录下即可
2、应用授权
1)在EIAM中点击应用管理 >授权管理。
2)可以将应用授权给组织机构、用户组、用户。
3)点击新增授权,选择腾讯云。
4)点击下一步,选择需要授权的用户。
5)点击保存,即可完成腾讯云对该用户的授权。
6)用户在登录门户网站后,即可查看到腾讯云应用,点击即可登录腾讯云控制台。
2.1.2 配置腾讯云
1、腾讯云进入用户昵称触发下拉菜单 > 访问管理页面 > 左侧导航栏选择身份提供商,点击蓝色按钮「新建身份提供商」。
此处需要上传刚才下载的 SAML 元数据文档 XML 文件。提供商名称需要填入刚才在EIAM 自定义属性saml-provider的值,本示例中为eiam。
2、上传后点击下一步。
3、在审阅页面点击「完成」。
4、从腾讯云进入用户昵称触发下拉菜单 > 访问管理页面 > 左侧导航栏选择角色,点击蓝色按钮「新建角色」,在弹出的窗口中选择身份提供商。
5、选择刚才创建的身份提供商:eiam,勾选「允许当前角色访问控制台」。
6、点击「下一步」。
在角色权限配置页面选择授予此身份提供商的权限,这里选择 Administrator 权限,即全权访问。
7、点击「下一步」。
在审阅页面,输入角色名称并记住,此示例中值为自定义属性的值,此示例中值TestProviderRoleEiam
8、点击下方「完成」,即可完成腾讯云的配置。
2.2 阿里云
2.2.1 用户SSO
1、IAM平台新增应用
登录阿里云,创建ram账户,获取获取阿里云账号ID
新增saml类型的应用,填入信息如下:
SP Entity ID 的账号值替换成对应的阿里云账号ID
2、阿里云配置
登录阿里云控制台,打开访问控制,创建新用户
为用户添加权限(以AdministratorAccess为例子)
进入左侧菜单 > SSO 管理 (opens new window),右侧页面点击「用户 SSO」选项卡,在下方 SSO 登录设置处点击「编辑」。
SSO 功能状态选择「开启」。点击「上传文件」,上传刚刚在IAM下载的 SAML IdP Metadata。点击「确认」。
3、在IAM平台创建用户,用户名要与阿里云的ram账户全称保持一致
4、登录阿里云控制台,输入租户域名
跳转到IAM登录入口,输入正确用户名密码后,成功登录进入阿里云控制台
2.2.2 角色SSO
1、创建创建身份提供商
使用阿里云账号登录RAM控制台
在左侧导航栏,单击SSO管理, 在角色SSO页签,单击创建身份提供商
在创建身份提供商面板,输入身份提供商名称和备注
在元数据文档区域,单击上传文件,上传从企业IdP获取的元数据文档
单击确定
2、创建RAM角色,并绑定
3、在IAM创建saml应用,配置信息如下:
注意,自定义属性https://www.aliyun.com/SAML-Role/Attributes/Role的配置
规则:
对应例子:
4、登录阿里云控制台,输入租户域名
成功登录进入阿里云
2.3 AWS
2.3.1 IAM侧配置
1、创建SAML应用
进入控制台>应用管理,根据提示新建一个SAML类型的应用。
其中,
- SP Entity ID,固定为:https://signin.aws.amazon.com/saml
- SP ACS URL,固定为:https://signin.aws.amazon.com/saml
- Assertion Attribute,添加如下属性:
属性名:https://aws.amazon.com/SAML/Attributes/RoleSessionName
属性值:选择“用户名”或“邮箱地址”,如选择“邮箱地址”,请确保所有用户的邮箱地址都非空 - 自定义属性,添加如下属性:
属性名:https://aws.amazon.com/SAML/Attributes/Role
属性值:arn:aws:iam::<AWS 账号 ID>:role/<角色名称>,arn:aws:iam::<AWS 账号 ID>:saml-provider/<身份提供商名称>
可以先随意填写上面的 <AWS 账号 ID>、<身份提供商名称> 和 <角色名称>,待AWS IAM 控制台配置完毕后再来修改。
2、下载元配置文档
进入控制台>应用管理->对上述步骤创建的SAML应用,点击应用配置,点击“导出IDaaS SAML元配置文件”。
浏览器自动打开XML文件,单机鼠标右键,选择存储为对于的的目录下即可。
3、应用授权
进入控制台>应用管理 >对上述步骤创建的SAML应用,点击授权管理,为相关用户添加该SAML应用的访问权限。
2.3.2 AWS配置
1、创建“身份提供商”
登录AWS IAM控制台,进入访问管理->身份提供商->添加提供商。根据页面提示填写相关信息,其中,
- 提供商类型,选择“SAML”
- 提供商名称,自定义一个名称即可
- 元数据文档,导入上述 “下载元配置文档” 步骤下载的XML文件
最后点击右下方“添加提供商”即可。
2、创建“角色”
进入访问管理->角色,点击“创建角色”。
1)提供商信息
- 选择受信任实体的类型,选择“SAML2.0身份联合”
- SAML提供商,选择上述步骤创建的“身份提供商”,然后选择“允许编程和AWS管理台”
2)关联权限
根据实际需要,给当前要创建的角色赋予指定权限
3)添加标签
直接下一步即可。
4)审核
自定义角色名称,并记录下“可信任的实体 身份提供商”右侧的身份提供商ARN(如下图所示),然后点击“创建角色”即可。
3、修改SAML应用的自定义属性
1)进入AWS IAM控制台,访问管理->角色,查看上述步骤创建的角色,记录角色ARN。
2)进入IAM控制台,应用管理->对上述步骤创建的SAML应用,点击应用配置,根据所记录下来的“角色ARN”、“身份提供商ARN”,重新修改https://aws.amazon.com/SAML/Attributes/Role 属性的值。
4、验证
1)进入IAM控制台,应用管理->对上述步骤创建的SAML应用,点击应用配置,查看最下方的“SP发起地址”。
2)通过浏览器访问“SP发起地址”,跳转到IAM登录页面,输入正确的用户密码通过身份认证,进而成功跳转到AWS。
2.4 华为云
2.4.1 IAM侧配置
1、创建SAML应用
进入控制台>应用管理,根据提示新建一个SAML类型的应用。
其中,
- SP Entity ID,固定为:https://auth.huaweicloud.com/
- SP ACS URL,固定为:https://auth.huaweicloud.com/authui/saml/SAMLAssertionConsumer
- Assertion Attribute,可暂不填写,后续根据实际需求添加,并配合华为云侧“身份转换规则”,实现IAM与华为云用户之间映射。
2、下载元配置文档
进入控制台>应用管理->对上述步骤创建的SAML应用,点击应用配置,点击“导出IDaaS SAML元配置文件”。
浏览器自动打开XML文件,单机鼠标右键,选择存储为对于的的目录下即可。
3、应用授权
进入控制台>应用管理 >对上述步骤创建的SAML应用,点击授权管理,为相关用户添加该SAML应用的访问权限。
2.4.2 华为云配置
1、创建“身份提供商”
1)登录华为云控制台,进入统一身份认证->身份提供商->创建身份提供商。
2)根据页面提示填写相关信息,其中,
- 名称,自定义一个名称即可
- 协议, 选择SAML
- 状态,选择启用
3)修改身份提供商
导入上述 “下载元配置文档” 步骤下载的XML文件;
身份转换规则暂时无需编辑,即暂时使用默认规则。
2、验证
通过浏览器访问“修改身份提供上”页面中的“登录链接”,跳转到IAM登录页面,输入正确的用户密码通过身份认证,进而成功跳转到华为云。
此时,登录用户为默认规则中配置的默认邦联用户FederationUser。
3、身份转换规则配置
如果需要将IAM登录用户关联指定的华为云邦联用户,而不是以默认邦联用户FederationUser登录,则需要:
- 在IAM侧,配置SAML应用的Assertion Attribute
- 在华为云侧,配置“身份转换规则”,将IAM返回的用户属性,与华为云中的“用户名”、“用户组”等属性进行映射
身份转换规则配置,请参考https://support.huaweicloud.com/usermanual-iam/iam_08_0004.html?utm_campaign=ua&utm_content=iam&utm_term=console
2.5 其他
其实还可以配置更多的云平台/云应用,我们项目中暂时没有配置其他的应用,后续有的话,我可以再更新上来
3.最终效果
最终可以使用腾讯数字身份管控平台的统一登录门户来登录配置好的云平台/云应用,如下图所示会展示所有已经配置好的可登陆的云平台;
然后点击上图中的“阿里SAML”,将会直接进入云平台,如下图所示: