

# 使 SAML 2.0 联合主体能够访问 AWS 管理控制台
<a name="id_roles_providers_enable-console-saml"></a>

您可使用一个角色配置符合 SAML 2.0 标准的身份提供者（IdP）和 AWS 以允许 SAML 联合主体访问 AWS 管理控制台。该角色为用户授予了在控制台中执行任务的权限。如果您希望为 SAML 联合主体提供访问 AWS 的其他方式，请参阅以下其中一项主题：
+ AWS CLI: [切换到 IAM 角色（AWS CLI）](id_roles_use_switch-role-cli.md)
+ Tools for Windows PowerShell: [切换到 IAM 角色（Tools for Windows PowerShell）](id_roles_use_switch-role-twp.md)
+ AWS API：[切换到 IAM 角色（AWS API）](id_roles_use_switch-role-api.md)

## 概述
<a name="enable-console-saml-overview"></a>

下图说明了启用了 SAML 的单一登录的流程。

**注意**  
SAML 的这种特定用途与[SAML 2.0 联合身份验证](id_roles_providers_saml.md)中所述的更常规的用途不同，因为此工作流程将代表用户打开 AWS 管理控制台。这需要使用 AWS 登录端点，而不是直接调用 `AssumeRoleWithSAML` API。该终端节点将为用户调用 API 并返回将用户的浏览器自动重定向到 AWS 管理控制台的 URL。

![\[使用 SAML 单点登录 (SSO) 到 AWS 管理控制台\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/saml-based-sso-to-console.diagram.png)


下图说明了以下步骤：

1. 用户浏览到您的组织的门户网站，并选择转到 AWS 管理控制台的选项。在企业中，门户网站通常充当处理您企业与 AWS 之间的信任交换的 IdP。例如，在 Active Directory 联合身份验证服务中，门户网站 URL 为：`https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx`

1. 该门户网站可验证您的组织用户的身份。

1. 该门户网站生成一个 SAML 身份验证响应，其中包括识别用户身份的断言以及用户的相关属性。您也可以配置 IdP 以包含一个名为 `SessionDuration` 的 SAML 断言属性，该属性指定控制台会话的有效时间长度。您还可以配置 IdP，将属性作为[会话标签](id_session-tags.md)传递。该门户网站将此响应发送到客户端浏览器。

1. 该客户端浏览器将被重定向到 AWS 单一登录终端节点并发布 SAML 断言。

1. 终端节点将代表用户请求临时安全凭证，并创建一个使用这些凭证的控制台登录 URL。

1. AWS 将登录 URL 作为重定向发回客户端。

1. 该客户端浏览器将重定向到 AWS 管理控制台。如果 SAML 身份验证响应包含映射到多个 IAM 角色的属性，则系统将首先提示用户选择角色以访问控制台。

从用户的角度来看，整个流程以透明的方式进行：用户在您的企业的内部门户网站开始操作，在 AWS 管理控制台 结束操作，无需提供任何 AWS 凭证。

有关如何配置此行为的概述以及指向详细步骤的链接，请参阅以下章节。

## 将网络配置为适用于 AWS 的 SAML 提供商
<a name="fedconsole-config-network-as-saml"></a>

在组织的网络中，配置身份存储（例如 Windows Active Directory）以使用基于 SAML 的 IdP，例如 Windows Active Directory 联合身份验证服务、Shibboleth 等。通过使用 IdP，可以生成一个元数据文档，此文档将您的组织描述为 IdP 并且包含身份验证密钥。另外，还要将企业的门户网站配置为将访问 AWS 管理控制台 的用户请求路由至 AWS SAML 终端节点，以便使用 SAML 断言进行身份验证。如何配置您的 IdP 来生成 metadata.xml 文件取决于您的 IdP。请参阅您的 IdP 文档以获得指示，或参阅[将第三方 SAML 解决方案提供者与 AWS 集成](id_roles_providers_saml_3rd-party.md)以获得指向很多支持的 SAML 提供商 Web 文档。

## 在 IAM 中创建 SAML 提供商
<a name="fedconsole-create-saml-provider"></a>

然后，登录 AWS 管理控制台并转至 IAM 控制台。在此，您创建一个新的 SAML 提供商，这是在 IAM 中包含您的企业的 IdP 的相关信息的实体。在此过程中，您可以上传在上一节中由贵组织中的 IdP 软件生成的元数据文档。有关更多信息，请参阅 [在 IAM 中创建 SAML 身份提供者](id_roles_providers_create_saml.md)。

## 在 AWS 中为 SAML 联合主体中配置权限
<a name="fedconsole-grantperms"></a>

下一步是创建一个 IAM 角色，以在 IAM 与您企业的 IdP 之间建立信任关系。该角色必须将您的 IdP 标识为主体（可信实体）以实现联合身份验证目的。该角色还定义了由您的组织的 IdP 进行身份验证的用户可以在 AWS 中执行的操作。您可使用 IAM 控制台创建该角色。在创建指示谁可以代入角色的信任策略时，您可以将先前创建的 SAML 提供商指定为 IAM。您还可以指定用户要代入角色必须匹配的一个或多个 SAML 属性。例如，您可以指定只允许其 SAML `[eduPersonOrgDN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_edupersonorgdn)` 值为 `ExampleOrg` 的用户登录。角色向导会自动添加一个测试 `saml:aud` 属性的条件，以确保仅出于登录 AWS 管理控制台的目的担任该角色。

如果需要 SAML 加密，则登录 URL 必须包含 AWS 分配给您的 SAML 提供商的唯一标识符，您可以在身份提供者详细信息页面上找到该标识符。该角色的信任策略可能如下所示：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
```

------

**注意**  
角色信任策略中使用的 SAML IdP 必须与角色位于同一账户中。

我们建议使用区域端点作为 `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 的 `saml:aud` 属性。有关可能的 *region-code* 值的列表，请参阅 [AWS 登录端点](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)中的 **Region**（区域）列。

对于该角色中的[权限策略](access_policies.md)，您可以像任何角色、用户或组一样指定权限。例如，如果允许您的企业中的用户管理 Amazon EC2 实例，您可以在权限策略中显式允许 Amazon EC2 操作。您可通过分配一个[托管策略](access_policies_manage-attach-detach.md) (如 **Amazon EC2 完全访问**托管策略) 执行此操作。

有关创建用于 SAML IdP 的角色的详细信息，请参阅[创建用于 SAML 2.0 联合身份验证的角色（控制台）](id_roles_create_for-idp_saml.md)。

## 完成配置并创建 SAML 断言
<a name="fedconsole-configassertions"></a>

通过安装位于 `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 或 `https://signin.aws.amazon.com/static/saml-metadata.xml` 的 `saml-metadata.xml` 文件，通知 SAML IdP AWS 是您的服务提供商。如果需要 SAML 加密，则可在 `https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml` 找到该文件。

有关可能的 *region-code* 值的列表，请参阅 [AWS 登录端点](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)中的 **Region**（区域）列。

安装该文件的方式取决于您的 IdP。一些提供商为您提供了键入该 URL 的选项，此时，IdP 将为您获取并安装该文件。另一些提供商则要求您从该 URL 处下载该文件，然后将其作为本地文件提供。请参阅您的 IdP 文档以获得详细信息或参阅[将第三方 SAML 解决方案提供者与 AWS 集成](id_roles_providers_saml_3rd-party.md)以获得指向很多支持的 SAML 提供商的 Web 文档。

您还可配置一条信息，您希望 IdP 在身份验证响应期间将此信息作为 SAML 属性传递到 AWS。这些信息的大部分在 AWS 中显示为条件上下文密钥，您可以在策略中进行评估。这些条件键确保仅向正确上下文中的授权用户授予权限来访问您的 AWS 资源。您可以指定限制何时可使用控制台的时段。您还可以指定在必须刷新用户的凭证之前用户可访问控制台的最长时间（最多 12 个小时）。有关详细信息，请参阅[为身份验证响应配置 SAML 断言。](id_roles_providers_create_saml_assertions.md)。