创建 Azure AD Enterprise Application
- 下载 AWS China SAML 元数据文件:https://signin.amazonaws.cn/static/saml-metadata.xml。
- 登录 Azure Portal,激活 Application Administrator 角色(如有必要)。
- 点击 Azure Active Directory > Enterprise applications > New application。
- 搜索 AWS Single-Account Access,选中后输入应用名称如
AWS China
,点击 Create。 - 等待应用创建完成,点击 Single sign-on > SAML > Upload metadata file > Select a file。
- 上传刚才下载的 SAML 元数据文件,点击 Add > Save,随即返回 Single sign-on 配置页面。
- 在 Attributes & Claims 步骤中点击 Edit > Add new claim,输入以下内容并点击 Save:
- Name:
http://schemas.xmlsoap.org/ws/2005/identity/claims/nameidentifier
Source attribute:user.userprincipalname
- Name:
- 确认以下 Claims 是否存在,如不存在则按照相同的方法创建:
- Name:
https://aws.amazon.com/SAML/Attributes/Role
Source attribute:user.assignedroles
- Name:
https://aws.amazon.com/SAML/Attributes/RoleSessionName
Source attribute:user.userprincipalname
- Name:
https://aws.amazon.com/SAML/Attributes/SessionDuration
Source attribute:900
- Name:
- 返回 Single sign-on 配置页面,在 SAML Certificates 步骤中下载 Federation Metadata XML。
配置 AWS China IAM Provider & Role
- 登录 AWS Console,点击 IAM > Identity providers > Add provider。
- 输入 Provider name 如
AzureAD
,点击 Choose file 上传刚才下载的 XML,点击 Add provider。 - 点击 Roles > Create role > SAML 2.0 federation,选择刚才创建的
AzureAD
作为 Provider。 - 选择 Allow programmatic and Amazon Web Services Management Console access。
- 点击 Next,选择 Permissions policies 如
SystemAdministrator
。 - 点击 Next,输入 Role name 如
SysAdmin
,点击 Create role。
配置 Azure AD Enterprise Application
- 返回 Azure Portal,点击 Azure Active Directory > App registrations > All applications。
- 搜索并打开应用
AWS China
,点击 App roles > Create app role。 - 输入 Display name 如
SysAdmin
,选择 Users/Groups 作为 Allowed member types。 - 输入 Value,格式为 AWS China IAM Role ARN 逗号 AWS China IAM Provider ARN,如
arn:aws-cn:iam::123456789012:role/SysAdmin,arn:aws-cn:iam::123456789012:saml-provider/AzureAD
。 - 输入 Description 如
SysAdmin
,点击 Apply。
如需在一个应用中集成多个 AWS China 账户与 IAM Role,则重复上述步骤创建多个 App Role。
分配应用权限并测试 Azure AD SSO
- 返回 Azure Active Directory > Enterprise applications,搜索并打开应用
AWS China
。 - 点击 Users and groups > Add user/group,搜索当前用户并点击 Select > Assign。
- 点击 Single sign-on,在 Test single sign-on with AWS China 步骤中点击 Test > Test sign in。
Azure AD SSO 与 AWS CLI 的集成
- 下载并安装 Node.js:
- 通过 npm 安装 aws-azure-login:
1
npm install -g aws-azure-login
- 创建 AWS CLI 配置文件:
1
notepad "$env:USERPROFILE\.aws\config"
- 复制如下内容并根据实际情况进行修改,随后保存配置文件:
1
2
3
4
5
6
7
8[profile sysadmin]
region=cn-north-1
azure_tenant_id=252e61b2-75d3-4c0e-b7ee-0804af693f28
azure_app_id_uri=urn:amazon:webservices:cn-north-1
azure_default_username=parasol@waddledee.com
azure_default_role_arn=arn:aws-cn:iam::123456789012:role/SysAdmin
azure_default_duration_hours=12
azure_default_remember_me=true- azure_tenant_id 和 azure_app_id_uri 的值可以在 App registrations > Overview 找到。
- 将 azure_default_remember_me 的值设为 true 即可使用浏览器 Cookies 作为登录凭据。
- 首次登录时需要输入密码并批准 MFA 验证:
1
2
3
4
5
6PS C:\> aws-azure-login --profile sysadmin --no-prompt
Logging in with profile 'sysadmin'...
Using AWS SAML endpoint https://signin.amazonaws.cn/saml
? Password: [hidden]
Open your Microsoft Authenticator app and approve the request to sign in.
Assuming role arn:aws-cn:iam::123456789012:role/SysAdmin - 再次登录时即可通过浏览器 Cookies 跳过密码和 MFA 验证:
1
2
3
4PS C:\> aws-azure-login --profile sysadmin --no-prompt
Logging in with profile 'sysadmin'...
Using AWS SAML endpoint https://signin.amazonaws.cn/saml
Assuming role arn:aws-cn:iam::123456789012:role/SysAdmin
- 下载并安装 Docker Engine:
- 拉取 Docker 镜像并挂载到 AWS CLI 配置文件目录:
1
docker run --rm -it -v ~/.aws:/root/.aws sportradar/aws-azure-login
- 下载 docker-launch.sh 方便之后直接调用 aws-azure-login:
1
2sudo curl -o /usr/local/bin/aws-azure-login https://raw.githubusercontent.com/sportradar/aws-azure-login/main/docker-launch.sh -L
sudo chmod o+x /usr/local/bin/aws-azure-login - 创建 AWS CLI 配置文件:
1
sudo nano .aws/config
- 复制如下内容并根据实际情况进行修改,按 Ctrl+X 保存并退出,按 Y 确认,按 Enter 返回命令行:
1
2
3
4
5
6
7
8[profile sysadmin]
region=cn-north-1
azure_tenant_id=252e61b2-75d3-4c0e-b7ee-0804af693f28
azure_app_id_uri=urn:amazon:webservices:cn-north-1
azure_default_username=parasol@waddledee.com
azure_default_role_arn=arn:aws-cn:iam::123456789012:role/SysAdmin
azure_default_duration_hours=12
azure_default_remember_me=true- azure_tenant_id 和 azure_app_id_uri 的值可以在 App registrations > Overview 找到。
- 将 azure_default_remember_me 的值设为 true 即可使用浏览器 Cookies 作为登录凭据。
- 首次登录时需要输入密码并批准 MFA 验证:
1
2
3
4
5
6$ aws-azure-login --profile sysadmin --no-prompt
Logging in with profile 'sysadmin'...
Using AWS SAML endpoint https://signin.amazonaws.cn/saml
? Password: [hidden]
Open your Microsoft Authenticator app and approve the request to sign in.
Assuming role arn:aws-cn:iam::123456789012:role/SysAdmin - 再次登录时即可通过浏览器 Cookies 跳过密码和 MFA 验证:
1
2
3
4$ aws-azure-login --profile sysadmin --no-prompt
Logging in with profile 'sysadmin'...
Using AWS SAML endpoint https://signin.amazonaws.cn/saml
Assuming role arn:aws-cn:iam::123456789012:role/SysAdmin