

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AD FS 声明规则和 SAML 设置
<a name="adfs-claim-rule-saml"></a>

ActiveDirectory AWS Managed Services (AMS) 的联合服务 (AD FS) 声明规则和 SAML 设置

有关如何安装和配置 AD FS 的详细 step-by-step说明，请参阅[使用 Windows Active Directory、ADFS 和 SAML 2.0 启用与 AWS 的联](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)合。

## ADFS 声明规则配置
<a name="cust-have-adfs"></a>

如果您已经有 ADFS 实现，请进行以下配置：
+ 依赖方信任
+ 索赔规则 

信赖方信任和索赔规则的步骤是从 “[使用 Windows Active Directory、AD FS 和 SAML 2.0 为 AWS 启用联合身份](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)验证” 博客中介绍的
+ 索赔规则：
  + **Nameid**：每篇博客文章的配置
  + **RoleSessionName**: 按如下方式进行配置
    + **声明规则名称**：**RoleSessionName**
    + **属性存储**：**Active Directory**
    + **LDAP 属性**：**SAM-Account-Name**
    + **发出的索赔类型**：**https://aws.amazon.com/SAML/Attributes/RoleSessionName**
    + **获取 AD 组**：每[篇博客文章](https://aws.amazon.com/blogs/security/enabling-federation-to-aws-using-windows-active-directory-adfs-and-saml-2-0/)的配置
    + **角色声明**：按如下方式进行配置

      ```
      c:[Type == "http://temp/variable", Value =~ "(?i)^AWS-([^d]{12})-"]
      ```

      ```
      => issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "AWS-([^d]{12})-", "arn:aws:iam::$1:saml-provider/customer-readonly-saml,arn:aws:iam::$1:role/"));    
      ```

## Web 控制台
<a name="adfs-web-console"></a>

您可以使用以下链接访问 AWS Web 控制台，将其*[ADFS-FQDN]*替换为 ADFS 实施的 FQDN。

https://*[ADFS-FQDN]*/adfs/ls/IdpInitiatedSignOn.aspx

您的 IT 部门可以通过组策略将上述链接部署到用户群中。

## 使用 SAML 访问 API 和 CLI
<a name="api-cli-web-access"></a>

如何使用 SAML 配置 API 和 CLI 访问权限。

python 软件包来自以下博客文章：
+ NTLM：[如何使用 SAML 2.0 和 AD FS 实现联合 API 和 CLI 访问](https://aws.amazon.com/blogs/security/how-to-implement-federated-api-and-cli-access-using-saml-2-0-and-ad-fs/)
+ 表单：[如何使用 SAML 2.0 实现联合 API/CLI 访问的通用解决方案](https://aws.amazon.com/blogs/security/how-to-implement-a-general-solution-for-federated-apicli-access-using-saml-2-0/)
+ PowerShell: [如何使用 Windows 设置对 AWS 的联合 API 访问权限 PowerShell](https://aws.amazon.com/blogs/security/how-to-set-up-federated-api-access-to-aws-by-using-windows-powershell/)

### 脚本配置
<a name="script-config"></a>

1. 使用 Notepad\$1\$1 将默认区域更改为正确的区域

1. 使用 Notepad\$1\$1，为测试和开发环境禁用 SSL 验证

1. 使用 Notepad\$1\$1 配置 idpentryurl

   `https://[ADFS-FDQN]/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices`

### Windows 配置
<a name="win-rule-claim-config"></a>

以下说明适用于 python 软件包。生成的证书将在 1 小时内有效。

1. [下载并安装 python (2.7.11)](https://www.python.org/downloads/)

1. [下载并安装 AWS CLI 工具](https://aws.amazon.com/cli/)

1. 安装 AMS CLI：

   1. 下载您的云服务交付经理 (CSDM) 提供的 AMS 可发行文件 zip 文件并解压缩。

      提供了几个目录和文件。

   1. 根据您的操作**系统，打开**托管云分发文件-> CLI-> Windows** 或托管云发行文件-> CLI-> Linux/macOS** 目录，然后：

      对于 **Windows**，请执行相应的安装程序（此方法仅适用于 Windows 32 或 64 位系统）：
      + 32 位： ManagedCloudAPI\$1x86.msi
      + 64 位： ManagedCloudAPI\$1x64.msi

      **对于 **Mac/Linux**，请执行名为 MC\$1CLI.sh 的文件。**你可以通过运行这个命令来做到这一点:`sh MC_CLI.sh`. **请注意，**amscm** 和 **amsskms** 目录及其内容必须与 MC\$1CLI.sh 文件位于同一个目录中。**

   1. 如果您的公司证书是通过与 AWS 的联合身份验证（AMS 默认配置）使用的，则必须安装可以访问您的联合身份验证服务的凭证管理工具。例如，您可以使用此 AWS 安全博客[如何使用 SAML 2.0 和 AD FS 实现联合 API 和 CLI 访问来](https://blogs.aws.amazon.com/security/post/Tx1LDN0UBGJJ26Q/How-to-Implement-Federated-API-and-CLI-Access-Using-SAML-2-0-and-AD-FS)帮助配置您的凭证管理工具。

   1. 安装完成后，运行`aws amscm help``aws amsskms help`并查看命令和选项。

1. 下载所需的 SAML 脚本

   下载到 c:\$1aws\$1scripts

1. [下载 PIP](https://bootstrap.pypa.io/get-pip.py)

   下载到 c:\$1aws\$1downloads

1. 使用 PowerShell，安装 PIP

   <pythondir>。 \$1 python.exe c:\$1aws\$1downloads\$1get-pip.py

1. 使用 PowerShell，安装 boto 模块

   <pythondir\$1 scripts>pip 安装启动器

1. 使用 PowerShell、安装请求模块

   <pythondir\$1 scripts>pip 安装请求

1. 使用 PowerShell、安装请求安全模块

   <pythondir\$1 scripts>pip 安装请求 [安全]

1. 使用 PowerShell，安装 beautifulsoup 模块

   <pythondir\$1 scripts>pip 安装 beautifulsoup4

1. 使用 PowerShell，在用户配置文件中创建一个名为.aws 的文件夹 (%userprofile%\$1 .aws)

   mkdir .aws

1. 使用 PowerShell，在.aws 文件夹中创建凭证文件

   新物品凭证类型文件 —force

   凭证文件不能有文件扩展名

   文件名必须全部为小写并具有名称凭证

1. 使用记事本打开凭证文件并粘贴以下数据，指定正确的区域

   ```
   [default]
   output = json
   region = us-east-1
   aws_access_key_id = 
   aws_secret_access_key =
   ```

1. 使用 PowerShell SAML 脚本和登录

   <pythondir>。 \$1 python.exe c:\$1aws\$1scripts\$1samlapi.py

   用户名：[用户名] @upn

   选择你想担任的角色

### Linux 配置
<a name="linux-rule-claim-config"></a>

生成的证书将在 1 小时内有效。

1. 使用 WinSCP 传输 SAML 脚本

1. 使用 WinSCP 传输根 CA 证书（对于测试和开发，请忽略）

1. 将 ROOT CA 添加到受信任的根证书中（对于测试和开发，请忽略）

   \$1 openssl x509-inform der-in [certname] .cer out certificate.pem（测试和开发时忽略）

   将 certificate.pem 的内容添加到/etc/ssl/certs/ca-bundle.crt 文件的末尾（对于测试开发人员来说忽略）

1. 在 home/ec2-user 5 中创建.aws 文件夹

   ```
   [default]
   output = json
   region = us-east-1
   aws_access_key_id = 
   aws_secret_access_key =
   ```

1. 使用 WinSCP 将证书文件传输到.aws 文件夹

1. 安装 boto 模块

   \$1 sudo pip 安装启动程序

1. 安装请求模块

   \$1 sudo pip 安装请求

1. 安装漂亮的汤模块

   \$1 sudo pip 安装 beautifulsoup4

1. 将脚本复制到 home/ec2-user

   设置所需的权限

   执行脚本：samlapi.py