

# AWS IoT Device Defender 監査結果をいつどのように表示するかをカスタマイズする
<a name="dd-suppressions-example"></a>

AWS IoT Device Defender 監査では、AWS IoT デバイスとリソースがベストプラクティスに適合していることを確認するために、定期的にセキュリティチェックを行います。各チェックで、監査結果は適合または不適合に分類され、不適合の場合はコンソールの警告アイコンが表示されます。既知の問題のノイズの繰り返しを緩和するために、監査所見の抑制機能を使用すると、これらの不適合の通知を一時的に停止することができます。

特定のリソースまたはアカウントの監査チェックを、あらかじめ決められた期間だけ抑制できます。抑制された監査チェックの結果は、適合カテゴリと不適合カテゴリとは別に、抑制された所見として分類されます。この新しいカテゴリは、不適合の結果の場合のようにアラームをトリガーしません。これにより、既知のメンテナンス期間中または更新の完了がスケジュールされるまで、不適合の通知に煩わされる機会を減らせます。

## 開始方法
<a name="dd-gs-afs"></a>

次のセクションでは、監査結果の抑制を使用して、コンソールおよび CLI での `Device certificate expiring` チェックを抑制する方法について詳しく説明します。いずれかのデモンストレーションに従う場合は、Device Defender が検出できるように、まずは失効する証明書を 2 つ作成する必要があります。

証明書を作成するには、以下を使用します。
+ 「**AWS IoT Core デベロッパーガイド」の「[CA 証明書の作成と登録](https://docs.aws.amazon.com/iot/latest/developerguide/create-device-cert.html)」
+ [CA 証明書を使用してクライアント証明書を作成する](https://docs.aws.amazon.com/iot/latest/developerguide/create-device-cert.html) ステップ 3 で、`days` パラメータを **1** に設定します。

CLI を使用して証明書を作成している場合は、次のコマンドを入力します。

```
openssl x509 -req \ 
    -in device_cert_csr_filename \ 
    -CA root_ca_pem_filename \ 
    -CAkey root_ca_key_filename \     
    -CAcreateserial \
    -out device_cert_pem_filename \ 
    -days 1 -sha256
```

## コンソールで監査所見をカスタマイズする
<a name="dd-afs-example-console"></a>

次のチュートリアルでは、不適合の監査チェックをトリガーする、2 つの失効したデバイス証明書を持つアカウントを使用します。このシナリオでは、デベロッパーが問題に対処する新しい機能をテストしているため、警告を無効にします。各証明書用に監査所見の抑制を作成し、次週以降、監査結果が不適合にならないようにします。

1. まず、オンデマンド監査を実行して、失効したデバイス証明書のチェックが不適合であることを示します。

   [AWS IoT コンソール](https://console.aws.amazon.com/iot)で、左側のサイドバーから [**Defend**] (防御) を選択し、[**Audit**] (監査)、[**Results**] (結果) の順に選択します。[**Audit Results**] (監査結果) ページで、[**Create**] (作成) を選択します。**[新しい監査を作成する]** ウィンドウが開きます。[**Create**] (作成) を選択します。  
![\[オンデマンド監査を実行して、失効したデバイス証明書のチェックが不適合であることを示します。\]](http://docs.aws.amazon.com/ja_jp/iot-device-defender/latest/devguide/images/dd-afs-noncompliant.png)

   オンデマンドの監査結果から、[Device certificate expiring] (デバイス証明書の有効期限が切れます) が 2 つのリソースで不適合であることがわかります。

1. ここでは、デベロッパーが警告内容を修正する新機能をテストしているため、[Device certificate expiring] (デバイス証明書の有効期限が切れます) の不適合チェック警告を無効にします。

   **[防御]** の下の左側のサイドバーから、**[監査]** を選択し、**[検索結果の抑制]** を選択します。**[監査結果の抑制]** ページで、**[作成]** を選択します。  
![\[コンソールで監査所見の抑制を作成する方法\]](http://docs.aws.amazon.com/ja_jp/iot-device-defender/latest/devguide/images/dd-afs-suppressions.png)

1. **[監査結果の抑制を作成する]** ウィンドウで、次のように入力する必要があります。
   + **Audit check** (監査チェック): 抑制したい監査チェックである、`Device certificate expiring` を選択します。
   + **リソース識別**: 監査結果を抑制する証明書の 1 つのデバイス証明書 ID を入力します。
   + **Suppression duration** (抑制期間): `Device certificate expiring`の監査チェックを抑制したい期間である、`1 week` を選択します。
   + **説明 (オプション)**: この監査結果を抑制する理由を説明するメモを追加します。  
![\[詳細情報を入力する必要がある [監査結果の抑制を作成する] ページ。\]](http://docs.aws.amazon.com/ja_jp/iot-device-defender/latest/devguide/images/dd-afs-create.png)

   フィールドに入力したら、**[作成]** を選択します。監査所見の抑制が作成された後に、成功バナーが表示されます。

1. 証明書の 1 つに対して監査所見を非表示にしました。次に、2 番目の証明書の監査所見を抑制する必要があります。ステップ 3 で使用したのと同じ抑制方法を使用することもできますが、デモンストレーションのために、別の方法を使用します。

   **[防御]** の下の左側のサイドバーから、**[監査]** を選択し、**[結果]** を選択します。**[監査結果]** のページで、不適合のリソースの監査を選択します。その後、**[非準拠のチェック]** でリソースを選択します。この例では、[Device certificate expiring] (デバイス証明書の有効期限が切れます) を選択します。

1. **[デバイス証明書の有効期限が切れます]** のページ内の **[非準拠のポリシー]** で、抑制が必要な検出結果の横にあるオプションボタンを選択します。次に、**[アクション]** ドロップダウンメニューを選択し、検出結果を抑制したい期間を選択します。ここでは、他の証明書で行ったのと同じように `1 week` を選択します。**[抑制を確認]** ウィンドウで、**[抑制を有効化]** を選択します。  
![\[フローを完了する [監査抑制を作成] ページ。監査所見の抑制が作成された後に、成功バナーが表示されます。\]](http://docs.aws.amazon.com/ja_jp/iot-device-defender/latest/devguide/images/dd-afs-noncompliantcerts.png)

   監査所見の抑制が作成された後に、成功バナーが表示されます。現在、両方の監査所見が 1 週間抑制されており、デベロッパーは警告に対処するためのソリューションに取り組んでいます。

## CLI で監査所見をカスタマイズする
<a name="dd-afs-example-cli"></a>

次のチュートリアルでは、不適合の監査チェックをトリガーする、1 つの失効したデバイス証明書を持つアカウントを使用します。このシナリオでは、デベロッパーが問題に対処する新しい機能をテストしているため、警告を無効にします。証明書用に監査所見の抑制を作成し、次週以降、監査結果が不適合にならないようにします。

次の CLI コマンドを使用します。
+ [create-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/create-audit-suppression.html)
+ [describe-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-suppression.html)
+ [update-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/update-audit-suppression.html)
+ [delete-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-audit-suppression.html)
+ [list-audit-suppressions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppressions.html)

1. 次のコマンドを使用して、監査を有効にします。

   ```
   aws iot update-account-audit-configuration \
      --audit-check-configurations "{\"DEVICE_CERTIFICATE_EXPIRING_CHECK\":{\"enabled\":true}}"
   ```

   出力:

   なし。

1. 次のコマンドを使用して、`DEVICE_CERTIFICATE_EXPIRING_CHECK` 監査チェックを対象とするオンデマンド監査を実行します。

   ```
   aws iot start-on-demand-audit-task \
       --target-check-names DEVICE_CERTIFICATE_EXPIRING_CHECK
   ```

   出力:

   ```
   {
       "taskId": "787ed873b69cb4d6cdbae6ddd06996c5"
   }
   ```

1. [describe-account-audit-configuration](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-account-audit-configuration.html) コマンドを使用して、監査設定を記述します。`DEVICE_CERTIFICATE_EXPIRING_CHECK` の監査チェックをオンにしたことを確認します。

   ```
   aws iot describe-account-audit-configuration
   ```

   出力:

   ```
   {
       "roleArn": "arn:aws:iam::<accountid>:role/service-role/project",
       "auditNotificationTargetConfigurations": {
           "SNS": {
               "targetArn": "arn:aws:sns:us-east-1:<accountid>:project_sns",
               "roleArn": "arn:aws:iam::<accountid>:role/service-role/project",
               "enabled": true
           }
       },
       "auditCheckConfigurations": {
           "AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           },
           "CA_CERTIFICATE_EXPIRING_CHECK": {
               "enabled": false
           },
           "CA_CERTIFICATE_KEY_QUALITY_CHECK": {
               "enabled": false
           },
           "CONFLICTING_CLIENT_IDS_CHECK": {
               "enabled": false
           },
           "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
               "enabled": true
           },
           "DEVICE_CERTIFICATE_KEY_QUALITY_CHECK": {
               "enabled": false
           },
           "DEVICE_CERTIFICATE_SHARED_CHECK": {
               "enabled": false
           },
           "IOT_POLICY_OVERLY_PERMISSIVE_CHECK": {
               "enabled": true
           },
           "IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK": {
               "enabled": false
           },
           "IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           },
           "LOGGING_DISABLED_CHECK": {
               "enabled": false
           },
           "REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK": {
               "enabled": false
           },
           "REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK": {
               "enabled": false
           },
           "UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK": {
               "enabled": false
           }
       }
   }
   ```

   `DEVICE_CERTIFICATE_EXPIRING_CHECK` には `true` の値になっているはずです。

1. [list-audit-task](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-task.html) コマンドを使用して、完了した監査タスクを識別します。

   ```
   aws iot list-audit-tasks \
       --task-status "COMPLETED" \
       --start-time 2020-07-31 \
       --end-time 2020-08-01
   ```

   出力:

   ```
   {
       "tasks": [
           {
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "taskStatus": "COMPLETED",
               "taskType": "SCHEDULED_AUDIT_TASK"
           }
       ]
   }
   ```

   ステップ 1 で実行した監査の `taskId` は、`COMPLETED` の `taskStatus` を持っている必要があります。

1. [describe-audit-task](https://docs.aws.amazon.com/cli/latest/reference/iot/describe-audit-task.html) コマンドを使用して、前のステップの `taskId` 出力を使用して完了した監査の詳細を取得します。このコマンドは、監査の詳細を一覧で表示します。

   ```
   aws iot describe-audit-task \
       --task-id "787ed873b69cb4d6cdbae6ddd06996c5"
   ```

   出力:

   ```
   {
       "taskStatus": "COMPLETED",
       "taskType": "SCHEDULED_AUDIT_TASK",
       "taskStartTime": 1596168096.157,
       "taskStatistics": {
           "totalChecks": 1,
           "inProgressChecks": 0,
           "waitingForDataCollectionChecks": 0,
           "compliantChecks": 0,
           "nonCompliantChecks": 1,
           "failedChecks": 0,
           "canceledChecks": 0
       },
       "scheduledAuditName": "AWSIoTDeviceDefenderDailyAudit",
       "auditDetails": {
           "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
               "checkRunStatus": "COMPLETED_NON_COMPLIANT",
               "checkCompliant": false,
               "totalResourcesCount": 195,
               "nonCompliantResourcesCount": 2
           }
       }
   }
   ```

1. [list-audit-findings](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-findings.html) コマンドを使用して不適合の証明書 ID を検索し、このリソースの監査アラートを一時停止できるようにします。

   ```
   aws iot list-audit-findings \
       --start-time 2020-07-31 \
       --end-time 2020-08-01
   ```

   出力:

   ```
   {
       "findings": [
           {
               "findingId": "296ccd39f806bf9d8f8de20d0ceb33a1",
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "taskStartTime": 1596168096.157,
               "findingTime": 1596168096.651,
               "severity": "MEDIUM",
               "nonCompliantResource": {
                   "resourceType": "DEVICE_CERTIFICATE",
                   "resourceIdentifier": {
                       "deviceCertificateId": "b4490<shortened>"
                   },
                   "additionalInfo": {
                   "EXPIRATION_TIME": "1582862626000"
                   }
               },
               "reasonForNonCompliance": "Certificate is past its expiration.",
               "reasonForNonComplianceCode": "CERTIFICATE_PAST_EXPIRATION",
               "isSuppressed": false
           },
           {
               "findingId": "37ecb79b7afb53deb328ec78e647631c",
               "taskId": "787ed873b69cb4d6cdbae6ddd06996c5",
               "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "taskStartTime": 1596168096.157,
               "findingTime": 1596168096.651,
               "severity": "MEDIUM",
               "nonCompliantResource": {
                   "resourceType": "DEVICE_CERTIFICATE",
                   "resourceIdentifier": {
                       "deviceCertificateId": "c7691<shortened>"
                   },
                   "additionalInfo": {
                   "EXPIRATION_TIME": "1583424717000"
                   }
               },
               "reasonForNonCompliance": "Certificate is past its expiration.",
               "reasonForNonComplianceCode": "CERTIFICATE_PAST_EXPIRATION",
               "isSuppressed": false
           }
      ]
   }
   ```

1. [create-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/create-audit-suppression.html) コマンドを使用して、*2020 年 8 月 20 日*まで ID `c7691e<shortened>` を持つデバイス証明書の `DEVICE_CERTIFICATE_EXPIRING_CHECK` 監査チェックの通知を抑制します。

   ```
   aws iot create-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId="c7691e<shortened>" \
       --no-suppress-indefinitely \ 
       --expiration-date 2020-08-20
   ```

1. [list-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppression.html) コマンドを使用して、監査抑制設定を確認し、抑制の詳細を取得します。

   ```
   aws iot list-audit-suppressions
   ```

   出力:

   ```
   {
       "suppressions": [
           {
           "checkName": "DEVICE_CERTIFICATE_EXPIRING_CHECK",
               "resourceIdentifier": {
                   "deviceCertificateId": "c7691e<shortened>"
               },
           "expirationDate": 1597881600.0,
           "suppressIndefinitely": false
           }
       ]
   }
   ```

1. [update-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/update-audit-suppression.html) コマンドを使用して、監査結果の抑制を更新できます。以下の例では、`expiration-date` を`08/21/20` に更新します。

   ```
   aws iot update-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId=c7691e<shortened> \
       --no-suppress-indefinitely \
       --expiration-date 2020-08-21
   ```

1. [delete-audit-suppression](https://docs.aws.amazon.com/cli/latest/reference/iot/delete-audit-suppression.html) コマンドを使用して、監査結果の抑制を削除できます。

   ```
   aws iot delete-audit-suppression \
       --check-name DEVICE_CERTIFICATE_EXPIRING_CHECK \
       --resource-identifier deviceCertificateId="c7691e<shortened>"
   ```

   削除を確認するには、[list-audit-suppressions](https://docs.aws.amazon.com/cli/latest/reference/iot/list-audit-suppressions.html) コマンドを使用します。

   ```
   aws iot list-audit-suppressions
   ```

   出力:

   ```
   {
    "suppressions": []
   }
   ```

このチュートリアルでは、コンソールと CLI で `Device certificate expiring` チェックを抑制する方法を示しました。監査所見の抑制の詳細については、[監査の所見の抑制](audit-finding-suppressions.md) を参照してください。