

# 为第三方身份提供者创建角色
<a name="id_roles_create_for-idp"></a>

您可以使用身份提供程序而不必在 Amazon Web Services 账户 中创建 IAM 用户。利用身份提供程序 (IdP)，您可以管理 Amazon 外部的用户身份，并向这些外部用户身份授予访问您账户中的 Amazon 资源的权限。有关联合和身份提供程序的更多信息，请参阅[身份提供程序和 Amazon 中的联合身份验证](id_roles_providers.md)。

## 为 OIDC 和 SAML 联合主体创建角色（控制台）
<a name="roles-creatingrole-federated-users-console"></a>

创建角色的过程取决于您选择的第三方提供商：
+ 有关 OpenID Connect（OIDC），请参阅 [创建用于 OpenID Connect 联合身份验证（控制台）的角色](id_roles_create_for-idp_oidc.md)。
+ 有关 SAML 2.0，请参阅[创建用于 SAML 2.0 联合身份验证的角色（控制台）](id_roles_create_for-idp_saml.md)。

## 为联合访问创建角色 (Amazon CLI)
<a name="roles-creatingrole-identityprovider-cli"></a>

从 Amazon CLI 中为支持的身份提供程序（OIDC 或 SAML）创建角色的步骤是相同的。区别在于，您在先决条件步骤中创建的信任策略的内容不同。首先，按照**先决条件**部分中针对您正在使用的提供商类型的步骤操作：
+ 有关 OIDC 提供商，请参阅[创建用于 OIDC 的角色的先决条件](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites)。
+ 有关 SAML 提供商，请参阅[创建用于 SAML 的角色的先决条件](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites)。

从 Amazon CLI 创建角色涉及几个步骤。当您使用控制台创建角色时，很多步骤会自动完成，但是使用 Amazon CLI 时，您必须自行完成每一个步骤。您必须创建角色，然后为角色分配权限策略。（可选）您还可以为您的角色设置[权限边界](access_policies_boundaries.md)。

**创建角色 (Amazon CLI)**

1. 创建角色：[aws iam create-role](https://docs.amazonaws.cn/cli/latest/reference/iam/create-role.html)

1. 将权限策略附加到角色：[aws iam attach-role-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/attach-role-policy.html)

    或者

   为角色创建内联权限策略：[aws iam put-role-policy](https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-policy.html)

1. （可选）通过附加标签来向角色添加自定义属性：[aws iam tag-role](https://docs.amazonaws.cn/cli/latest/reference/iam/tag-role.html)

   有关更多信息，请参阅 [管理 IAM 角色（Amazon CLI 或 Amazon API）的标签](id_tags_roles.md#id_tags_roles_procs-cli-api)。

1. （可选）为角色设置[权限边界](access_policies_boundaries.md)：[aws iam put-role-permissions-boundary](https://docs.amazonaws.cn/cli/latest/reference/iam/put-role-permissions-boundary.html)

   权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。

以下示例演示了在简单环境中创建身份提供程序角色的前两个最常见的步骤。此示例允许 `123456789012` 账户中的任何用户担任角色并查看 `example_bucket` Amazon S3 存储桶。该示例还假设您在运行 Windows 的计算机上运行 Amazon CLI，并且已使用您的凭证配置了 Amazon CLI。有关更多信息，请参阅[配置 Amazon Command Line Interface](https://docs.amazonaws.cn/cli/latest/userguide/cli-chap-getting-started.html)。

以下示例信任策略是为用户使用 Amazon Cognito 登录时的移动应用程序设计的。在此示例中，*us-east:12345678-ffff-ffff-ffff-123456* 表示由 Amazon Cognito 分配的身份池 ID。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "RoleForCognito",
        "Effect": "Allow",
        "Principal": {"Federated": "cognito-identity.amazonaws.com"},
        "Action": "sts:AssumeRoleWithWebIdentity",
        "Condition": {"StringEquals": {"cognito-identity.amazonaws.com:aud": "us-east:12345678-ffff-ffff-ffff-123456"}}
    }
}
```

------

下面的权限策略仅允许担任角色的任何人对 `example_bucket` Amazon S3 存储桶执行 `ListBucket` 操作。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}
```

------

要创建此 `Test-Cognito-Role` 角色，您必须首先将上述名为 `trustpolicyforcognitofederation.json` 的信任策略和上述名为 `permspolicyforcognitofederation.json` 的权限策略保存到您的本地 `policies` 驱动器中的 `C:` 文件夹。然后您可以使用以下命令来创建角色并附加内联策略。

```
# Create the role and attach the trust policy that enables users in an account to assume the role.
$ aws iam create-role --role-name Test-Cognito-Role --assume-role-policy-document file://C:\policies\trustpolicyforcognitofederation.json

# Attach the permissions policy to the role to specify what it is allowed to do.
aws iam put-role-policy --role-name Test-Cognito-Role --policy-name Perms-Policy-For-CognitoFederation --policy-document file://C:\policies\permspolicyforcognitofederation.json
```

## 为联合访问创建角色 (Amazon API)
<a name="roles-creatingrole-identityprovider-api"></a>

从 Amazon CLI 中为支持的身份提供程序（OIDC 或 SAML）创建角色的步骤是相同的。区别在于，您在先决条件步骤中创建的信任策略的内容不同。首先，按照**先决条件**部分中针对您正在使用的提供商类型的步骤操作：
+ 有关 OIDC 提供商，请参阅[创建用于 OIDC 的角色的先决条件](id_roles_create_for-idp_oidc.md#idp_oidc_Prerequisites)。
+ 有关 SAML 提供商，请参阅[创建用于 SAML 的角色的先决条件](id_roles_create_for-idp_saml.md#idp_saml_Prerequisites)。

**要创建角色（Amazon API）**

1. 创建角色：[CreateRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_CreateRole.html)

1. 将权限策略附加到角色：[AttachRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_AttachRolePolicy.html)

    或者

   为角色创建内联权限策略：[PutRolePolicy](https://docs.amazonaws.cn/IAM/latest/APIReference/API_PutRolePolicy.html)

1. （可选）通过附加标签来向用户添加自定义属性：[TagRole](https://docs.amazonaws.cn/IAM/latest/APIReference/API_TagRole.html)

   有关更多信息，请参阅 [管理 IAM 用户（Amazon CLI 或 Amazon API）的标签](id_tags_users.md#id_tags_users_procs-cli-api)。

1. （可选）为角色设置[权限边界](access_policies_boundaries.md)：[PutRolePermissionsBoundary](https://docs.amazonaws.cn/IAM/latest/APIReference/API_PutRolePermissionsBoundary.html)

   权限边界控制角色可以具有的最大权限。权限边界是一项高级 Amazon 功能。