

# 跨账户调查
<a name="Investigations-cross-account"></a>

 跨账户 CloudWatch 调查功能使您能够从一个集中式监控账户，调查跨多个 Amazon Web Services 账户 的应用程序问题。该功能支持您在监控账户的基础上，关联多达 25 个其他账户的遥测数据、指标和日志，从而全面掌握分布式应用运行状态，并高效排查跨多账户的复杂问题场景。

**Topics**
+ [先决条件](#Investigations-cross-account-prereq)
+ [设置监控账户，以进行跨账户访问](#Investigations-cross-account-monitoring-account)
+ [设置源账户，以进行跨账户访问](#Investigations-cross-account-source-account)
+ [跨账户问题调查](#Investigations-cross-account-investigation)

## 先决条件
<a name="Investigations-cross-account-prereq"></a>
+ 多账户调查要求您已设置好跨账户可观测性，以便查看跨账户遥测数据。要完成前置条件配置，请选择设置[跨账户可观测性](https://docs.amazonaws.cn/prescriptive-guidance/latest/patterns/centralize-monitoring-by-using-amazon-cloudwatch-observability-access-manager.html)功能或[跨账户仪表盘](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html)。
+ 设立调查组。对于跨账户可观测性，相关配置应在监控账户中完成。您也可在源账户中对其进行设置，并在那里开展单账户调查。

## 设置监控账户，以进行跨账户访问
<a name="Investigations-cross-account-monitoring-account"></a>

**设置监控账户，以进行跨账户访问**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/) 打开 CloudWatch 控制台。

1. 在左侧导航窗格中，选择 **AI 操作**、**配置**。

1. 在**配置跨账户访问**下，选择**配置**。

1. 在**源账户列表**部分下，添加最多 25 个账户的账户 ID。

1. 更新 IAM 角色。

   1. 自动
      + 若选择**自动更新助手角色（推荐）**，系统会创建一个名为 `AIOpsAssistantCrossAccountPolicy-${guid}` 的客户管理型策略，其中包含承担指定源账户中助手角色所需的 `sts:AssumeRole` 声明。选择自动更新选项时，源账户中的 IAM 角色名称默认为 `AIOps-CrossAccountInvestigationRole`。

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

****  

        ```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": [
                    "arn:aws:iam::777777777777:role/AIOps-CrossAccountInvestigationRole",
                    "arn:aws:iam::555555555555:role/AIOps-CrossAccountInvestigationRole",
                    "arn:aws:iam::666666666666:role/AIOps-CrossAccountInvestigationRole"
                ]
            }
        }
        ```

------
      + 若监控账户所有者从跨账户配置中移除某个源账户，系统不会自动更新关联的 IAM 策略。您必须手动更新 IAM 角色和策略，确保其始终遵循最小权限原则。
      + 若在移除源账户后未手动更新权限，可能会导致该角色达到托管策略数量上限。您必须删除调查角色相关的全部未使用托管策略。

   1. 手动方式
      + 以下示例显示了助手角色所需的信任策略：

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

****  

        ```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Sid": "AllowAIOpsAssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "aiops.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole",
                    "Condition": {
                        "StringEquals": {
                            "sts:ExternalId": "arn:aws:aiops:us-east-1:123456789012:investigation-group/AaBbcCDde1EfFG2g"
                        }
                    }
                }
            ]
        }
        ```

------

        您可以使用 Amazon CLI 创建自定义源账户角色，然后使用以下命令将 `AIOpsAssistantPolicy` 附加到该角色，并将占位符值替换为您环境的相应值：

        ```
        aws iam create-role
         --role-name custom-role-name
         --assume-role-policy-document 
            '{ 
               "Version": "2012-10-17",		 	 	  
               "Statement": [ 
                         { 
                              "Effect": "Allow",
                              "Principal": { "AWS": "investigation-group-role-arn"
                                  }, 
                              "Action": "sts:AssumeRole", 
                              "Condition": {
                                         "StringEquals": { 
                                                  "sts:ExternalId": "investigation-group-arn"
                                                    } } } ] }' 
        
        aws iam attach-role-policy 
         --role-name custom-role-name
         --policy-arn arn:aws:iam::aws:policy/AIOpsAssistantPolicy
        ```
      + 要实现跨账户访问，监控账户中的助手角色权限策略必须包含以下内容。若您手动配置监控账户，角色名称可按需自定义。它不默认为 `AIOps-CrossAccountInvestigationRole`，请务必为每个源帐户指定助手角色的名称。

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

****  

        ```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": {
                "Effect": "Allow",
                "Action": "sts:AssumeRole",
                "Resource": [
                    "arn:aws:iam::777777777777:role/custom_source_account_role_name",
                    "arn:aws:iam::555555555555:role/custom_source_account_role_name",
                    "arn:aws:iam::666666666666:role/custom_source_account_role_name"
                ]
            }
        }
        ```

------
      + 在 Amazon CLI 中，通过以下命令使用自定义源账户角色 ARN 更新监控账户调查组，并将占位符值替换为您环境的相应值：

        ```
        aws aiops update-investigation-group 
         --identifier investigation-group-id
         --cross-account-configurations sourceRoleArn=sourceRoleArn1  sourceRoleArn=sourceRoleArn2
        ```

        有关此命令的更多详细信息，请参阅《[Amazon CLI Command Reference](https://docs.amazonaws.cn/cli/latest/reference/aiops/update-investigation-group.html)》。

## 设置源账户，以进行跨账户访问
<a name="Investigations-cross-account-source-account"></a>

1. 若您选择了**自动更新助手角色选项**来配置监控账户，则需预置一个名为 `AIOps-CrossAccountInvestigationRole` 的 IAM 角色。若您选择手动设置选项，则需按自定义的源账户角色名称来配置 IAM 角色。

   1. 在 IAM 控制台中，将 Amazon 托管策略 `AIOpsAssistantPolicy` 附加到您的 IAM 角色。

   1. 源账户中该角色的信任策略需包含如下配置，​必须在策略中明确指定 `ExternalID`。请使用监控账户中调查组的 ARN。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "AWS": "arn:aws:iam::123456789012:role/investigation-role-name"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:ExternalId": "investigation-group-arn"
                      }
                  }
              }
          ]
      }
      ```

------

1. 必须在每个源账户中分别完成此操作。

1. 若您通过控制台配置监控账户角色，则源账户中的角色名称将默认设置为 `AIOps-CrossAccountInvestionRole`。

1. 通过以下步骤确认访问权限：登录监控账户，导航至**调查组**，然后进入**配置**，再选择**跨账户设置**。

   确认源账户已在跨账户配置列表中显示，且其状态为**已关联至监控账户**。

## 跨账户问题调查
<a name="Investigations-cross-account-investigation"></a>

在设置 CloudWatch 跨账户可观测性控制面板后，即可在监控账户中查看并分析跨账户遥测数据。必须从源账户添加跨账户遥测数据，才能对该源账户开展调查分析。

要详细了解如何创建调查，请参阅 [调查您环境中的操作问题](Investigations-Investigate.md)。