

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

# AWS Resilience Hub 访问权限参考
<a name="security-iam-resilience-hub-permissions"></a>

您可以使用 AWS Identity and Access Management (IAM) 来管理对应用程序资源的访问权限，并创建适用于用户、群组或角色的 IAM 策略。

可以将每个 AWS Resilience Hub 应用程序配置为使用[调用者角色](security-iam-resilience-hub-invoker-role.md)（一个 IAM 角色）或使用当前 IAM 用户权限（以及一组用于跨账户和定期评估的预定义角色）。在此角色中，您可以附加一个策略，该策略定义了 AWS Resilience Hub 访问其他 AWS 资源或应用程序资源所需的权限。调用者角色必须具有添加到 AWS Resilience Hub 服务主体的信任策略。

要管理应用程序的权限，我们建议使用 [AWS 的托管策略 AWS Resilience Hub](security-iam-awsmanpol.md)。您可以使用这些托管式策略，而无需做任何修改，也可以将它们作为起点编写自己的限制性策略。策略可以通过操作影响的资源以及其他可选条件来限制用户权限。

如果您的应用程序资源位于不同的账户（辅助账户/资源账户）中，则必须在包含您的应用程序资源的每个账户中设置一个新角色。

**注意**  
如果您为工作负载资源定义 VPC 终端节点，请确保 VPC 终端节点策略为访问资源提供只读访问权限。 AWS Resilience Hub 有关更多信息，请参阅[使用端点策略控制对 VPC 端点的访问](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html)。

**主题**
+ [使用 IAM 角色](security-iam-resilience-hub-using-iam-role.md)
+ [使用当前的 IAM 用户权限](security-iam-resilience-hub-current-user-permissions.md)

# 使用 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`.

# 使用当前的 IAM 用户权限
<a name="security-iam-resilience-hub-current-user-permissions"></a>

如果您想使用当前的 IAM 用户权限来创建和运行评测，请使用此方法。您可以将 `AWSResilienceHubAsssessmentExecutionPolicy` 托管式策略附加到您的 IAM 用户或与用户关联的角色。

## 单个账户设置
<a name="w2aac21c23c41c19b5"></a>

使用上述托管式策略足以对与 IAM 用户使用同一账户托管的应用程序进行评测。

## 计划评测设置
<a name="w2aac21c23c41c19b7"></a>

您必须创建一个新角色 `AwsResilienceHubPeriodicAssessmentRole` 以使 AWS Resilience Hub 执行与计划评测相关的任务。

**注意**  
使用基于角色的访问权限（使用上面提到的调用者角色）时，不需要执行此步骤。
角色名称必须为 `AwsResilienceHubPeriodicAssessmentRole`。

**AWS Resilience Hub 要允许执行与计划评估相关的任务**

1. 将 `AWSResilienceHubAsssessmentExecutionPolicy` 托管式策略附加到角色。

1. 添加以下策略，其中`primary_account_id`是定义应用程序并将运行评估的 AWS 账户。此外，您必须为定期评估的角色添加关联的信任策略 (`AwsResilienceHubPeriodicAssessmentRole`)，该策略允许该 AWS Resilience Hub 服务担任预定评估的角色。

   **计划评测角色的信任策略（`AwsResilienceHubPeriodicAssessmentRole`）**

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

****  

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

------

## 跨账户设置
<a name="w2aac21c23c41c19b9"></a>

如果您在多个账户中使用 AWS 韧性监测中心，则需要使用以下 IAM 权限策略。根据您的用例，每个 AWS 账户可能需要不同的权限。在设置 AWS Resilience Hub 进行跨账户存取时，需要考虑以下账户和角色：
+ **主账户** – AWS 您要在其中创建应用程序和运行评测的账户。
+ **次要/资源 AWS 账户** — 资源所在的账户。

**注意**  
使用基于角色的访问权限（使用上面提到的调用者角色）时，不需要执行此步骤。
有关配置访问 Amazon Elastic Kubernetes Service 的权限的更多信息，请参阅 [允许 AWS Resilience Hub 访问您的亚马逊 Elastic Kubernetes Service 集群](enabling-eks-in-arh.md)。

### 主账户设置
<a name="w2aac21c23c41c19b9b9"></a>

您必须在主账户`AwsResilienceHubAdminAccountRole`中创建一个新角色并允许 AWS Resilience Hub 访问权限才能代入该角色。此角色将用于访问您 AWS 账户中包含您的资源的另一个角色。它不应拥有读取资源的权限。

**注意**  
角色名称必须为 `AwsResilienceHubAdminAccountRole`。
它必须在主账户中创建。
您当前的 IAM user/role 必须拥有担任此角色的`iam:assumeRole`权限。
替换 `secondary_account_id_1/2/...` 为相关的辅助账户标识符。

以下策略为您的角色提供访问 AWS 账户中其他角色的资源的执行者权限：

管理员角色（`AwsResilienceHubAdminAccountRole`）的信任策略如下：

### 辅助/资源账户设置
<a name="w2aac21c23c41c19b9c11"></a>

在每个辅助账户中，您必须创建一个新的 `AwsResilienceHubExecutorAccountRole` 并启用以上创建的管理员角色以担任此角色。由于此角色将 AWS Resilience Hub 用于扫描和评估您的应用程序资源，因此还需要相应的权限。

但是，您必须将 `AWSResilienceHubAsssessmentExecutionPolicy` 托管式策略附加到角色，并附加执行者角色策略。

执行者角色信任策略如下所示：