

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

# 自動化部署 - StackSets
<a name="deployment-stackset"></a>

**注意**  
我們建議您使用 StackSets 部署 。不過，對於單一帳戶部署或測試或評估目的，請考慮[堆疊部署](deployment.md)選項。

啟動解決方案之前，請檢閱本指南中討論的架構、解決方案元件、安全性和設計考量事項。遵循本節中的step-by-step說明，設定解決方案並將其部署到您的 AWS Organizations。

 **部署時間：**每個帳戶約 30 分鐘，取決於 StackSet 參數。

## 先決條件
<a name="prerequisites-stackset"></a>

 [AWS Organizations](https://aws.amazon.com/organizations/) 可協助您集中管理多帳戶 AWS 環境和資源。StackSets 最適合與 AWS Organizations 搭配使用。

如果您先前已部署此解決方案的 v1.3.x 或更早版本，則必須解除安裝現有的解決方案。如需詳細資訊，請參閱[更新解決方案](update-the-solution.md)。

在部署此解決方案之前，請檢閱您的 AWS Security Hub 部署：
+ 您的 AWS Organization 中必須有委派的 Security Hub 管理員帳戶。
+ Security Hub 應設定為跨區域彙總問題清單。如需詳細資訊，請參閱《AWS Security Hub 使用者指南》中的[跨區域彙總問題](https://docs.aws.amazon.com/securityhub/latest/userguide/finding-aggregation.html)清單。
+ 您應該在擁有 AWS 用量的每個區域中為您的組織[啟用 Security Hub](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-prereq-config.html)。

此程序假設您有多個使用 AWS Organizations 的帳戶，並已委派 AWS Organizations 管理員帳戶和 AWS Security Hub 管理員帳戶。

 **請注意，此解決方案適用於 [AWS Security Hub 和 AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-are-securityhub-services.html)。**

## 部署概觀
<a name="deployment-overview-stackset"></a>

**注意**  
此解決方案的 StackSets 部署使用服務受管和自我管理 StackSets 的組合。自我管理的 StackSets 必須目前使用，因為它們使用巢狀 StackSets，服務管理的 StackSets 尚不支援。

從 AWS Organizations 中的委派管理員帳戶部署 StackSets。 [https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-cloudformation.html](https://docs.aws.amazon.com/organizations/latest/userguide/services-that-can-integrate-cloudformation.html) AWS Organizations

**規劃**  
使用下列表單來協助 StackSets 部署。準備您的資料，然後在部署期間複製並貼上這些值。

```
AWS Organizations admin account ID: _______________
Security Hub admin account ID: _______________
CloudTrail Logs Group: ______________________________
Member account IDs (comma-separated list):
___________________,
___________________,
___________________,
___________________,
___________________
AWS Organizations OUs (comma-separated list):
___________________,
___________________,
___________________,
___________________,
___________________
```

 [（選用） 步驟 0：部署票證整合堆疊](#step-0-stackset) 
+ 如果您想要使用票證功能，請先將票證整合堆疊部署到您的 Security Hub 管理員帳戶。
+ 從此堆疊複製 Lambda 函數名稱，並將其做為管理員堆疊的輸入提供 （請參閱步驟 1)。

 [步驟 1：在委派的 Security Hub 管理員帳戶中啟動管理員堆疊](#step-1-stackset) 
+ 使用自我管理的 StackSet，在與 Security Hub 管理員位於相同區域的 AWS Security Hub 管理員帳戶中啟動 `automated-security-response-admin.template` AWS CloudFormation 範本。此範本使用巢狀堆疊。
+ 選擇要安裝的安全標準。根據預設，只會選取 SC （建議）。
+ 選擇要使用的現有 Orchestrator 日誌群組。`Yes` 如果先前安裝`SO0111-ASR- Orchestrator`已存在，請選取 。
+ 選擇是否啟用解決方案的 Web UI。如果您選擇啟用此功能，您也必須輸入要指派管理員角色的電子郵件地址。
+ 選取收集與解決方案運作狀態相關的 CloudWatch 指標的偏好設定。

如需自我管理 StackSets 的詳細資訊，請參閱《*AWS CloudFormation 使用者指南*》中的[授予自我管理許可](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html)。

 [步驟 2：在每個 AWS Security Hub 成員帳戶中安裝修復角色](#step-2-stackset) 

等待步驟 1 完成部署，因為步驟 2 中的範本參考步驟 1 建立的 IAM 角色。
+ 使用服務管理的 StackSet，在 `automated-security-response-member-roles.template` AWS Organizations 中每個帳戶中的單一區域中啟動 AWS CloudFormation 範本。 AWS Organizations
+ 選擇在新帳戶加入組織時自動安裝此範本。
+ 輸入您的 AWS Security Hub 管理員帳戶的帳戶 ID。
+ 輸入 的值`namespace`，此值將用於防止資源名稱與相同帳戶中的先前或並行部署發生衝突。輸入最多 9 個小寫英數字元的字串。

 [步驟 3：在每個 AWS Security Hub 成員帳戶和區域中啟動成員堆疊](#step-3-stackset) 
+ 使用自我管理的 StackSets，在 AWS Organization `automated-security-response-member.template` 中擁有相同 Security Hub 管理員管理之每個帳戶中 AWS 資源的所有區域中啟動 AWS CloudFormation 範本。
**注意**  
在服務受管 StackSets 支援巢狀堆疊之前，您必須為加入組織的任何新帳戶執行此步驟。
+ 選擇要安裝的 Security Standard 手冊。
+ 提供 CloudTrail 日誌群組的名稱 （由部分修復使用）。
+ 輸入您的 AWS Security Hub 管理員帳戶的帳戶 ID。
+ 輸入 的值`namespace`，此值將用於防止資源名稱與相同帳戶中的先前或並行部署發生衝突。輸入最多 9 個小寫英數字元的字串。這應該符合您為成員角色堆疊選取的`namespace`值，此外，命名空間值不需要為每個成員帳戶唯一。

## （選用） 步驟 0：啟動票證系統整合堆疊
<a name="step-0-stackset"></a>

1. 如果您想要使用票證功能，請先啟動個別的整合堆疊。

1. 選擇 Jira 或 ServiceNow 提供的整合堆疊，或使用它們做為藍圖，以實作您自己的自訂整合。

    **若要部署 Jira 堆疊**：

   1. 輸入堆疊的名稱。

   1. 將 URI 提供給 Jira 執行個體。

   1. 為您要傳送票證的 Jira 專案提供專案金鑰。

   1. 在 Secrets Manager 中建立新的金鑰/值秘密，該秘密會保存您的 Jira `Username`和 `Password`。
**注意**  
您可以選擇使用 Jira API 金鑰來取代您的密碼，方法是將您的使用者名稱提供為 `Username`，並將您的 API 金鑰提供為 `Password`。

   1. 新增此秘密的 ARN 做為堆疊的輸入。

       **提供堆疊名稱 Jira 專案資訊和 Jira API 登入資料。**  
![\[票證系統整合堆疊 jira\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/automated-security-response-on-aws/images/ticket-system-integration-stack-jira.png)

       **Jira 欄位組態**：

      部署 Jira 堆疊之後，您可以透過在 Lambda 函數上設定`JIRA_FIELDS_MAPPING`環境變數來自訂 Jira 票證欄位。此 JSON 字串會覆寫預設 Jira 票證欄位，且必須遵循 Jira API 欄位結構。

      當 `JIRA_FIELDS_MAPPING`為空或未指定欄位時的預設值：
      +  **優先順序**： `{"id": "3"}` （中等優先順序）
      +  **issuetype**： `{"id": "10006"}` （任務）
      +  **accountId**：使用 `GET /rest/api/2/myself` API 端點自動擷取

        具有自訂欄位的範例組態：

        ```
        {
          "reporter": {"accountId": "123456:494dcbff-1b80-482c-a89d-56ae81c145a4"},
          "priority": {"id": "1"},
          "issuetype": {"id": "10006"},
          "assignee": {"accountId": "123456:another-user-id"},
          "customfield_10001": "custom value"
        }
        ```

        常見的 Jira 欄位 IDs：
      +  **優先順序 IDs**：1 （最高）、2 （高）、3 （中）、4 （低）、5 （最低）
      +  **問題類型 ID**：依 Jira 專案而異 （例如 10006 for Task)
      +  **帳戶 ID**：格式化 `123456:494dcbff-1b80-482c-a89d-56ae81c145a4` 

        您可以使用 Jira REST API 尋找 Jira 欄位 IDs 和帳戶 IDs：
      +  `GET /rest/api/2/myself` 帳戶 ID 的
      +  `GET /rest/api/2/priority` 優先順序 IDs
      +  `GET /rest/api/2/project/{projectKey}` 適用於問題類型 IDs

        如需詳細資訊，請參閱 [Jira REST API v2 問題 POST 格式](https://developer.atlassian.com/server/jira/platform/rest/v10000/api-group-issue/#api-api-2-issue-post)。

         **若要部署 ServiceNow 堆疊**：

   1. 輸入堆疊的名稱。

   1. 提供 ServiceNow 執行個體的 URI。

   1. 提供您的 ServiceNow 資料表名稱。

   1. 在 ServiceNow 中建立 API 金鑰，並具有修改您要寫入之資料表的許可。

   1. 使用 金鑰在 Secrets Manager 中建立秘密，`API_Key`並提供秘密 ARN 做為堆疊的輸入。

       **提供堆疊名稱 ServiceNow 專案資訊和 ServiceNow API 登入資料。**  
![\[票證系統整合堆疊服務現在\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/automated-security-response-on-aws/images/ticket-system-integration-stack-servicenow.png)

       **若要建立自訂整合堆疊**：包含解決方案協調器 Step Functions 可以針對每個修復呼叫的 Lambda 函數。Lambda 函數應採用 Step Functions 提供的輸入，根據您的票證系統需求建構承載，並向您的系統提出建立票證的請求。

## 步驟 1：在委派的 Security Hub 管理員帳戶中啟動管理員堆疊
<a name="step-1-stackset"></a>

1. `automated-security-response-admin.template`使用您的 Security Hub 管理員帳戶啟動管理員[堆疊](https://solutions-reference.s3.amazonaws.com/automated-security-response-on-aws/latest/automated-security-response-admin.template) 。一般而言，單一區域中每個組織一個。由於此堆疊使用巢狀堆疊，您必須將此範本部署為自我管理的 StackSet。

### Parameters
<a name="parameters"></a>


| 參數 | 預設 | Description | 
| --- | --- | --- | 
|   **載入 SC 管理員堆疊**   |   `yes`   |  指定是否要安裝管理員元件以自動修復 SC 控制項。  | 
|   **載入 AFSBP Admin Stack**   |   `no`   |  指定是否要安裝管理員元件以自動修復 FSBP 控制項。  | 
|   **載入 CIS120 管理員堆疊**   |   `no`   |  指定是否要安裝管理員元件以自動修復 CIS120 控制項。  | 
|   **載入 CIS140 管理員堆疊**   |   `no`   |  指定是否要安裝管理員元件以自動修復 CIS140 控制項。  | 
|   **載入 CIS300 管理員堆疊**   |   `no`   |  指定是否要安裝管理員元件以自動修復 CIS300 控制項。  | 
|   **載入 PC1321 管理員堆疊**   |   `no`   |  指定是否要安裝管理員元件以自動修復 PC1321 控制項。  | 
|   **載入 NIST Admin Stack**   |   `no`   |  指定是否要安裝管理員元件以自動修復 NIST 控制項。  | 
|   **重複使用協調器日誌群組**   |   `no`   |  選取是否要重複使用現有的 `SO0111-ASR-Orchestrator` CloudWatch Logs 群組。這可簡化重新安裝和升級，而不會遺失先前版本的日誌資料。如果此帳戶中先前部署`Orchestrator Log Group`仍存在 ，`yes`請重複使用現有的`Orchestrator Log Group`選擇，否則為 `no`。如果您從比 v2.3.0 更舊的版本執行堆疊更新，請選擇 `no`   | 
|   **ShouldDeployWebUI**   |   `yes`   |  部署 Web UI 元件，包括 API Gateway、Lambda 函數和 CloudFront 分佈。選取「是」以啟用 Web 型使用者介面，以檢視問題清單和修復狀態。如果您選擇停用此功能，您仍然可以使用 Security Hub CSPM 自訂動作來設定自動修復並隨需執行修復。  | 
|   **AdminUserEmail**   |   *（選用輸入）*   |  初始管理員使用者的電子郵件地址。此使用者將擁有 ASR Web UI 的完整管理存取權。**只有在**啟用 Web UI 時才需要。  | 
|   **使用 CloudWatch 指標**   |   `yes`   |  指定是否啟用 CloudWatch 指標來監控解決方案。這會建立 CloudWatch Dashboard 來檢視指標。  | 
|   **使用 CloudWatch 指標警示**   |   `yes`   |  指定是否啟用解決方案的 CloudWatch 指標警示。這將為解決方案收集的特定指標建立警示。  | 
|   **RemediationFailureAlarmThreshold**   |   `5`   |  指定每個控制項 ID 修復失敗百分比的閾值。例如，如果您輸入 `5`，當控制 ID 在指定日期失敗超過 5% 的修復時，您會收到警示。 只有在警示建立時，此參數才會運作 （請參閱**使用 CloudWatch Metrics 警示**參數）。  | 
|   **EnableEnhancedCloudWatchMetrics**   |   `no`   |  如果 `yes`， 會建立其他 CloudWatch 指標，以個別追蹤 CloudWatch 儀表板上的所有控制項 IDs，並做為 CloudWatch 警示。 請參閱 [成本](cost.md#additional-cost-enhanced-metrics) 一節，了解這會產生的額外成本。  | 
|   **TicketGenFunctionName**   |   *（選用輸入）*   |  選用。如果您不想整合票證系統，請保留空白。否則，請從[步驟 0](deployment.md#step-0) 的堆疊輸出提供 Lambda 函數名稱，例如：`SO0111-ASR-ServiceNow-TicketGenerator`。  | 

 **設定 StackSet 選項** 

![\[設定堆疊集選項\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/automated-security-response-on-aws/images/configre-stackset-options.png)


1. 針對**帳戶號碼**參數，輸入 AWS Security Hub 管理員帳戶的帳戶 ID。

1. 針對**指定區域**參數，僅選取開啟 Security Hub 管理員的區域。請等待此步驟完成，再繼續步驟 2。

## 步驟 2：在每個 AWS Security Hub 成員帳戶中安裝修補角色
<a name="step-2-stackset"></a>

使用服務管理的 StackSets 來部署[成員角色範本](https://solutions-reference.s3.amazonaws.com/automated-security-response-on-aws/latest/automated-security-response-member-roles.template) `automated-security-response-member-roles.template`。此 StackSet 必須部署在每個成員帳戶的一個區域中。它定義了允許從 ASR Orchestrator 步驟函數進行跨帳戶 API 呼叫的全域角色。

### Parameters
<a name="parameters-2"></a>


| 參數 | 預設 | Description | 
| --- | --- | --- | 
|   **命名空間**   |   *需要輸入*   |  輸入最多 9 個小寫英數字元的字串。要新增為修補 IAM 角色名稱尾碼的唯一命名空間。相同的命名空間應該用於成員角色和成員堆疊。對於每個解決方案部署，此字串應該是唯一的，但不需要在堆疊更新期間變更。命名空間值**不需要**每個成員帳戶是唯一的。  | 
|   **Sec Hub 帳戶管理員**   |   *需要輸入*   |  輸入 AWS Security Hub 管理員帳戶的 12 位數帳戶 ID。此值會將許可授予管理員帳戶的解決方案角色。  | 

1. 根據您的組織政策，部署到整個組織 （典型） 或組織單位。

1. 開啟自動部署，讓 AWS Organizations 中的新帳戶收到這些許可。

1. 針對**指定區域**參數，選取單一區域。IAM 角色是全域的。您可以在此 StackSet 部署時繼續執行步驟 3。

    **指定 StackSet 詳細資訊**   
![\[指定堆疊集詳細資訊\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/automated-security-response-on-aws/images/specify-stackset-details.png)

## 步驟 3：在每個 AWS Security Hub 成員帳戶和區域中啟動成員堆疊
<a name="step-3-stackset"></a>

由於[成員堆疊](https://solutions-reference.s3.amazonaws.com/automated-security-response-on-aws/latest/automated-security-response-member.template)使用巢狀堆疊，您必須部署為自我管理的 StackSet。這不支援自動部署到 AWS Organization 中的新帳戶。

### Parameters
<a name="parameters"></a>


| 參數 | 預設 | Description | 
| --- | --- | --- | 
|   **提供用於建立指標篩選條件和警示的 LogGroup 名稱**   |   *需要輸入*   |  指定 CloudTrail 記錄 API 呼叫的 CloudWatch CloudWatch Logs 群組名稱。這用於 CIS 3.1-3.14 修復。  | 
|   **載入 SC 成員堆疊**   |   `yes`   |  指定是否要安裝成員元件以自動修復 SC 控制項。  | 
|   **載入 AFSBP 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 FSBP 控制項。  | 
|   **載入 CIS120 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 CIS120 控制項。  | 
|   **載入 CIS140 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 CIS140 控制項。  | 
|   **載入 CIS300 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 CIS300 控制項。  | 
|   **載入 PC1321 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 PC1321 控制項。  | 
|   **載入 NIST 成員堆疊**   |   `no`   |  指定是否要安裝成員元件以自動修復 NIST 控制項。  | 
|   **為 Redshift 稽核記錄建立 S3 儲存貯體**   |   `no`   |  選取`yes`是否應為 FSBP RedShift.4 修復建立 S3 儲存貯體。如需 S3 儲存貯體和修復的詳細資訊，請參閱《*AWS Security Hub 使用者指南*》中的 [Redshift.4 修復](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html#fsbp-redshift-4)。  | 
|   **Sec Hub 管理員帳戶**   |   *需要輸入*   |  輸入 AWS Security Hub 管理員帳戶的 12 位數帳戶 ID。  | 
|   **命名空間**   |   *需要輸入*   |  輸入最多 9 個小寫英數字元的字串。此字串會成為 IAM 角色名稱和動作日誌 S3 儲存貯體的一部分。針對成員堆疊部署和成員角色堆疊部署使用相同的值。每個解決方案部署的字串應該是唯一的，但不需要在堆疊更新期間變更。  | 
|   **EnableCloudTrailForASRActionLog**   |   `no`   |  `yes` 如果您想要監控 CloudWatch 儀表板上解決方案執行的管理事件，請選取 。解決方案會在您選取 的每個成員帳戶中建立 CloudTrail 追蹤`yes`。您必須將解決方案部署到 AWS 組織，才能啟用此功能。**此外，您只能在相同帳戶中的單一區域中啟用此功能。**請參閱 [成本](cost.md#additional-cost-action-log) 一節，以了解這會產生的額外成本。  | 

 **帳戶** 

![\[帳戶\]](http://docs.aws.amazon.com/zh_tw/solutions/latest/automated-security-response-on-aws/images/accounts.png)


 **部署位置**：您可以指定帳戶號碼或組織單位的清單。

 **指定區域**：選取您要修復問題清單的所有區域。您可以根據帳戶和區域的數目適當調整部署選項。區域並行可以是平行的。