概述
通过 AWS IAM Identity Center(SSO)中的自定义 SAML 2.0 应用,将 AWS 身份联邦到阿里云(Aliyun),实现从 AWS SSO 门户一键登录阿里云控制台。
整体架构:
1
2
3
4
5
6
7
8
9
10
11
12
13
用户
│ 登录 `https://ssoins-xxxxx.portal.xxxxx.app.aws/#/?tab=applications`
▼
IAM Identity Center
│ 点击 "aliyun" 应用
▼
AWS 生成 SAML 断言(含用户属性 + 角色映射)
│ POST 到 Aliyun SAML ACS URL
▼
阿里云 RAM SAML SSO
│ SAML 断言 → 映射到 Aliyun RAM 角色
▼
获得 Aliyun 控制台访问(或 STS 临时凭证)
配置步骤
1. 开始配置 AWS 部分
IAM Identity Center -> Applications -> Customer managed -> Add application -> I have an application I want to set up -> SAML 2.0
IAM Identity Center metadata -> IAM Identity Center SAML metadata file,下载,aliyun 那边需要,一般名字叫 Custom SAML 2.0 application_ins-xxxx.xml
Application properties 不需要填
Application metadata 这个先空着,一会用 aliyun 配置填充
2. 配置 aliyun 部分
RAM 访问控制 -> 集成管理 -> SSO 管理 -> 角色 SSO -> SAML -> 创建身份提供商
元数据文档,上传刚才下载的 aws 的配置文件,点击创建
等待创建完之后,会看到一条提示:
在企业 IdP 方配置时,使用如下 SAML 服务提供商元数据 URL:
https://signin.aliyun.com/saml-role/sp-metadata.xml?tenantID=1282614300738809
将这里的内容,保存到本地的 xml 文件里,一会 aws 那边会用到
点开刚才创建的身份提供商,复制 ARN,类似:
1
acs:ram::1282614300738809:saml-provider/aws
RAM 访问控制 -> 身份管理 -> 角色 -> 创建角色 -> 身份提供商 -> 切换编辑器
主体选身份提供商,选择刚才创建的身份提供商
确定保存退出
点开刚才创建的角色,权限管理,增加需要的权限(比如 admin 权限),复制 ARN,类似:
1
acs:ram::1282614300738809:role/aws
3. 继续配置 AWS 部分
Application metadata -> Upload application SAML metadata file,选择刚才手动保存的 aliyun 的 xml 文件,点击完成。
点开刚才创建的 app -> actions -> edit config,会看到大概如下的配置信息:
1
2
Application ACS URL: https://signin.aliyun.com/saml-role/sso
Application SAML audience: urn:alibaba:cloudcomputing
actions -> edit attr map,填入如下内容:
| Attribute | Value | Format |
|---|---|---|
Subject | ${user:email} | emailAddress |
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName | ${user:email} | unspecified |
https://www.aliyun.com/SAML-Role/Attributes/Role | acs:ram::1282614300738809:role/aws,acs:ram::1282614300738809:saml-provider/aws | unspecified |
Role 属性的值格式为
<角色ARN>,<身份提供商ARN>,中间一个逗号,无空格。
保存退出
其他
SAML 适合于人工登录,不适合于做自动化,而且同一个 aws app 在 aliyun 这边是同一个身份,不能通过 aws 用户的邮箱区分,这里是一个限制。
对于需要自动化的场景,最佳实践还是 GitOps,兼顾 IaC 和多云统一管理。