

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

# 使用 IAM 角色
<a name="security-iam-resilience-hub-using-iam-role"></a>

AWS Resilience Hub 将使用预定义的现有 IAM 角色访问您在主账户或 secondary/resources 账户中的资源。这是访问您的资源的推荐权限选项。

**主题**
+ [调用者角色](security-iam-resilience-hub-invoker-role.md)
+ [用于跨账户访问的不同 AWS 账户中的角色——可选](security-iam-resilience-cross-account-roles.md)

# 调用者角色
<a name="security-iam-resilience-hub-invoker-role"></a>

 AWS Resilience Hub 调用者角色是一个 AWS Identity and Access Management (IAM) 角色， AWS Resilience Hub 用于访问 AWS 服务和资源。例如，您可以创建一个有权限访问您的 CFN 模板及其创建的资源的调用者角色。此页面提供有关如何创建、查看和管理应用程序调用者角色的信息。

创建应用程序时，您需要提供调用者角色。当您导入资源或开始评测时， AWS Resilience Hub 担任这个角色来访问您的资源。 AWS Resilience Hub 为了正确扮演您的调用者角色，角色的信任策略必须将 AWS Resilience Hub 服务主体 (r **esiliencehub.amazonaws.com**) 指定为可信服务。

要查看应用程序的调用者角色，请从导航窗格中选择**应用程序**，然后从**应用程序**页面的**操作**菜单中选择**更新权限**。

可以随时在应用程序调用者角色中添加或删除权限，或配置您的应用程序以使用不同的角色访问应用程序资源。

**主题**
+ [在 IAM 控制台中创建一个角色](#security-iam-resilience-hub-create-invoker-role)
+ [使用 IAM API 管理角色](#security-iam-resilience-hub-manage-roles-with-IAM-API)
+ [使用 JSON 文件定义信任策略](#security-iam-resilience-define-policy)

## 在 IAM 控制台中创建一个角色
<a name="security-iam-resilience-hub-create-invoker-role"></a>

 AWS Resilience Hub 要允许访问 AWS 服务和资源，您必须使用 IAM 控制台在主账户中创建调用者角色。有关使用 IAM 控制台创建角色的更多信息，请参阅[为 AWS 服务创建角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)。

**要使用 IAM 控制台在主账户中创建调用者角色**

1. 使用 `https://console.aws.amazon.com/iam/` 打开 IAM 控制台。

1. 从导航窗格中选择**角色**，然后选择**创建角色**。

1. 选择**自定义信任策略**，在**自定义信任策略**窗口中复制以下策略，然后选择**下一步**。
**注意**  
如果您的资源位于不同的账户中，则必须在每个账户中创建一个角色，并对其他账户使用辅助账户信任策略。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "resiliencehub.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 在**添加权限**页面的**权限策略**部分，在**按属性或策略名称筛选策略然后按 Enter** 框中输入 `AWSResilienceHubAsssessmentExecutionPolicy`。

1. 选择策略，然后选择**下一步**。

1. 在**角色详细信息**部分，在**角色名称**框中输入唯一的角色名称（例如 `AWSResilienceHubAssessmentRole`）。

   此字段仅接受字母数字和“`+=,.@-_/`”字符。

1. （可选）在**描述**框中，为存储库输入描述。

1. 请选择 **创建角色**。

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

创建调用者角色和资源角色后（如果适用），您可以配置应用程序以使用这些角色。

**注意**  
创建或更新应用程序时，您必须拥有当前 IAM user/role 中调用者角色的`iam:passRole`权限。但是，您不需要此权限即可运行评测。

## 使用 IAM API 管理角色
<a name="security-iam-resilience-hub-manage-roles-with-IAM-API"></a>

角色的信任策略会向指定主体授予代入该角色的权限。要使用 AWS Command Line Interface (AWS CLI) 创建角色，请使用`create-role`命令。在使用此命令时，您可以指定内联信任策略。以下示例说明如何向 AWS Resilience Hub 服务授予担任您角色的委托人权限。

**注意**  
JSON 字符串中对转义引号（`' '`）的要求可能因 shell 版本而异。

**示例 `create-role`**

```
aws iam create-role --role-name AWSResilienceHubAssessmentRole --assume-role-policy-document '{
  "Version": "2012-10-17",		 	 	 "Statement": 
  [
    { 
      "Effect": "Allow",
      "Principal": {"Service": "resiliencehub.amazonaws.com"},
      "Action": "sts:AssumeRole"
    }
  ]
}'
```

## 使用 JSON 文件定义信任策略
<a name="security-iam-resilience-define-policy"></a>

您还可以使用单独的 JSON 文件为角色定义信任策略，然后运行 `create-role` 命令。在下面的示例中，**`trust-policy.json`** 是位于当前目录中的一个文件。通过运行 **`create-role`** 命令将此策略附加到角色。`create-role` 命令的输出显示在**示例输出**中。要为角色添加权限，请使用**attach-policy-to-role**命令，然后您可以先添加`AWSResilienceHubAsssessmentExecutionPolicy`托管策略。有关托管策略的更多信息，请参阅[AWSResilienceHubAsssessmentExecutionPolicy](security-iam-awsmanpol.md#security_iam_aws-assessment-policy)。

**示例 `trust-policy.json`**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "resiliencehub.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }]
}
```

------

**示例 `create-role`**

`aws iam create-role --role-name AWSResilienceHubAssessmentRole --assume-role-policy-document file://trust-policy.json`

**示例输出**

**示例 `attach-policy-to-role`**

`aws iam attach-role-policy --role-name AWSResilienceHubAssessmentRole --policy-arn arn:aws:iam::aws:policy/AWSResilienceHubAsssessmentExecutionPolicy`

# 用于跨账户访问的不同 AWS 账户中的角色——可选
<a name="security-iam-resilience-cross-account-roles"></a>

当您的资源位于 secondary/resource 账户中时，您必须在每个账户中创建角色 AWS Resilience Hub 才能成功评估您的应用程序。角色创建过程与调用者角色创建过程类似，但信任策略配置除外。

**注意**  
您必须在资源所在的辅助账户中创建角色。

**主题**
+ [在 IAM 控制台中为 secondary/resource 账户创建角色](#security-iam-resilience-cross-create-roles-infra-account)
+ [使用 IAM API 管理角色](#security-iam-resilience-cross-create-roles-infra-account-api)
+ [使用 JSON 文件定义信任策略](#security-iam-resilience-cross-define-trust-policy-infra-account)

## 在 IAM 控制台中为 secondary/resource 账户创建角色
<a name="security-iam-resilience-cross-create-roles-infra-account"></a>

 AWS Resilience Hub 要允许访问其他 AWS 账户中的 AWS 服务和资源，您必须在每个账户中创建角色。

**使用 IAM 控制台在 IAM 控制台中为 secondary/resource 账户创建角色**

1. 使用 `https://console.aws.amazon.com/iam/` 打开 IAM 控制台。

1. 从导航窗格中选择**角色**，然后选择**创建角色**。

1. 选择**自定义信任策略**，在**自定义信任策略**窗口中复制以下策略，然后选择**下一步**。
**注意**  
如果您的资源位于不同的账户中，则您必须在每个账户中创建一个角色，并对其他账户使用辅助账户信任策略。

1. 在**添加权限**页面的**权限策略**部分，在**按属性或策略名称筛选策略然后按 Enter** 框中输入 `AWSResilienceHubAsssessmentExecutionPolicy`。

1. 选择策略，然后选择**下一步**。

1. 在**角色详细信息**部分，在**角色名称**框中输入唯一的角色名称（例如 `AWSResilienceHubAssessmentRole`）。

1. （可选）在**描述**框中，为存储库输入描述。

1. 请选择 **创建角色**。

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

此外，您还需要向调用者角色添加 `sts:assumeRole` 权限，使其能够担任您的辅助账户中的角色。

将以下策略添加到您创建的每个辅助角色的调用者角色中：

```
{
    "Effect": "Allow",
    "Resource": [
      "arn:aws:iam::secondary_account_id_1:role/RoleInSecondaryAccount_1",
      "arn:aws:iam::secondary_account_id_2:role/RoleInSecondaryAccount_2",
      ...
      ],
      "Action": [
        "sts:AssumeRole"
      ]
}
```

### 使用 IAM API 管理角色
<a name="security-iam-resilience-cross-create-roles-infra-account-api"></a>

角色的信任策略会向指定主体授予代入该角色的权限。要使用 AWS Command Line Interface (AWS CLI) 创建角色，请使用`create-role`命令。在使用此命令时，您可以指定内联信任策略。以下示例说明如何向 AWS Resilience Hub 服务主体授予代入您的角色的权限。

**注意**  
JSON 字符串中对转义引号（`' '`）的要求可能因 shell 版本而异。

**示例 `create-role`**

```
aws iam create-role --role-name AWSResilienceHubAssessmentRole --assume-role-policy-document '{"Version": "2012-10-17",		 	 	 "Statement": [{"Effect": "Allow","Principal": {"AWS": ["arn:aws:iam::primary_account_id:role/InvokerRoleName"]},"Action": "sts:AssumeRole"}]}'
```

您还可以使用单独的 JSON 文件为角色定义信任策略。在下面的示例中，`trust-policy.json` 是位于当前目录中的一个文件。

### 使用 JSON 文件定义信任策略
<a name="security-iam-resilience-cross-define-trust-policy-infra-account"></a>

您还可以使用单独的 JSON 文件为角色定义信任策略，然后运行 `create-role` 命令。在下面的示例中，**`trust-policy.json`** 是位于当前目录中的一个文件。通过运行 **`create-role`** 命令将此策略附加到角色。`create-role` 命令的输出显示在**示例输出**中。要为角色添加权限，请使用**attach-policy-to-role**命令，您可以先添加`AWSResilienceHubAsssessmentExecutionPolicy`托管策略。有关托管策略的更多信息，请参阅[AWSResilienceHubAsssessmentExecutionPolicy](security-iam-awsmanpol.md#security_iam_aws-assessment-policy)。

**示例 `trust-policy.json`**

**示例 `create-role`**

```
aws iam create-role --role-name AWSResilienceHubAssessmentRole --assume-role-policy-document file://trust-policy.json
```

**示例输出**

**示例 `attach-policy-to-role`**

`aws iam attach-role-policy --role-name AWSResilienceHubAssessmentRole --policy-arn arn:aws:iam::aws:policy/AWSResilienceHubAsssessmentExecutionPolicy`.