

# 緩解動作
<a name="dd-mitigation-actions"></a>

您可以使用 AWS IoT Device Defender 來採取動作，以緩解稽核發現結果或偵測警示中找到的問題。

**注意**  
不會對抑制的稽核發現結果執行緩解動作。如需稽核發現結果抑制的詳細資訊，請參閱 [稽核調查結果抑制](audit-finding-suppressions.md)

## 稽核緩解動作
<a name="dd-audit-mitigation-actions"></a>

AWS IoT Device Defender 為不同的稽核檢查提供預先定義的動作。您可以為您的 AWS 帳戶 設定這些動作，然後將它們套用到一組發現結果。這些問題可能是：
+ 在稽核中的所有問題。您可以在 AWS IoT 主控台及使用 AWS CLI 來使用此選項。
+ 個別問題的清單。僅有使用 AWS CLI 才可使用此選項。
+ 在稽核中篩選過的一組問題。

下表列出稽核檢查類型，以及針對每個項目支援的緩解動作：


**緩解動作映射的稽核檢查**  

| 稽核檢查 | 支援緩解動作 | 
| --- | --- | 
| REVOKED\_CA\_CERT\_CHECK | UPDATE\_CA\_CERTIFICATE PUBLISH\_FINDING\_TO\_SNS、 | 
| INTERMEDIATE\_CA\_REVOKED\_FOR\_ACTIVE\_DEVICE\_CERTIFICATES\_CHECK | UPDATE\_DEVICE\_CERTIFICATE、ADD\_THINGS\_TO\_THING\_GROUP PUBLISH\_FINDING\_TO\_SNS、 | 
| DEVICE\_CERTIFICATE\_SHARED\_CHECK | UPDATE\_DEVICE\_CERTIFICATE、ADD\_THINGS\_TO\_THING\_GROUP PUBLISH\_FINDING\_TO\_SNS、 | 
| UNAUTHENTICATED\_COGNITO\_ROLE\_OVERLY\_PERMISSIVE\_CHECK | PUBLISH\_FINDING\_TO\_SNS | 
| AUTHENTICATED\_COGNITO\_ROLE\_OVERLY\_PERMISSIVE\_CHECK | PUBLISH\_FINDING\_TO\_SNS | 
| IOT\_POLICY\_OVERLY\_PERMISSIVE\_CHECK | REPLACE\_DEFAULT\_POLICY\_VERSION PUBLISH\_FINDING\_TO\_SNS、 | 
| IOT\_POLICY\_POTENTIAL\_MISCONFIGURATION\_CHECK | REPLACE\_DEFAULT\_POLICY\_VERSION PUBLISH\_FINDING\_TO\_SNS、 | 
| CA\_CERTIFICATE\_EXPIRING\_CHECK | UPDATE\_CA\_CERTIFICATE PUBLISH\_FINDING\_TO\_SNS、 | 
| CONFLICTING\_CLIENT\_IDS\_CHECK | PUBLISH\_FINDING\_TO\_SNS | 
| DEVICE\_CERTIFICATE\_EXPIRING\_CHECK | UPDATE\_DEVICE\_CERTIFICATE、ADD\_THINGS\_TO\_THING\_GROUP PUBLISH\_FINDING\_TO\_SNS、 | 
| REVOKED\_DEVICE\_CERTIFICATE\_STILL\_ACTIVE\_CHECK | UPDATE\_DEVICE\_CERTIFICATE、ADD\_THINGS\_TO\_THING\_GROUP PUBLISH\_FINDING\_TO\_SNS、 | 
| LOGGING\_DISABLED\_CHECK | ENABLE\_IOT\_LOGGING PUBLISH\_FINDING\_TO\_SNS、 | 
| DEVICE\_CERTIFICATE\_KEY\_QUALITY\_CHECK | UPDATE\_DEVICE\_CERTIFICATE、ADD\_THINGS\_TO\_THING\_GROUP PUBLISH\_FINDING\_TO\_SNS、 | 
| CA\_CERTIFICATE\_KEY\_QUALITY\_CHECK | UPDATE\_CA\_CERTIFICATE PUBLISH\_FINDING\_TO\_SNS、 | 
| IOT\_ROLE\_ALIAS\_OVERLY\_PERMISSIVE\_CHECK | PUBLISH\_FINDING\_TO\_SNS | 
| IOT\_ROLE\_ALIAS\_ALLOWS\_ACCESS\_TO\_UNUSED\_SERVICES\_CHECK | PUBLISH\_FINDING\_TO\_SNS | 

所有的稽核檢查都支援將稽核發現結果問題發佈到 Amazon SNS，以便您採取自訂動作來回應通知。每個稽核檢查類型都可支援其他緩解動作：

**REVOKED\_CA\_CERT\_CHECK**  
+ 變更憑證狀態，以將其在 AWS IoT 中標示為非作用中。

**DEVICE\_CERTIFICATE\_SHARED\_CHECK**  
+ 變更裝置憑證狀態，以將其在 AWS IoT 中標示為非作用中。
+ 將使用該憑證的裝置新增到物件群組。

**UNAUTHENTICATED\_COGNITO\_ROLE\_OVERLY\_PERMISSIVE\_CHECK**  
+ 沒有其他支援的動作。

**AUTHENTICATED\_COGNITO\_ROLE\_OVERLY\_PERMISSIVE\_CHECK**  
+ 沒有其他支援的動作。

**IOT\_POLICY\_OVERLY\_PERMISSIVE\_CHECK**  
+ 新增空白 AWS IoT 政策版本到限制權限。

**IOT\_POLICY\_POTENTIAL\_MISCONFIGURATION\_CHECK**  
+ 識別 AWS IoT 政策中可能的錯誤設定。

**CA\_CERT\_APPROACHING\_EXPIRATION\_CHECK**  
+ 變更憑證狀態，以將其在 AWS IoT 中標示為非作用中。

**CONFLICTING\_CLIENT\_IDS\_CHECK**  
+ 沒有其他支援的動作。

**DEVICE\_CERT\_APPROACHING\_EXPIRATION\_CHECK**  
+ 變更裝置憑證狀態，以將其在 AWS IoT 中標示為非作用中。
+ 將使用該憑證的裝置新增到物件群組。

**DEVICE\_CERTIFICATE\_KEY\_QUALITY\_CHECK**  
+ 變更裝置憑證狀態，以將其在 AWS IoT 中標示為非作用中。
+ 將使用該憑證的裝置新增到物件群組。

**CA\_CERTIFICATE\_KEY\_QUALITY\_CHECK**  
+ 變更憑證狀態，以將其在 AWS IoT 中標示為非作用中。

**REVOKED\_DEVICE\_CERT\_CHECK**  
+ 變更裝置憑證狀態，以將其在 AWS IoT 中標示為非作用中。
+ 將使用該憑證的裝置新增到物件群組。

**LOGGING\_DISABLED\_CHECK**  
+ 啟用記錄。

AWS IoT Device Defender 支援對稽核發現結果採取以下類型的緩解動作：


****  

|  動作類型  | 備註 | 
| --- | --- | 
| ADD\_THINGS\_TO\_THING\_GROUP | 您將指定要新增裝置的群組。若成員資格超出物件可以隸屬最大群組數目，您也可以指定是否覆寫在一或多個動態群組中的成員資格。 | 
| ENABLE\_IOT\_LOGGING | 您將透過記錄權限指定日誌層級和角色。您無法指定日誌層級 DISABLED。 | 
| PUBLISH\_FINDING\_TO\_SNS | 您將指定問題應該發佈的主題。 | 
| REPLACE\_DEFAULT\_POLICY\_VERSION | 您將指定範本名稱。以預設或空白政策取代政策版本。目前只支援 BLANK\_POLICY 的值。 | 
| UPDATE\_CA\_CERTIFICATE | 您將指定憑證授權機構憑證的新狀態。目前只支援 DEACTIVATE 的值。 | 
| UPDATE\_DEVICE\_CERTIFICATE | 您將指定裝置憑證的新狀態。目前只支援 DEACTIVATE 的值。 | 

透過在稽核期間找到問題時設定標準動作，您可以持續針對這些問題進行回應。使用這些定義的緩解動作，也有助於更快速解決問題，並降低人為錯誤的機會。

**重要**  
套用變更憑證、新增物件到新群組的緩解動作，或置換可能影響您裝置和應用程式的政策。例如，裝置可能無法連接。請在套用緩解動作前先考量其影響。在裝置和應用程式可以正常運作之前，您可能需要採取其他動作來更正問題。例如，您可能需要提供更新的裝置憑證。緩解動作可以協助您快速限制風險，但您仍必須採取更正動作來解決基本問題。

有些動作 (例如重新啟用裝置憑證) 只能手動執行。AWS IoT Device Defender 並不提供已套用的自動復原緩解動作機制。

## 偵測緩解動作
<a name="dd-detect-mitigation-actions"></a>

AWS IoT Device Defender 支援對偵測警示採取以下類型的緩解動作：


|  動作類型  | 備註 | 
| --- | --- | 
| ADD\_THINGS\_TO\_THING\_GROUP | 您將指定要新增裝置的群組。若成員資格超出物件可以隸屬最大群組數目，您也可以指定是否覆寫在一或多個動態群組中的成員資格。 | 

## 如何定義並管理緩解動作
<a name="dd-manage-mitigation-actions"></a>

您可以使用 AWS IoT 主控台或 AWS CLI 來定義和管理您 AWS 帳戶 的緩解動作。

### 建立緩解動作
<a name="dd-create-mitigation-action"></a>

您定義的每個緩解動作，都是預先定義的動作類型和您帳戶的特定參數的結合。

**使用主 AWS IoT 控台來建立緩解動作**

 

1. 在 AWS IoT 主控台開啟 [Mitigation Actions](https://console.aws.amazon.com//iot/home#/dd/mitigationActionConfigsHub) (緩解動作) 頁面

1. 在 **Mitigation Actions** (緩解動作) 頁面上選擇 **Create** (建立)。

1. 在 **Create a new Mitigation Action** (建立新緩解動作) 頁面的 **Action name** (動作名稱) 中，輸入唯一的緩解動作名稱。

1. 在 **Action type (動作類型)** 中，指定您想要定義的動作類型。

1. 在 **Permissions** (許可) 中，選擇要在其許可下套用動作的 IAM 角色。

1. 每個動作類型都會要求一組不同的參數。輸入動作的參數。例如，如果您選擇 **Add things to thing group (新增物件到物件群組)** 動作類型，選擇目標群組並選擇或清除 **Override dynamic groups (覆寫動態群組)**。

1. 選擇 **Create** (建立) 以將緩解動作儲存到您的 AWS 帳戶。

**使用 AWS CLI 來建立緩解動作**
+ 使用 [CreateMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateMitigationAction.html) 命令來建立您的緩解動作。在您套用動作到稽核問題時，將使用您給予動作的唯一名稱。選擇有意義的名稱。

**使用主 AWS IoT 控台以檢視和修改緩解動作**

1. 在 AWS IoT 主控台開啟 [Mitigation Actions](https://console.aws.amazon.com//iot/home#/dd/mitigationActionConfigsHub) (緩解動作) 頁面

   **Mitigation Actions** (緩解動作) 頁面顯示一個清單，列出針對您 AWS 帳戶 定義的所有緩解動作。

1. 選擇您想變更的緩解動作動作名稱連結。

1. 選擇 **Edit** (編輯) 對緩解動作進行變更。由於緩解動作的名稱是用於識別，因此您無法更改名稱。

1. 選擇 **Update** (更新) 以將緩解動作的變更儲存到您的 AWS 帳戶。

**使用 AWS CLI 列出緩解動作**
+ 使用 [ListMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_ListMitigationAction.html) 命令列出您的緩解動作。如果您想要變更或刪除緩解動作，請記下其名稱。

**使用 AWS CLI 更新緩解動作**
+ 使用 [UpdateMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateMitigationAction.html) 命令來變更您的緩解動作。

**使用 AWS IoT 主控台刪除緩解動作**

1. 在 AWS IoT 主控台開啟 [Mitigation Actions](https://console.aws.amazon.com//iot/home#/dd/mitigationActionConfigsHub) (緩解動作) 頁面

   **Mitigation Actions** (緩解動作) 頁面會顯示針對您 AWS 帳戶定義的所有緩解動作。

1. 選擇您希望刪除的緩解動作，然後選擇 **Delete** (刪除)。

1. 在 **Are you sure you want to delete** (您確定要刪除嗎？) 視窗中選擇 **Delete** (刪除)。

**使用 AWS CLI 刪除緩解動作**
+ 使用 [UpdateMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateMitigationAction.html) 命令來變更您的緩解動作。

**使用 AWS IoT 主控台檢視緩解動作詳細資訊**

1. 在 AWS IoT 主控台開啟 [Mitigation Actions](https://console.aws.amazon.com//iot/home#/dd/mitigationActionConfigsHub) (緩解動作) 頁面

   **Mitigation Actions** (緩解動作) 頁面會顯示針對您 AWS 帳戶定義的所有緩解動作。

1. 選擇您想檢視的緩解動作動作名稱連結。

**使用 AWS CLI 以檢視緩解動作詳細資訊**
+ 使用 [DescribeMitigationAction](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeMitigationAction.html) 命令來檢視您的緩解動作詳細資訊。

## 套用緩解動作
<a name="dd-audit-apply-mitigation-actions"></a>

在您定義一組緩解動作後，您可以將這些動作套用到稽核的問題上。在您套用動作後，您便開始了稽核緩解動作任務。這個任務可能需要一些時間才能完成，取決於您的問題組和套用的動作。例如，如果您有一個憑證已過期的大型裝置集區，便可能需要花費一些時間停用所有憑證，或將這些裝置移動到隔離群組。其他動作 (例如啟用記錄功能) 則可快速完成。

您可以檢視動作執行清單和取消尚未完成的執行。已取消動作執行的已執行動作將無法復原。如果您正在套用多個動作到一組問題上，而其中一個動作失敗了，則後續動作將略過該問題 (但仍會套用到其他問題上)。問題的任務狀態為 FAILED (失敗)。在套用至問題時，如果有一或多個動作失敗，則 `taskStatus` 設為失敗。動作皆依指定的順序套用。

每個動作執行會套用一組動作到目標。該目標可以是一個問題清單，也可以是稽核的所有問題。

下圖說明如何定義稽核緩解任務，該任務會從一個稽核取得所有問題，並將一組動作套用到這些問題。單一執行會套用一個動作到一個問題。稽核緩解動作任務會輸出執行摘要。

![顯示稽核緩解動作任務的概念圖。](http://docs.aws.amazon.com/zh_tw/iot-device-defender/latest/devguide/images/conceptual-mitigation-actions-audit.png)


下圖說明如何定義稽核緩解任務，該任務會從一或多個稽核取得一份個別問題清單，並將一組動作套用到這些問題上。單一執行會套用一個動作到一個問題。稽核緩解動作任務會輸出執行摘要。

![顯示稽核緩解動作任務的概念圖。](http://docs.aws.amazon.com/zh_tw/iot-device-defender/latest/devguide/images/conceptual-mitigation-actions-findings.png)


您可以使用 AWS IoT 主控台或 AWS CLI 以套用緩解動作。

**透過啟動動作執行以使用 AWS IoT 主控台套用緩解動作**

1. [在 AWS IoT 主控台中開啟 Audit results (稽核結果) 頁面](https://console.aws.amazon.com//iot/home#/dd/auditResultsHub)。

1. 選擇您要套用動作的稽核名稱。

1. 選擇 **Start Mitigation Actions** (開始緩解動作)。如果您的所有檢查都合規，則此按鈕無法使用。

1. 在 **Start a new mitigation action** (開始新的緩解動作) 中，任務名稱預設為稽核 ID，但您可以變更為其他更有意義的名稱。

1. 對於稽核中每種擁有一或多個不合規的檢查類型而言，您可以選擇套用一或多個動作。只有對檢查類型有效的動作才會顯示。
**注意**  
如果您還沒有為您的 AWS 帳戶 設定動作，則動作清單為空的。您可以選擇 **Create mitigation action** (建立緩和動作)連結以建立一或多項緩和動作。

1. 當您指定想要套用的所有動作後，請選擇 **Start task** (開始任務)。

**透過啟動稽核緩解動作執行以使用 AWS CLI 來套用緩解動作**

1. 如果您想要套用動作到稽核的所有發現結果，請使用 [ListAuditTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditTasks.html) 命令來尋找任務 ID。

1. 如果您僅想要將動作套用到選取的發現結果，請使用 [ListAuditFindings](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditFindings.html) 命令以取得發現結果 ID。

1. 使用 [ListMitigationActions](https://docs.aws.amazon.com/iot/latest/apireference/API_ListMitigationActions.html) 命令並記下您要套用的緩解動作名稱。

1. 使用 [StartAuditMitigationActionsTask](https://docs.aws.amazon.com/iot/latest/apireference/API_StartAuditMitigationActionsTask.html) 命令，將動作套用到目標。請記下任務 ID。您可以使用該 ID 來檢查動作執行狀態、檢閱詳細資訊，或將其取消。

   

**使用 AWS IoT 主控台以檢視您的動作執行**

1. 在 AWS IoT 主控台開啟 [Action tasks](https://console.aws.amazon.com//iot/home#/dd/auditTasksHub) (動作任務) 頁面

   動作任務清單會顯示每個啟動和目前的狀態。

1. 選擇 **Name (名稱)** 連結以檢視任務詳細資訊。詳細資訊包括由任務套用的所有動作、他們的目標，以及任務的狀態。  
![稽核緩解動作任務的詳細資訊。](http://docs.aws.amazon.com/zh_tw/iot-device-defender/latest/devguide/images/audit-action-execution-task-details.png)

   您可以使用 **Show executions for (顯示執行)** 篩選條件，以專注於動作類型或在動作狀態。

1. 若要查看任務的詳細資訊，請在 **Executions (執行)** 中選擇 **Show (顯示)**。  
![稽核緩解動作任務的執行詳細資訊。](http://docs.aws.amazon.com/zh_tw/iot-device-defender/latest/devguide/images/audit-action-execution-task-executions.png)

**使用 AWS CLI 來列出您已開始的任務**

1. 使用 [ListAuditMitigationActionsTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditMitigationActionsTasks.html) 來檢視您的稽核緩解動作任務。您可以提供篩選條件來縮小結果。如果您想要檢視任務的詳細資訊，請記下任務 ID。

1. 使用 [ListAuditMitigationActionsExecutions](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuditMitigationActionsExecutions.html) 以檢視特定稽核緩解動作任務的執行詳細資訊。

1. 使用 [DescribeAuditMitigationActionsTask](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuditMitigationActionsTask.html) 以檢視任務的詳細資訊，例如該任務啟動時指定的參數。

**使用 AWS CLI 來取消執行中的稽核緩解動作任務**

1. 使用 [ListAuditMitigationActionsTasks](https://docs.aws.amazon.com/iot/latest/apireference/API_ListDetectMitigationActionsExecutions.html) 命令來尋找您想取消執行任務的任務 ID。您可以提供篩選條件來縮小結果。

1. 使用 [ListDetectMitigationActionsExecutions](https://docs.aws.amazon.com/iot/latest/apireference/API_CancelAuditMitigationActionsTask.html) 命令，搭配任務 ID 來取消您的稽核緩解動作任務。您無法取消已完成的任務。在您取消任務時，剩餘的動作便不會套用，但已套用的緩解動作將不會復原。

## 許可
<a name="dd-audit-mitigation-permissions"></a>

對於每個您定義的緩解動作，您必須提供用於套用該動作的角色。




**緩解動作的許可**  

| 動作類型 | 許可政策範本 | 
| --- | --- | 
| UPDATE\_DEVICE\_CERTIFICATE |    JSON   

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "iot:UpdateCertificate"
            ],
            "Resource":[
                "*"
            ]
        }
    ]
}
```      | 
| UPDATE\_CA\_CERTIFICATE |    JSON   

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "iot:UpdateCACertificate"
            ],
            "Resource":[
                "*"
            ]
        }
    ]
}
```      | 
| ADD\_THINGS\_TO\_THING\_GROUP |    JSON   

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "iot:ListPrincipalThings",
                "iot:AddThingToThingGroup"
            ],
            "Resource":[
                "*"
            ]
        }
    ]
}
```      | 
| REPLACE\_DEFAULT\_POLICY\_VERSION |    JSON   

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "iot:CreatePolicyVersion"
            ],
            "Resource":[
                "*"
            ]
        }
    ]
}
```      | 
| ENABLE\_IOT\_LOGGING |    JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:SetV2LoggingOptions"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/IoTLoggingRole"
    }
  ]
}
```      | 
| PUBLISH\_FINDING\_TO\_SNS |    JSON   

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "sns:Publish"
            ],
            "Resource":[
                "arn:aws:sns:{{us-east-1}}:123456789012:{{example-topic}}"
            ]
        }
    ]
}
```      | 

對於所有緩解動作類型，請使用下列信任政策範本：

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:*:123456789012::*"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012:"
        }
      }
    }
  ]
}
```

------