

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 跨帳戶跨區域 CloudWatch 主控台
<a name="Cross-Account-Cross-Region"></a>

**注意**  
我們建議您使用 CloudWatch 跨帳戶可觀測性功能，以在區域內為您的指標、日誌和追蹤提供最豐富的跨帳戶可觀測性與偵測體驗。如需詳細資訊，請參閱[CloudWatch 跨帳戶觀察功能](CloudWatch-Unified-Cross-Account.md)。

透過跨帳戶跨區域 CloudWatch 主控台，您可以使用主控台中的選取器，檢視其他帳戶和區域中的儀表板、警示和指標，輕鬆在不同帳戶和區域之間切換。此功能也可讓您建立跨帳戶、跨區域儀表板，將多個 AWS 帳戶和多個區域的 CloudWatch 指標摘要為單一儀表板，讓它們可以存取，而無需切換帳戶或區域。

許多組織在多個帳戶中部署 AWS 了資源，以提供帳單和安全性界限。在此情況下，您應該指定一或多個帳戶做為*監控帳戶*，並在這些帳戶中建置跨帳戶跨區域儀表板。跨帳戶跨區域主控台功能已與 整合 AWS Organizations，可協助您有效率地建置跨帳戶跨區域儀表板。

跨帳戶跨區域 CloudWatch 主控台體驗不提供日誌的跨帳戶跨區域可見性。此外，監控帳戶無法在其內部建立針對其他帳戶或區域中指標的警示。

**Topics**
+ [在 CloudWatch 中啟用跨帳戶跨區域功能](#enable-cross-account-cross-Region)
+ [（選用） 與 整合 AWS Organizations](#cross-account-and-AWS-organizations)
+ [對您的 CloudWatch 跨帳戶設定進行故障診斷](#troubleshooting-cross-account-cross-Region)
+ [監控跨帳戶存取的帳戶許可](#cross-account-cross-region-limitations)
+ [使用跨帳戶後停用和清除](#cleanup-cross-account-cross-Region)

## 在 CloudWatch 中啟用跨帳戶跨區域功能
<a name="enable-cross-account-cross-Region"></a>

若要在 CloudWatch 主控台中設定跨帳戶跨區域功能，請使用 CloudWatch 主控台來設定共用帳戶和監控帳戶。

### 設定共用帳戶
<a name="setup_sharing_account"></a>

您必須在每個帳戶中啟用共用，讓資料可供監控帳戶使用。

如果使用者在您共用的帳戶中具有對應的許可，這會將您在步驟 5 中選擇的唯讀許可授予與您共用之帳戶中檢視跨帳戶儀表板的所有使用者。

**若要讓您的帳戶能夠與其他帳戶共用 CloudWatch 資料**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 ** Settings** (設定)。

1. 在 **Share your CloudWatch data** (共用您的 CloudWatch 資料) 中，選擇 **Configure** (設定)。

1. 在 **Sharing (共用)** 中，選擇 **Specific accounts (特定帳戶)**，然後輸入您要共用資料之帳戶 ID。

   您在此指定的任何帳戶都可以檢視您帳戶的 CloudWatch 資料。僅指定您知道且信任的帳戶 ID。

1. 在 **Permissions (權限)**，請指定如何使用下列其中一個選項以共用您的資料：
   + **對您的 CloudWatch 指標、儀表板和警示提供唯讀存取權**。此選項可讓監控帳戶建立包含您帳戶 CloudWatch 資料的小工具之跨帳戶儀表板。
   + **包含 CloudWatch 自動儀表板**。如果您選取此選項，監控帳戶中的使用者也可以檢視此帳戶自動儀表板中的資訊。如需詳細資訊，請參閱[開始使用 CloudWatch 自動儀表板](GettingStarted.md)。
   + **包含 X-Ray 追蹤地圖的 X-Ray 唯讀存取權**。如果您選取此選項，監控帳戶中的使用者也可以檢視此帳戶中的 X-Ray 追蹤地圖和 X-Ray 追蹤資訊。如需詳細資訊，請參閱[使用 X-Ray 追蹤地圖](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-servicemap.html)。
   + **包含 Database Insights 的唯讀存取權**。如果您選取此選項，監控帳戶中的使用者也可以在此帳戶中檢視 Database Insights 遙測。如需詳細資訊，請參閱[設定 CloudWatch Database Insights 的跨帳戶跨區域監控](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Database-Insights-Cross-Account-Cross-Region.html)。
   + **完整唯讀存取您帳戶中的所有內容**。此選項可讓您用來共用的帳戶，建立其中包含帳戶 CloudWatch 資料小工具的跨帳戶儀表板。它也可以讓這些帳戶更深入地查看您的帳戶，並在其他 AWS 服務的主控台中檢視您帳戶的資料。

1. 選擇 **Launch CloudFormation template (啟動 CloudFormation 範本)**。

   在確認畫面中輸入 **Confirm**，並選擇 **Launch template (啟動範本)**。

1. 選取 **I acknowledge... (我知道...)** 核取方塊，然後選擇 **Create stack (建立堆疊)**。

#### 與整個組織共用
<a name="sharing-with-an-organization"></a>

完成前述程序會建立一個 IAM 角色，讓您的帳戶能夠與一個帳戶共用資料。您可以建立或編輯與組織中所有帳戶共用資料的 IAM 角色。請在您知道並信任組織中的所有帳戶時，才執行這項操作。

如果使用者在您共用的帳戶中具有對應的許可，這會將上一個程序步驟 5 中顯示的政策中列出的唯讀許可授予與您共用之帳戶中檢視跨帳戶儀表板的所有使用者。

**若要與組織中的所有帳戶共用您的 CloudWatch 帳戶資料**

1. 如果您還沒有，請完成上述程序，以與一個 AWS 帳戶共用您的資料。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**角色**。

1. 在角色清單中，選擇 **CloudWatch-CrossAccountSharingRole**。

1. 選擇 **Trust relationships (信任關係)**、**Edit trust relationship (編輯信任關係)**。

   您會看到以下政策：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::{{123456789012}}:root"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 將該政策變更為下列內容，以您組織的 ID 取代 {{org-id}}。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "StringEquals": {
             "aws:PrincipalOrgID": "{{org-id}}"
           }
         }
   
       }
     ]
   }
   ```

------

1. 選擇 **Update Trust Policy** (更新信任政策)。

### 設定監控帳戶
<a name="setup_monitoring_account"></a>

啟用每個監控帳戶以檢視跨帳戶 CloudWatch 資料。您可以使用 Amazon CloudWatch 主控台或 啟用監控帳戶 AWS Cloud Development Kit (AWS CDK)。

設定監控帳戶後，您可以建立跨帳戶儀表板。如需詳細資訊，請參閱[建立自訂 CloudWatch 儀表板](create_dashboard.md)。

#### 使用主控台啟用監控帳戶
<a name="enable-monitoring-account-console"></a>

當您完成下列程序時，CloudWatch 會建立 CloudWatch 在監控帳戶中用來存取其他帳戶共用資料的服務角色。此服務角色稱為 **ServiceRoleForCloudWatchCrossAccountV2**。

**若要讓您的帳戶能檢視跨帳戶 CloudWatch 資料**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Settings** (設定)，然後在 **Cross-account cross-region** (跨帳戶跨區域) 區段中，選擇 **Configure** (設定)。

1. 在 **View cross-account cross-region** (檢視跨帳戶跨區域) 區段下方，選擇 **Enable** (啟用)，然後勾選 **Show selector in the console** (在主控台中顯示選擇器) 核取方塊，讓帳户選擇器在您繪製指標圖表或建立警示時能在 CloudWatch 主控台中顯示。

1. 在 **View cross-account cross-region (檢視跨帳戶跨區域)** 下，選擇下列其中一個選項：
   + **Account Id Input (帳戶 ID 輸入)**。此選項會在您每次檢視跨帳戶資料，並想切換帳戶時，提示您手動輸入帳戶 ID。
   + **AWS 組織帳戶選擇器**。此選項會導致帳戶出現 (此帳戶是當您完成跨帳戶與 Organizations 的整合時所指定的帳戶)。當您下次使用主控台時，CloudWatch 會顯示這些帳戶的下拉式清單，供您在檢視跨帳戶資料時選取。

     若要執行此操作，您必須先使用組織管理帳戶來允許 CloudWatch 查看組織中的帳戶清單。如需詳細資訊，請參閱[（選用） 與 整合 AWS Organizations](#cross-account-and-AWS-organizations)。
   + **Custom account selector (自訂帳戶選擇器)**。此選項會提示您輸入帳戶 ID 清單。當您下次使用主控台時，CloudWatch 會顯示這些帳戶的下拉式清單，供您在檢視跨帳戶資料時選取。

     您也可以為這些帳戶個別輸入標籤，以協助您在選擇要檢視的帳戶時識別這些帳戶。

     使用者在此處進行的帳戶選擇器設定只會保留供該使用者使用，不適用於監控帳戶中的所有其他使用者。

1. 選擇**啟用**。

#### 使用 CDK 啟用監控帳戶
<a name="enable_monitoring_account_cdk"></a>

您也可以設定監控帳戶，而無需使用 主控台。將 **ServiceRoleForCloudWatchCrossAccountV2** 角色定義為基礎設施做為程式碼。當您管理多個監控帳戶時，請使用此方法。它會在所有角色中一致地部署角色。下列範例使用 TypeScript AWS CDK 中的 來定義具有所需信任政策和內嵌許可政策的角色：

```
import { Role, ServicePrincipal, PolicyDocument, PolicyStatement, Effect } from 'aws-cdk-lib/aws-iam';

new Role(this, 'ServiceRoleForCloudWatchCrossAccountV2', {
  roleName: 'ServiceRoleForCloudWatchCrossAccountV2',
  path: '/service-role/',
  assumedBy: new ServicePrincipal('cloudwatch-crossaccount.amazonaws.com'),
  description: 'Allows CloudWatch to assume the CloudWatch-CrossAccountSharingRole in sharing accounts.',
  inlinePolicies: {
    CrossAccountAccess: new PolicyDocument({
      statements: [
        new PolicyStatement({
          effect: Effect.ALLOW,
          actions: ['sts:AssumeRole'],
          resources: ['arn:aws:iam::*:role/CloudWatch-CrossAccountSharingRole'],
        }),
      ],
    }),
  },
});
```

此範例使用萬用字元資源，這是限制性最低的範圍。若要將監控帳戶限制為特定共用帳戶或組織，請變更`resources`陣列。您可以使用 `aws:ResourceOrgID`條件新增 `conditions` 屬性。任一方法都符合下節中的其中一個內嵌政策。

若要一次將角色部署到多個帳戶，請使用 合成範本搭配 CloudFormation StackSets。堆疊集會在單一操作中跨多個帳戶和區域建立角色。堆疊集也會自動將角色部署到加入您組織的新帳戶。如需 CloudFormation StackSets 的詳細資訊，請參閱*CloudFormation 《 使用者指南*》中的[使用 CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)。

#### 監控帳戶可存取的帳戶範圍
<a name="scoping-monitoring-account-access"></a>

當您使用 AWS CDK 定義角色時，內嵌許可政策會授予`sts:AssumeRole`許可。CloudWatch 使用此許可來擔任共用帳戶中的 **CloudWatch-CrossAccountSharingRole**。若要遵循最低權限原則，請將 `sts:AssumeRole` 動作`Resource`的 限制為僅監控帳戶所需的帳戶。您可以透過下列方式限制存取範圍，從最嚴格到最不嚴格：
+ **整個組織** – 允許監控帳戶僅在屬於您組織的帳戶中擔任共用角色。將 {{org-id}} 取代為您組織的 ID （例如 `o-a1b2c3d4e5`)。使用下列 JSON 內嵌政策：

  ```
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::*:role/CloudWatch-CrossAccountSharingRole",
        "Condition": {
          "StringEquals": {
            "aws:ResourceOrgID": "{{org-id}}"
          }
        }
      }
    ]
  }
  ```
+ **帳戶清單** – 允許監控帳戶僅在您列出的帳戶中擔任共用角色。將每個範例帳戶 ID （例如 `111122223333`) 取代為共用帳戶的 ID。使用下列 JSON 內嵌政策：

  ```
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": [
          "arn:aws:iam::111122223333:role/CloudWatch-CrossAccountSharingRole",
          "arn:aws:iam::444455556666:role/CloudWatch-CrossAccountSharingRole"
        ]
      }
    ]
  }
  ```
+ **任何帳戶** – 允許監控帳戶在任何帳戶中擔任共用角色。這符合 CloudWatch 為您建立的角色許可，但它是限制最少的選項。使用下列 JSON 內嵌政策：

  ```
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::*:role/CloudWatch-CrossAccountSharingRole"
      }
    ]
  }
  ```

### 跨區域功能
<a name="cross-region-functionality"></a>

此功能會自動提供跨區域功能。您不需要採取任何額外的步驟，即可在相同圖形或相同儀表板上的單一帳戶中顯示來自不同區域的指標。警示不支援跨區域功能，因此您無法在監看不同區域中指標的一個區域中建立警示。

## （選用） 與 整合 AWS Organizations
<a name="cross-account-and-AWS-organizations"></a>

如果您想要將跨帳戶功能與 整合 AWS Organizations，您必須將組織中所有帳戶的清單提供給監控帳戶。

**若要讓跨帳戶 CloudWatch 功能存取組織中所有帳戶的清單，請執行下列步驟**

1. 登入您組織的管理帳戶。

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Settings (設定)**，然後選擇 **Configure (配置)**。

1. 在 **Grant permission to view the list of accounts in the organization (授與檢視組織中帳戶清單權限)** 中，請選擇要提示輸入帳戶 ID 清單的 **Specific accounts (特定帳戶)**。組織中的帳戶清單只會與您在此處指定的帳戶共用。

1. 選擇 **Share organization account list (共用組織帳戶清單)**。

1. 選擇 **Launch CloudFormation template (啟動 CloudFormation 範本)**。

   在確認畫面中輸入 **Confirm**，並選擇 **Launch template (啟動範本)**。

## 對您的 CloudWatch 跨帳戶設定進行故障診斷
<a name="troubleshooting-cross-account-cross-Region"></a>

本節包含針對 CloudWatch 中的跨帳戶主控台部署的故障診斷秘訣。

**我收到顯示跨帳戶資料的存取被拒錯誤**  
請檢查以下內容：  
+ 您的監控帳戶必須具有名為 **ServiceRoleForCloudWatchCrossAccountV2** 的角色。如果沒有，請建立此角色。如需詳細資訊，請參閱[設定監控帳戶](#setup_monitoring_account)。
+ 每個共用帳戶都必須具有名為 **CloudWatch-CrossAccountSharingRole** 的角色。如果沒有，請建立此角色。如需詳細資訊，請參閱[設定共用帳戶](#setup_sharing_account)。
+ 該共用角色必須信任監控帳戶。

**若要確認您的角色已針對 CloudWatch 跨帳戶主控台正確設定**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**。

1. 在角色清單中，確定所需的角色存在。在共用帳戶中，尋找 **CloudWatch-CrossAccountSharingRole**。在監控帳戶中，尋找 **ServiceRoleForCloudWatchCrossAccountV2**。

1. 如果您在共用帳戶中，且 **CloudWatch-CrossAccountSharingRole** 已經存在，請選擇 **CloudWatch-CrossAccountSharingRole**。

1. 選擇 **Trust relationships (信任關係)**、**Edit trust relationship (編輯信任關係)**。

1. 確認政策會列出監控帳戶的帳戶 ID，或包含監控帳戶之組織的組織 ID。

**我在主控台中看不到帳戶的下拉式清單**  
首先，請檢查您是否已建立正確的 IAM 角色，如前述故障診斷一節中所述。如果設定正確，請確定您已啟用此帳戶以檢視跨帳戶資料，如 [Enable Your Account to View Cross-Account Data](#view_cross_account) 中所述。

## 監控跨帳戶存取的帳戶許可
<a name="cross-account-cross-region-limitations"></a>

若要成功存取來源帳戶中的動作，監控帳戶中的使用者必須具有監控帳戶中該動作的所有資源 (\*) 的同等許可。這是監控帳戶中的本機許可要求，與來源帳戶中跨帳戶共用角色的許可無關。

### 範例
<a name="policy-configuration-examples"></a>

若要在來源帳戶中啟動 Logs 查詢，您必須擁有監控帳戶中 StartQuery 的萬用字元 (\*) 存取權。來源帳戶的跨帳戶角色仍然可以限制對特定日誌群組的存取。

**支援的 - 萬用字元資源：**

```
{
  "Effect": "Allow",
  "Action": "logs:StartQuery",
  "Resource": "*"
}
```

**不支援 - 特定 ARN：**

```
{
  "Effect": "Allow",
  "Action": "logs:StartQuery",
  "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/my-function:*"
}
```

## 使用跨帳戶後停用和清除
<a name="cleanup-cross-account-cross-Region"></a>

若要停用 CloudWatch 的跨帳戶功能，請遵循這些步驟。

**步驟 1：移除跨帳戶堆疊或角色**

最佳方法是移除用於啟用跨帳戶功能的 CloudFormation 堆疊。
+ 在每個共用帳戶中，移除 **CloudWatch-CrossAccountSharingRole** 堆疊。
+ 如果您使用 AWS Organizations 來啟用組織中所有帳戶的跨帳戶功能，請移除組織管理帳戶中的 **CloudWatch-CrossAccountListAccountsRole ** 堆疊。

如果您未使用 CloudFormation 堆疊來啟用跨帳戶功能，請執行下列動作：
+ 在每個共用帳戶中，刪除 **CloudWatch-CrossAccountSharingRole** IAM 角色。
+ 如果您使用 AWS Organizations 來啟用組織中所有帳戶的跨帳戶功能，請刪除組織管理帳戶中的 **CloudWatch-CrossAccountSharing-ListAccountsRole** IAM 角色。

**步驟 2：移除服務角色**

在監控帳戶中，刪除 **ServiceRoleForCloudWatchCrossAccountV2** IAM 服務角色。