

# 创建角色并附加策略（控制台）
<a name="access_policies_job-functions_create-policies"></a>

上文列出的一些策略授予了通过角色配置 AWS 服务的能力，以便这些服务能够代表您执行操作。工作职能策略或者指定您必须使用的确切角色名称，或者至少包括指定可用名称的开头部分的前缀。要创建这些角色之一，请执行以下程序中的步骤。

**创建用于 AWS 服务 的角色（IAM 控制台）**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 控制台的导航窗格中，选择**角色**，然后选择**创建角色**。

1. 对于 **Trusted entity type**（可信实体类型），选择 **AWS 服务**。

1. 对于**服务或使用案例**，请选择服务，然后选择使用案例。用例由服务定义以包含服务要求的信任策略。

1. 选择**下一步**。

1. 对于**权限策略**，选项取决于您选择的使用案例：
   + 如果服务定义了角色的权限，则您无法选择权限策略。
   + 从一组有限的权限策略中进行选择。
   + 从所有权限策略中进行选择。
   + 不选择任何权限策略，创建角色后创建策略，然后将这些策略附加到该角色。

1. （可选）设置[权限边界](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。这是一项高级功能，可用于服务角色，但不可用于服务相关角色。

   1. 打开**设置权限边界**部分，然后选择**使用权限边界控制最大角色权限**。

      IAM 包括您的账户中的 AWS 托管式策略和客户管理型策略的列表。

   1. 选择要用于权限边界的策略。

1. 选择**下一步**。

1. 对于**角色名称**，选项取决于服务：
   + 如果服务定义角色名称，则您无法编辑角色名称。
   + 如果服务定义角色名称的前缀，您可以输入可选的后缀。
   + 如果服务未定义角色名称，您可以为该角色命名。
**重要**  
命名角色时，请注意以下事项：  
角色名称在您的 AWS 账户 中必须是唯一的，且不能因大小写而变得唯一。  
例如，不要同时创建名为 **PRODROLE** 和 **prodrole** 的角色。当角色名称在策略中使用或者作为 ARN 的一部分时，角色名称区分大小写，但是当角色名称在控制台中向客户显示时（例如，在登录期间），角色名称不区分大小写。
创建角色后，您无法编辑该角色的名称，因为其他实体可能会引用该角色。

1. （可选）对于**描述**，输入角色的描述。

1. （可选）要编辑角色的使用案例和权限，请在**步骤 1：选择可信实体**或**步骤 2：添加权限**部分中选择**编辑**。

1. （可选）为了帮助识别、组织或搜索角色，请以键值对形式添加标签。有关在 IAM 中使用标签的更多信息，请参阅《IAM 用户指南》**中的 [AWS Identity and Access Management 资源的标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 检查该角色，然后选择**创建角色**。

## 示例 1：将用户配置为数据库管理员（控制台）
<a name="jf_example_1"></a>

此示例显示将 IAM 用户 Alice 配置为 [Database Administrator](access_policies_job-functions.md#jf_database-administrator)（数据库管理员）需要执行的步骤。您需要使用此部分中的表中第一行中的信息，并允许该用户启用 Amazon RDS 监控。您将 [DatabaseAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/DatabaseAdministrator) 策略附加给 Alice 的 IAM 用户，以便他们可以管理 Amazon 数据库服务。该策略还允许 Alice 将名为 `rds-monitoring-role` 的角色传递给 Amazon RDS 服务，从而允许该服务代表他们监控 Amazon RDS 数据库。

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 选择**策略**，在搜索框中键入 **database**，然后按 Enter。

1. 选择 **DatabaseAdministrator** 策略对应的单选按钮，再选择**操作**，然后选择**附加**。

1. 在实体列表中选择 **Alice**，然后选择**附加策略**。Alice 现在可以管理 AWS 数据库了。但是，要允许 Alice 监控这些数据库，您必须配置服务角色。

1. 在 IAM 控制台的导航窗格中，选择**角色**，然后选择**创建角色**。

1. 请选择 **AWS Service**（亚马逊云科技服务）角色类型，然后选择 **Amazon RDS**。

1. 请选择**用于增强监控的 Amazon RDS 角色**使用案例。

1. Amazon RDS 将为您的角色定义权限。选择**下一步：审核**以继续。

1. 角色名称必须是 Alice 当前拥有的 DatabaseAdministrator 策略中指定的一个。其中一个是 **rds-monitoring-role**。针对 **Role name**（角色名称）输入该信息。

1. （可选）对于**角色描述**，输入新角色的描述。

1. 在检查详细信息后，选择 **Create role**。

1. 现在，Alice 即可在 Amazon RDS 控制台的 **Monitoring**（监控）部分中启用 **RDS Enhanced Monitoring**（RDS 增强监控）。例如，他们可以在创建数据库实例、创建只读副本或修改数据库实例时执行此操作。当他们将 **Enable Enhanced Monitoring**（启用增强监控）设置为 **Yes**（是）时，他们必须输入他们在 **Monitoring Role**（监控角色）框中创建的角色名称（rds-monitoring-role）。

## 示例 2：将用户配置为网络管理员（控制台）
<a name="jf_example_2"></a>

此示例显示将 IAM 用户 Jorge 配置为 [Network Administrator](access_policies_job-functions.md#jf_network-administrator)（网络管理员）需要执行的步骤。它使用该部分的表中的信息来允许 Jorge 监控往来于 VPC 的 IP 流量。它还允许 Jorge 将该信息记录在 CloudWatch Logs 日志中。您将 [NetworkAdministrator](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/job-function/NetworkAdministrator) 策略附加给 Jorge 的 IAM 用户，以便他们可以配置 AWS 网络资源。该策略还允许 Jorge 在您创建流日志时，将名称以 `flow-logs*` 开头的角色传递给 Amazon EC2。此场景与示例 1 不同，这里没有预定义的服务角色类型，因此您必须执行几个不同的步骤。

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**，在搜索框中输入 **network**，然后按 Enter。

1. 选中 **NetworkAdministrator** 策略旁的单选按钮，然后依次选择**操作**和**附加**。

1. 在用户列表中选择 **Jorge** 旁边的复选框，然后选择**附加策略**。Jorge 现在可以管理 AWS 网络资源了。但是，为了监控 VPC 中的 IP 流量，您必须配置服务角色。

1. 由于您需要创建的服务角色没有预定义的托管策略，您必须先创建一个。在导航窗格中，选择**策略**，然后选择**创建策略**。

1. 在**策略编辑器**部分，选择 **JSON** 选项，然后复制以下 JSON 策略文档中的文本。将该文本粘贴到 **JSON** 文本框中。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:DescribeLogGroups",
           "logs:DescribeLogStreams"
         ],
         "Effect": "Allow",
         "Resource": "*"
       }
     ]
   }
   ```

------

1.  解决[策略验证](access_policies_policy-validator.md)过程中生成的任何安全警告、错误或常规警告，然后选择**下一步**。
**注意**  
您可以随时在**可视化**和 **JSON** 编辑器选项卡之间切换。不过，如果您进行更改或在**可视化**编辑器中选择**下一步**，IAM 可能会调整您的策略结构以针对可视化编辑器进行优化。有关更多信息，请参阅 [调整策略结构](troubleshoot_policies.md#troubleshoot_viseditor-restructure)。

1. 在**查看并创建**页面上，键入 **vpc-flow-logs-policy-for-service-role** 作为策略名称。查看**此策略中定义的权限**以查看您的策略授予的权限，然后选择**创建策略**以保存您的工作。

   将在托管策略列表中显示新策略，并已准备好附加该策略。

1. 在 IAM 控制台的导航窗格中，选择**角色**，然后选择**创建角色**。

1. 请选择 **AWS Service**（亚马逊云科技服务）角色类型，然后选择 **Amazon EC2**。

1. 请选择 **Amazon EC2** 使用案例。

1. 在**附加权限策略**页面上，选择您之前创建的策略：**vpc-flow-logs-policy-for-service-role**，然后选择**下一步：审核**。

1. 必须使用 Jorge 当前拥有的 NetworkAdministrator 策略所允许的角色名称。允许以 `flow-logs-` 开头的任何名称。在此示例中，对于 **Role name**（角色名称），请输入 **flow-logs-for-jorge**。

1. （可选）对于**角色描述**，输入新角色的描述。

1. 在检查详细信息后，选择 **Create role**。

1. 现在可以配置本场景需要的信任策略。在**角色**页面上，选择 **flow-logs-for-jorge** 角色（名称，而不是复选框）。在新角色的详细信息页面上，选择 **Trust relationships (信任关系)** 选项卡，然后选择 **Edit trust relationship (编辑信任关系)**。

1. 将条目替换为 `ec2.amazonaws.com`，“Service”行改为读取，如下所示：

   ```
           "Service": "vpc-flow-logs.amazonaws.com"
   ```

1. Jorge 现在可以在 Amazon EC2 控制台中为 VPC 或子网创建流日志了。当创建流日志时，请指定 **flow-logs-for-jorge** 角色。该角色拥有创建日志并向其写入数据的权限。