

# 監査チェック項目
<a name="device-defender-audit-checks"></a>

**注記**  
チェックを有効にすると、データ収集が即座に開始されます。収集するデータがアカウントに大量にある場合、チェックを有効にしてからチェックの結果が生成されるまでに時間がかかることがあります。

以下の監査チェック項目がサポートされています。
+ [アクティブなデバイス証明書の確認のための中間 CA が取り消されました](audit-chk-active-intermediary-device-revoked-CA.md)
+ [取り消された CA 証明書がアクティブのままです](audit-chk-revoked-ca-cert.md)
+ [デバイス証明書が共有されました](audit-chk-device-cert-shared.md)
+ [デバイス証明書のキー品質](audit-chk-device-cert-key-quality.md)
+ [CA 証明書のキー品質](audit-chk-ca-cert-key-quality.md)
+ [認証されていない Cognito ロールの権限が過剰です](audit-chk-unauth-cognito-role-permissive.md)
+ [認証された Cognito ロールの権限が過剰です](audit-chk-auth-cognito-role-permissive.md)
+ [AWS IoT ポリシーの権限が過剰です](audit-chk-iot-policy-permissive.md)
+ [AWS IoT ポリシーが誤って構成されている可能性がある](audit-chk-iot-misconfigured-policies.md)
+ [ロールエイリアスの権限が過剰です](audit-chk-iot-role-alias-permissive.md)
+ [ロールエイリアスが未使用サービスへのアクセスを許可します](audit-chk-role-alias-unused-svcs.md)
+ [CA 証明書の有効期限が切れます](audit-chk-ca-cert-approaching-expiration.md)
+ [MQTT クライアント ID の競合](audit-chk-conflicting-client-ids.md)
+ [デバイス証明書の有効期限が切れます](audit-chk-device-cert-approaching-expiration.md)
+ [デバイス証明書の経過時間チェック](device-certificate-age-check.md)
+ [取り消されたデバイス証明書がアクティブのままです](audit-chk-revoked-device-cert.md)
+ [ログ記録が無効です](audit-chk-logging-disabled.md)

# アクティブなデバイス証明書の確認のための中間 CA が取り消されました
<a name="audit-chk-active-intermediary-device-revoked-CA"></a>

このチェックを使用して、中間 CA を取り消してもまだアクティブな関連デバイス証明書をすべて特定します。

このチェックは、CLI および API で `INTERMEDIATE_CA_REVOKED_FOR_ACTIVE_DEVICE_CERTIFICATES_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-active-device-intermediary-revoked-CA-details"></a>

このチェックにより不適合が見つかった場合、次の理由コードが返されます。
+ INTERMEDIATE\$1CA\$1REVOKED\$1BY\$1ISSUER

## 重要な理由
<a name="audit-chk-active-device-intermediary-revoked-CA-why-it-matters"></a>

アクティブなデバイス証明書チェックのために取り消された中間 CA は、中間発行 CA が CA チェーンで取り消された AWS IoT Core にアクティブなデバイス証明書があるかどうかを判断することで、デバイスの ID と信頼性を評価します。

取り消し済み中間 CA を使用して、CA チェーン内の他の CA またはデバイス証明書に署名することはできません。中間 CA が取り消された後に、この CA 証明書を使用して署名された証明書を持つ新しく追加されたデバイスは、セキュリティ上の脅威をもたらします。

## 修正方法
<a name="audit-chk-active-device-intermediary-revoked-CA-how-to-fix"></a>

CA 証明書を取り消した後のデバイス証明書の登録アクティビティを確認します。セキュリティのベストプラクティスに従って状況を軽減します。以下を行うことができます。

1. 影響を受けるデバイス用に、別の CA によって署名された新しい証明書をプロビジョニングします。

1. 新しい証明書が有効で、デバイスでそれらの証明書を使用して接続できることを確認します。

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用して、AWS IoT で古い証明書を REVOKED としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_DEVICE_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + `ADD_THINGS_TO_THING_GROUP` 緩和アクションを適用して、アクションを実行できるグループにデバイスを追加します。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。
   + 中間 CA 証明書を取り消した後のデバイス証明書の登録アクティビティを確認し、その期間に発行された可能性のあるデバイス証明書の取り消しを検討します。この CA 証明書によって署名されたデバイス証明書を一覧表示するには [ListRelatedResourcesForAuditFinding](https://docs.aws.amazon.com/iot/latest/apireference/API_ListRelatedResourcesForAuditFinding.html) を使用できます。デバイス証明書を取り消すには [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用できます。
   + 古い証明書をデバイスからデタッチします。(「[DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html)」を参照してください)。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

# 取り消された CA 証明書がアクティブのままです
<a name="audit-chk-revoked-ca-cert"></a>

CA 証明書が取り消されましたが、AWS IoT では有効のままです。

このチェックは、CLI および API で `REVOKED_CA_CERTIFICATE_STILL_ACTIVE_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-revoked-ca-cert-details"></a>

CA 証明書は、発行機関によって維持されている証明書失効リストで失効済みとマークされていますが、AWS IoT ではまだ「ACTIVE」または「PENDING\$1TRANSFER」とマークされたままです。

このチェックにより不適合の CA 証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1REVOKED\$1BY\$1ISSUER

## 重要な理由
<a name="audit-chk-revoked-ca-cert-why-it-matters"></a>

取り消し済み CA 証明書は、デバイス証明書への署名に使用できなくなります。侵害されたため、取り消された可能性があります。この CA 証明書で署名された証明書を使用して新しく追加されたデバイスはセキュリティ上の脅威になる場合があります。

## 修正方法
<a name="audit-chk-revoked-ca-cert-how-to-fix"></a>

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) を使用して、AWS IoT で CA 証明書を INACTIVE としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_CA_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. CA 証明書を取り消した後のデバイス証明書の登録アクティビティを確認し、その期間に発行された可能性のあるデバイス証明書の取り消しを検討します。この CA 証明書によって署名されたデバイス証明書を一覧表示するには [ListCertificatesByCA](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCertificatesByCA.html) を使用できます。デバイス証明書を取り消すには [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用できます。

# デバイス証明書が共有されました
<a name="audit-chk-device-cert-shared"></a>

複数の同時接続が、同じ X.509 証明書を使用して AWS IoT サービスに対して認証されます。

このチェックは、CLI および API で `DEVICE_CERTIFICATE_SHARED_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-device-cert-shared-details"></a>

オンデマンド監査の一部として実行された場合、このチェック項目は、監査の開始 31 日前からチェックが実行される 2 時間前までの間に接続するためにデバイスにより使用された証明書と clientID を調べます。スケジュールされた監査では、このチェック項目は、前回監査が実行された時間の 2 時間前からこの監査インスタンスが開始された時間の 2 時間前までのデータを調べます。チェック時にこの条件を緩和するステップを実行した場合、問題が残っているかどうかを判断するために同時接続がいつ行われたかに注目してください。

このチェックにより不適合の証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1SHARED\$1BY\$1MULTIPLE\$1DEVICES

さらに、このチェック項目によって返される結果には、共有証明書の ID、接続するためにこの証明書を使用したクライアントの ID、接続/切断時間が含まれます。最新の結果が最初に一覧表示されます。

## 重要な理由
<a name="audit-chk-device-cert-shared-why-it-matters"></a>

AWS IoT で認証するには、各デバイスに一意の証明書が必要です。複数のデバイスで同じ証明書を使用している場合は、デバイスが危険にさらされていることを示している可能性があります。そのデバイスの ID が複製され、システムが危険にさらされている可能性があります。

## 修正方法
<a name="audit-chk-device-cert-shared-how-to-fix"></a>

デバイス証明書が侵害されていないことを確認します。侵害されている場合は、セキュリティのベストプラクティスに従って状況を軽減します。

複数のデバイスで同じ証明書を使用している場合は、次の操作を行います。

1. 新しい一意の証明書をプロビジョニングし、各デバイスにアタッチします。

1. 新しい証明書が有効で、デバイスでそれらの証明書を使用して接続できることを確認します。

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用して、AWS IoT で古い証明書を REVOKED としてマークします。緩和アクションを使用して、次の操作を行うこともできます。
   + 監査結果に `UPDATE_DEVICE_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + `ADD_THINGS_TO_THING_GROUP` 緩和アクションを適用して、アクションを実行できるグループにデバイスを追加します。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. 古い証明書を各デバイスからデタッチします。

# デバイス証明書のキー品質
<a name="audit-chk-device-cert-key-quality"></a>

AWS IoT 顧客は、AWS IoT メッセージブローカーへの認証に X.509 証明書を使用した TLS 相互認証を利用することがよくあります。これらの証明書と認証局の証明書は、使用する前に AWS IoT アカウントに登録する必要があります。AWS IoT は、登録時にこれらの証明書に対して基本的な健全性チェックを実行します。これらのチェックには、次のものがあります。
+ これらは有効な形式であることが必要です。
+ これらは、登録された認証局によって署名されている必要があります。
+ これらは有効期間内である必要があります (つまり、有効期限が切れていないことが必要です)。
+ 暗号化キーのサイズは、必要な最小サイズを満たしている必要があります（RSA キーの場合は、2048 ビット以上である必要があります）。

この監査チェックでは、暗号化キーの品質に関する次の追加テストが提供されます。
+ CVE-2008-0166 – Debian ベースのオペレーティングシステムで、0.9.8g-9 より前のバージョンまでの OpenSSL 0.9.8c-1 を使用してキーが生成されたかどうかをチェックします。これらのバージョンの OpenSSL では、予測可能な数値を生成する乱数ジェネレータが使用されているため、リモートの攻撃者が暗号化キーに対するブルートフォース推測攻撃を簡単に行うことができます。
+ CVE-2017-15361 – キーが、インフィニオン社のトラステッドプラットフォームモジュール (TPM) ファームウェアでインフィニオン社の RSA ライブラリ 1.02.013 によって生成されたかどうかをチェックします。例えば、0000000000000422 – 4.34 より前のバージョン、000000000000062b – 6.43 より前のバージョン、および 0000000000008521 – 133.33 より前のバージョンなどです。このライブラリは RSA キーの生成を不正に処理するため、攻撃者がターゲットを絞った攻撃によって暗号保護メカニズムを突破することを容易にします。影響を受けるテクノロジーの例としては、TPM 1.2 を使用した BitLocker、YubiKey 4 （4.3.5 以前）の PGP キー生成、および Chrome OS のキャッシュユーザーデータの暗号化機能などがあります。

AWS IoT Device Defender は、これらのテストに失敗した場合、証明書を非準拠として報告します。

このチェックは、CLI および API で `DEVICE_CERTIFICATE_KEY_QUALITY_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-device-cert-key-quality-details"></a>

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっているデバイス証明書に適用されます。

このチェックにより不適合の証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2017-15361
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2008-0166

## 重要な理由
<a name="audit-chk-device-cert-key-quality-why-it-matters"></a>

デバイスが脆弱な証明書を使用する場合、攻撃者はそのデバイスをより簡単に侵害する可能性があります。

## 修正方法
<a name="audit-chk-device-cert-key-quality-how-to-fix"></a>

デバイス証明書を更新して、既知の脆弱性の証明書を置き換えます。

複数のデバイスで同じ証明書を使用している場合は、次の操作を行います。

1. 新しい一意の証明書をプロビジョニングし、各デバイスにアタッチします。

1. 新しい証明書が有効で、デバイスでそれらの証明書を使用して接続できることを確認します。

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用して、AWS IoT で古い証明書を REVOKED としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_DEVICE_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + `ADD_THINGS_TO_THING_GROUP` 緩和アクションを適用して、アクションを実行できるグループにデバイスを追加します。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. 古い証明書を各デバイスからデタッチします。

# CA 証明書のキー品質
<a name="audit-chk-ca-cert-key-quality"></a>

AWS IoT 顧客は、AWS IoT メッセージブローカーへの認証に X.509 証明書を使用した TLS 相互認証を利用することがよくあります。これらの証明書と認証局の証明書は、使用する前に AWS IoT アカウントに登録する必要があります。AWS IoT は、これらの証明書の登録時に、次のような基本的な健全性チェックを実行します。
+ この証明書は有効な形式です。
+ この証明書の有効期間内です（つまり、有効期限が切れていません）。
+ 暗号化キーのサイズは、必要な最小サイズを満たしています（RSA キーの場合は、2048 ビット以上である必要があります）。

この監査チェックでは、暗号化キーの品質に関する次の追加テストが提供されます。
+ CVE-2008-0166 – Debian ベースのオペレーティングシステムで、0.9.8g-9 より前のバージョンまでの OpenSSL 0.9.8c-1 を使用してキーが生成されたかどうかをチェックします。これらのバージョンの OpenSSL では、予測可能な数値を生成する乱数ジェネレータが使用されているため、リモートの攻撃者が暗号化キーに対するブルートフォース推測攻撃を簡単に行うことができます。
+ CVE-2017-15361 – キーが、インフィニオン社のトラステッドプラットフォームモジュール (TPM) ファームウェアでインフィニオン社の RSA ライブラリ 1.02.013 によって生成されたかどうかをチェックします。例えば、0000000000000422 – 4.34 より前のバージョン、000000000000062b – 6.43 より前のバージョン、および 0000000000008521 – 133.33 より前のバージョンなどです。このライブラリは RSA キーの生成を不正に処理するため、攻撃者がターゲットを絞った攻撃によって暗号保護メカニズムを突破することを容易にします。影響を受けるテクノロジーの例としては、TPM 1.2 を使用した BitLocker、YubiKey 4 （4.3.5 以前）の PGP キー生成、および Chrome OS のキャッシュユーザーデータの暗号化機能などがあります。

AWS IoT Device Defender は、これらのテストに失敗した場合、証明書を非準拠として報告します。

このチェックは、CLI および API で `CA_CERTIFICATE_KEY_QUALITY_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-ca-cert-key-quality-details"></a>

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっている CA 証明書に適用されます。

このチェックにより不適合の証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2017-15361
+ CERTIFICATE\$1KEY\$1VULNERABILITY\$1CVE-2008-0166

## 重要な理由
<a name="audit-chk-ca-cert-key-quality-why-it-matters"></a>

この CA 証明書を使用して署名され、新しく追加されたデバイスはセキュリティ上の脅威になる場合があります。

## 修正方法
<a name="audit-chk-ca-cert-key-quality-how-to-fix"></a>

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) を使用して、AWS IoT で CA 証明書を INACTIVE としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_CA_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. CA 証明書を取り消した後のデバイス証明書の登録アクティビティを確認し、その期間に発行された可能性のあるデバイス証明書の取り消しを検討します。(この CA 証明書によって署名されたデバイス証明書を一覧表示するには [ListCertificatesByCA](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCertificatesByCA.html) を使用します。デバイス証明書を取り消すには [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用します)。

# 認証されていない Cognito ロールの権限が過剰です
<a name="audit-chk-unauth-cognito-role-permissive"></a>

認証されていない Amazon Cognito ID プールロールにアタッチされたポリシーは、以下のどの AWS IoT アクションでも実行できるアクセス許可が付与されるため、許可範囲が広過ぎるとみなされます。
+ モノを管理または変更する。
+ モノの管理データを読み取る。
+ モノ以外に関連するデータやリソースを管理する。

または、さまざまなデバイスで以下の AWS IoT アクションを実行するアクセス許可が付与されるためです。
+ MQTT を使用して予約済みトピック（シャドウまたはジョブ実行データを含む）に接続/発行/サブスクライブします。
+ API コマンドを使用してシャドウまたはジョブ実行データを読み取るか変更する。

一般に、未認証の Amazon Cognito ID プールロールを使用して接続するデバイスには、モノ固有の MQTT トピックを発行/サブスクライブするか、API コマンドを使用してシャドウまたはジョブ実行データに関連するモノ固有のデータを読み取る/変更する限定されたアクセス許可のみ付与してください。

このチェックは、CLI および API で `UNAUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-unauth-cognito-role-permissive-details"></a>

このチェック項目の場合、AWS IoT Device Defender は、監査の実行前 31 日間に AWS IoT メッセージブローカーに接続するために使用されたすべての Amazon Cognito ID プールを監査します。接続先の認証済みまたは未認証 Amazon Cognito ID のすべての Amazon Cognito ID プールが監査に含められます。

このチェックにより不適合の未認証 Amazon Cognito ID プールロールが見つかった場合、次の理由コードが返されます。
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1ADMIN\$1ACTIONS
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 重要な理由
<a name="audit-chk-unauth-cognito-role-permissive-why-it-matters"></a>

認証されていない ID がユーザーにより認証されることはないため、認証された Amazon Cognito ID よりもはるかに大きいリスクを引き起こします。認証されていない ID が侵害された場合、管理アクションを使用して、アカウント設定の変更、リソースの削除、機密データへのアクセスを行う可能性があります。または、デバイス設定に広範にアクセスできるため、アカウント内のすべてのデバイスのシャドウとジョブにアクセスまたは変更する可能性があります。ゲストユーザーは、そのアクセス許可を使用して、フリート全体を侵害したり、メッセージで DDoS 攻撃を開始したりする可能性があります。

## 修正方法
<a name="audit-chk-unauth-cognito-role-permissive-how-to-fix"></a>

認証されていない Amazon Cognito ID プールロールにアタッチされたポリシーには、デバイスがそのジョブを実行するのに必要なアクセス許可のみ付与してください。次のステップを推奨します。

1. 新しい適合ロールを作成します。

1. Amazon Cognito ID プールを作成し、適合ロールをアタッチします。

1. ID が新しいプールを使用して AWS IoT にアクセスできることを確認します。

1. 検証が完了したら、不適合としてフラグが設定された Amazon Cognito ID プールに適合ロールをアタッチします。

緩和アクションを使用して、以下を行うこともできます。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

## モノを管理または変更する
<a name="manage-modify-things-check"></a>

次の AWS IoT API アクションは、モノを管理または変更するために使用されます。認証されていない Amazon Cognito ID プールを介して接続するデバイスには、これらのアクションを実行するアクセス許可を付与しないでください。
+ `AddThingToThingGroup` 
+ `AttachThingPrincipal` 
+ `CreateThing` 
+ `DeleteThing` 
+ `DetachThingPrincipal` 
+ `ListThings` 
+ `ListThingsInThingGroup` 
+ `RegisterThing` 
+ `RemoveThingFromThingGroup` 
+ `UpdateThing` 
+ `UpdateThingGroupsForThing` 

これらのアクションを実行するアクセス許可を付与するロールは、単一のリソースだけが持っていても、不適合とみなされます。

## モノの管理データを読み取る
<a name="read-thing-admin-data-check"></a>

モノデータの読み取りや変更には、以下の AWS IoT API アクションが使用されます。認証されていない Amazon Cognito ID プールを介して接続するデバイスには、これらのアクションを実行するアクセス許可を与えないでください。
+ `DescribeThing`
+ `ListJobExecutionsForThing`
+ `ListThingGroupsForThing`
+ `ListThingPrincipals`

**Example**  
+ 不適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllowIoTThingOperations",
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/name-of-thing"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスは 1 つのモノのみに対するアクセス許可が付与されていても、指定されたアクションを実行できるようになります。

## モノ以外を管理する
<a name="manage-non-things-check"></a>

未認証の Amazon Cognito ID プールを介して接続するデバイスには、これらのセクションで説明した AWS IoT API アクション以外のアクションを実行するアクセス許可を付与しないでください。未認証の Amazon Cognito ID プールを介して接続するアプリケーションを使用してアカウントを管理するには、デバイスで使用されていない別個の ID プールを作成します。

## MQTT トピックにサブスクライブ/発行する
<a name="audit-chk-unauth-cognito-role-permissive-mqtt-topics"></a>

MQTT メッセージは、AWS IoT メッセージブローカー経由で送信され、シャドウステータスやジョブ実行ステータスへのアクセスや変更などのアクションを実行するためにデバイスにより使用されます。MQTT メッセージに接続、発行、またはサブスクライブするアクセス許可をデバイスに付与するポリシーは、以下のようにこれらのアクションを特定のリソースに制限します。

**接続**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  ワイルドカード \$1 を使用すると、どのデバイスでも AWS IoT に接続できます。

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  条件キーで `iot:Connection.Thing.IsAttached` が true に設定されていない限り、これは前の例のワイルドカード \$1 と同等の設定です。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  リソースの指定に、接続に使用されるデバイス名と一致する変数が含まれます。条件ステートメントは、MQTT クライアントにより使用される証明書が、使用される名前を持つモノにアタッチされた証明書と一致することを確認することにより、アクセス許可をさらに制限します。

**発行**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを更新できるようになります (\$1 = すべてのデバイス)。

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを読み取り/更新/削除できるようになります。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックにのみ一致します。

**サブスクライブ**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  これにより、デバイスはすべてのデバイスの予約済みシャドウまたはジョブトピックにサブスクライブできます。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  前の例と同じですが、\$1 ワイルドカードを使用します。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウ更新を参照できるようになります (\$1 = すべてのデバイス)。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックとジョブ関連のトピックにのみ一致します。

**受信**  
+ 適合:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  これは、サブスクライブするアクセス許可を持っているトピックからのみデバイスがメッセージを受信するため、許可されます。

## シャドウまたはジョブデータを読み取る/変更する
<a name="read-modify-shadow-job-data-check"></a>

デバイスが API アクションを実行してデバイスシャドウやジョブ実行データにアクセスまたは変更するアクセス許可を付与するポリシーは、これらのアクションを特定のリソースに制限します。API アクションは次のとおりです。
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecutio`n
+ `UpdateJobExecution`

**Example**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  これにより、デバイスがあらゆるモノで指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DeleteThingShadow",
            "iot:GetThingShadow",
            "iot:UpdateThingShadow",
            "iotjobsdata:DescribeJobExecution",
            "iotjobsdata:GetPendingJobExecutions",
            "iotjobsdata:StartNextPendingJobExecution",
            "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスが 2 つのモノでのみ指定されたアクションを実行できるようになります。

# 認証された Cognito ロールの権限が過剰です
<a name="audit-chk-auth-cognito-role-permissive"></a>

認証済み Amazon Cognito ID プールロールにアタッチされたポリシーは、以下の AWS IoT アクションを実行できるアクセス許可が付与されるため、許可範囲が広過ぎるとみなされます。
+ モノを管理または変更する。
+ モノ以外に関連するデータやリソースを管理する。

または、さまざまなデバイスで以下の AWS IoT アクションを実行するアクセス許可が付与されるためです。
+ モノの管理データを読み取る。
+ MQTT を使用して予約済みトピック (シャドウまたはジョブ実行データを含む) に接続/発行/サブスクライブする。
+ API コマンドを使用してシャドウまたはジョブ実行データを読み取るか変更する。

一般に、認証済み Amazon Cognito ID プールロールを使用して接続するデバイスには、モノ固有の管理データを読み取る、モノ固有の MQTT トピックを発行/サブスクライブする、または API コマンドを使用してシャドウまたはジョブ実行データに関連するモノ固有のデータを読み取る/変更する限定されたアクセス許可のみ付与してください。

このチェックは、CLI および API で `AUTHENTICATED_COGNITO_ROLE_OVERLY_PERMISSIVE_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-auth-cognito-role-permissive-details"></a>

このチェック項目の場合、AWS IoT Device Defender は、監査の実行前 31 日間に AWS IoT メッセージブローカーに接続するために使用されたすべての Amazon Cognito ID プールを監査します。接続先の認証済みまたは未認証 Amazon Cognito ID のすべての Amazon Cognito ID プールが監査に含められます。

このチェックにより不適合の認証済み Amazon Cognito ID プールロールが見つかった場合、次の理由コードが返されます。
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1READ\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1NON\$1THING\$1ADMIN\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1WRITE\$1ACTIONS

## 重要な理由
<a name="audit-chk-auth-cognito-role-permissive-why-it-matters"></a>

認証されている ID が侵害された場合、管理アクションを使用して、アカウント設定の変更、リソースの削除、機密データへのアクセスを行う可能性があります。

## 修正方法
<a name="audit-chk-auth-cognito-role-permissive-how-to-fix"></a>

認証済みの Amazon Cognito ID プールロールにアタッチされたポリシーには、デバイスがそのジョブを実行するのに必要なアクセス許可のみ付与してください。次のステップを推奨します。

1. 新しい適合ロールを作成します。

1. Amazon Cognito ID プールを作成し、適合ロールをアタッチします。

1. ID が新しいプールを使用して AWS IoT にアクセスできることを確認します。

1. 検証が完了したら、不適合としてフラグが設定された Amazon Cognito ID プールにロールをアタッチします。

緩和アクションを使用して、以下を行うこともできます。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

## モノを管理または変更する
<a name="audit-chk-auth-cognito-role-permissive-manage-things"></a>

次の AWS IoT API アクションは、モノを管理または変更するために使用されるため、これらのアクションを実行するアクセス許可は、認証済みの Amazon Cognito ID プールを介して接続するデバイスには付与しないでください。
+ `AddThingToThingGroup` 
+ `AttachThingPrincipal` 
+ `CreateThing` 
+ `DeleteThing` 
+ `DetachThingPrincipal` 
+ `ListThings`
+ `ListThingsInThingGroup` 
+ `RegisterThing` 
+ `RemoveThingFromThingGroup` 
+ `UpdateThing` 
+ `UpdateThingGroupsForThing`

これらのアクションを実行するアクセス許可を付与するロールは、単一のリソースだけが持っていても、不適合とみなされます。

## モノ以外を管理する
<a name="audit-chk-auth-cognito-role-permissive-manage-non-things"></a>

認証済みの Amazon Cognito ID プールを介して接続するデバイスには、これらのセクションで説明した AWS IoT API アクション以外のアクションを実行するアクセス許可を付与しないでください。認証済みの Amazon Cognito ID プールを介して接続するアプリケーションを使用してアカウントを管理するには、デバイスにより使用されていない別個の ID プールを作成します。

## モノの管理データを読み取る
<a name="audit-chk-auth-cognito-role-permissive-read-things-admin-data"></a>

次の AWS IoT API アクションは、モノのデータを読み取るために使用されるため、認証済みの Amazon Cognito ID プールを介して接続するデバイスには限定されたモノのセットでのみこれらのアクションを実行するアクセス許可を付与してください。
+ `DescribeThing`
+ `ListJobExecutionsForThing`
+ `ListThingGroupsForThing`
+ `ListThingPrincipals`
+ 不適合:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  これにより、デバイスがあらゆるモノで指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスが 1 つのモノでのみ指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeThing",
                  "iot:ListJobExecutionsForThing",
                  "iot:ListThingGroupsForThing",
                  "iot:ListThingPrincipals"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/MyThing*"
              ]
          }
      ]
  }
  ```

------

  リソースがワイルドカード (\$1) を使用して指定されていますが、前に特定の文字列が付いており、指定されたプレフィックスを持つ名前が付いたモノのセットへのアクセスに制限されるため、これは適合しています。
+ 不適合:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  これにより、デバイスがあらゆるモノで指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DescribeThing",
            "iot:ListJobExecutionsForThing",
            "iot:ListThingGroupsForThing",
            "iot:ListThingPrincipals"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスが 1 つのモノでのみ指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeThing",
                  "iot:ListJobExecutionsForThing",
                  "iot:ListThingGroupsForThing",
                  "iot:ListThingPrincipals"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:thing/MyThing*"
              ]
          }
      ]
  }
  ```

------

  リソースがワイルドカード (\$1) を使用して指定されていますが、前に特定の文字列が付いており、指定されたプレフィックスを持つ名前が付いたモノのセットへのアクセスに制限されるため、これは適合しています。

## MQTT トピックにサブスクライブ/発行する
<a name="audit-chk-auth-cognito-role-permissive-mqtt-topic"></a>

MQTT メッセージは、AWS IoT メッセージブローカー経由で送信され、シャドウステータスやジョブ実行ステータスへのアクセスや変更などのさまざまなアクションを実行するためにデバイスにより使用されます。MQTT メッセージに接続、発行、またはサブスクライブするアクセス許可をデバイスに付与するポリシーは、以下のようにこれらのアクションを特定のリソースに制限します。

**接続**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  ワイルドカード \$1 を使用すると、どのデバイスでも AWS IoT に接続できます。

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  条件キーで `iot:Connection.Thing.IsAttached` が true に設定されていない限り、これは前の例のワイルドカード \$1 と同等の設定です。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  リソース仕様には、接続に使用されるデバイス名に一致する変数が含まれており、条件ステートメントは、MQTT クライアントにより使用される証明書が、使用される名前を持つモノにアタッチされた証明書と一致することを確認することにより、アクセス許可をさらに制限します。

**発行**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを更新できるようになります (\$1 = すべてのデバイス)。

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを読み取り/更新/削除できるようになります。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックにのみ一致します。

**サブスクライブ**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  これにより、デバイスはすべてのデバイスの予約済みシャドウまたはジョブトピックにサブスクライブできます。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/#
  ```

  前の例と同じですが、\$1 ワイルドカードを使用します。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウ更新を参照できるようになります (\$1 = すべてのデバイス)。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックとジョブ関連のトピックにのみ一致します。

**受信**  
+ 適合:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  これは、サブスクライブするアクセス許可を持っているトピックからのみデバイスがメッセージを受信するため、問題ありません。

## シャドウまたはジョブデータを読み取る/変更する
<a name="audit-chk-auth-cognito-role-permissive-shadow-job-data"></a>

デバイスが API アクションを実行してデバイスシャドウやジョブ実行データにアクセスまたは変更するアクセス許可を付与するポリシーは、これらのアクションを特定のリソースに制限します。API アクションは次のとおりです。
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecution`
+ `UpdateJobExecution`

**例**
+ 不適合:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  これにより、デバイスがあらゆるモノで指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:DeleteThingShadow",
          "iot:GetThingShadow",
          "iot:UpdateThingShadow",
          "iot:DescribeJobExecution",
          "iotjobsdata:DescribeJobExecution",
          "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスが 2 つのモノでのみ指定されたアクションを実行できるようになります。

# AWS IoT ポリシーの権限が過剰です
<a name="audit-chk-iot-policy-permissive"></a>

AWS IoT ポリシーで付与されるアクセス許可は、広すぎるか、制限がありません。さまざまなデバイスとの間で MQTT メッセージを送受信するアクセス許可を付与するか、さまざまなデバイスのシャドウおよびジョブ実行データにアクセスまたは変更するアクセス許可を付与します。

一般に、デバイスのポリシーは、そのデバイスにのみ関連付けられており、他のデバイスにはまったく、あるいはわずかしか関連付けられていないリソースへのアクセスを付与する必要があります。一部例外はありますが、そのようなポリシーでリソースを指定するためにワイルドカード (「\$1」など) を使用すると、広すぎるか、制限がないとみなされます。

このチェックは、CLI および API で `IOT_POLICY_OVERLY_PERMISSIVE_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-iot-policy-permissive-details"></a>

このチェックにより非準拠の AWS IoT ポリシーが見つかると、次の理由コードが返されます。
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 重要な理由
<a name="audit-chk-iot-policy-permissive-why-it-matters"></a>

アクセス許可が過剰なポリシーを持つ証明書、Amazon Cognito ID、またはモノのグループは、侵害された場合、アカウント全体のセキュリティに影響を与える可能性があります。攻撃者がそのような広範なアクセス権を使用してすべてのデバイスのシャドウ、ジョブ、またはジョブ実行を読み取りまたは変更する可能性があります。または、攻撃者が侵害された証明書を使用し、悪意のあるデバイスに接続したり、ネットワーク上で DDoS 攻撃を開始したりする可能性があります。

## 修正方法
<a name="audit-chk-iot-policy-permissive-how-to-fix"></a>

モノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正するには、以下のステップを実行してください。

1. ポリシーの新しい適合バージョンを作成するには、[CreatePolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePolicyVersion.html) を使用します。`setAsDefault` フラグを true に設定します。(これにより、この新しいバージョンは、ポリシーを使用するすべてのエンティティで動作します。)

1. ポリシーのアタッチ先のターゲット (証明書、モノのグループ) のリストを取得し、グループに含まれているデバイスや、接続に証明書を使用するデバイスを確認するには、[ListTargetsForPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_ListTargetsForPolicy.html) を使用します。

1. 関連付けられているすべてのデバイスが AWS IoT に接続できることを確認します。デバイスが接続できない場合は、[SetPolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_SetPolicyVersion.html) を使用してデフォルトのポリシーを以前のバージョンにロールバックして、もう一度試してください。

緩和アクションを使用して、以下を実行できます。
+ 監査結果に `REPLACE_DEFAULT_POLICY_VERSION` 緩和アクションを適用して、この変更を行います。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

[AWS IoT Core ポリシー変数](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html)を使用して、ポリシー内の AWS IoT リソースを動的に参照します。

## MQTT のアクセス許可
<a name="audit-chk-iot-policy-permissive-mqtt-permissions"></a>

MQTT メッセージは、AWS IoT メッセージブローカー経由で送信され、シャドウステータスやジョブ実行ステータスへのアクセスや変更などのアクションを実行するためにデバイスにより使用されます。MQTT メッセージに接続、発行、またはサブスクライブするアクセス許可をデバイスに付与するポリシーは、以下のようにこれらのアクションを特定のリソースに制限します。

**接続**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:client/*
  ```

  ワイルドカード \$1 を使用すると、どのデバイスでも AWS IoT に接続できます。

  ```
  arn:aws:iot:region:account-id:client/${iot:ClientId}
  ```

  条件キーで `iot:Connection.Thing.IsAttached` が true に設定されていない限り、これは前の例のワイルドカード \$1 と同等の設定です。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iot:Connect"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
        ]
      }
    ]
  }
  ```

------

  リソースの指定に、接続に使用されるデバイス名と一致する変数が含まれます。条件ステートメントは、MQTT クライアントにより使用される証明書が、使用される名前を持つモノにアタッチされた証明書と一致することを確認することにより、アクセス許可をさらに制限します。

**発行**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを更新できるようになります (\$1 = すべてのデバイス)。

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  これにより、デバイスはあらゆるデバイスのシャドウを読み取り/更新/削除できるようになります。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Publish"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックにのみ一致します。

**サブスクライブ**  
+ 不適合:

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  これにより、デバイスはすべてのデバイスの予約済みシャドウまたはジョブトピックにサブスクライブできます。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/*
  ```

  前の例と同じですが、\$1 ワイルドカードを使用します。

  ```
  arn:aws:iot:region:account-id:topicfilter/$aws/things/+/shadow/update
  ```

  これにより、デバイスはあらゆるデバイスのシャドウ更新を参照できるようになります (\$1 = すべてのデバイス)。
+ 適合:

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iot:Subscribe"
              ],
              "Resource": [
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/shadow/*",
                  "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*"
              ]
          }
      ]
  }
  ```

------

  リソース仕様にはワイルドカードが含まれていますが、接続するためにモノの名前が使用されているデバイスのシャドウ関連のトピックとジョブ関連のトピックにのみ一致します。

**受信**  
+ 適合:

  ```
  arn:aws:iot:region:account-id:topic/$aws/things/*
  ```

  これは、サブスクライブするアクセス許可を持っているトピックからのみデバイスがメッセージを受信するため、問題ありません。

## シャドウとジョブのアクセス許可
<a name="shadow-job-permissions"></a>

デバイスが API アクションを実行してデバイスシャドウやジョブ実行データにアクセスまたは変更するアクセス許可を付与するポリシーは、これらのアクションを特定のリソースに制限します。API アクションは次のとおりです。
+ `DeleteThingShadow`
+ `GetThingShadow`
+ `UpdateThingShadow`
+ `DescribeJobExecution`
+ `GetPendingJobExecutions`
+ `StartNextPendingJobExecution`
+ `UpdateJobExecution`

**例**
+ 不適合:

  ```
  arn:aws:iot:region:account-id:thing/*
  ```

  これにより、デバイスがあらゆるモノで指定されたアクションを実行できるようになります。
+ 適合:

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [ 
            "iot:DeleteThingShadow",
            "iot:GetThingShadow",
            "iot:UpdateThingShadow",
            "iotjobsdata:DescribeJobExecution",
            "iotjobsdata:GetPendingJobExecutions",
            "iotjobsdata:StartNextPendingJobExecution",
            "iotjobsdata:UpdateJobExecution"
        ],
        "Resource": [
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing1",
          "arn:aws:iot:us-east-1:123456789012:thing/MyThing2"
        ]
      }
    ]
  }
  ```

------

  これにより、デバイスが 2 つのモノでのみ指定されたアクションを実行できるようになります。

# AWS IoT ポリシーが誤って構成されている可能性がある
<a name="audit-chk-iot-misconfigured-policies"></a>

AWS IoT ポリシーが誤って構成されている可能性があることが確認されました。過度に寛容なポリシーなど、誤って構成されたポリシーは、意図しないリソースへのデバイスアクセスを許可するなどのセキュリティインシデントを引き起こす可能性があります。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックは、ポリシーを更新する前に、意図したアクションのみが許可されていることを確認するための警告です。

このチェックは、CLI および API で `IOT_POLICY_POTENTIAL_MISCONFIGURATION_CHECK` として表示されます。

**重大度:** 中

## Details
<a name="audit-chk-iot-misconfigured-policies-details"></a>

このチェックで AWS IoT ポリシーが誤って設定されている可能性があることが検出されると、AWS IoT は次の理由コードを返します。
+ POLICY\$1CONTAINS\$1MQTT\$1WILDCARDS\$1IN\$1DENY\$1STATEMENT
+ TOPIC\$1FILTERS\$1INTENDED\$1TO\$1DENY\$1ALLOWED\$1USING\$1WILDCARDS

## 重要な理由
<a name="audit-chk-iot-misconfigured-policies-why-it-matters"></a>

ポリシーの設定を誤ると、必要以上のアクセス許可がデバイスに与えられ、意図しない結果につながる可能性があります。リソースへのアクセスを制限し、セキュリティ上の脅威を防ぐために、ポリシーを慎重に検討することをお勧めします。

### ポリシーの拒否ステートメントの例に MQTT ワイルドカードが含まれています
<a name="example-section-id"></a>

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、拒否ステートメント内の MQTT ワイルドカード文字 (`+` または `#`) を検査します。ワイルドカードは AWS IoT ポリシーによってリテラル文字列として扱われるため、ポリシーが過度に制限される可能性があります。

次の例は、ポリシーで MQTT ワイルドカード `#` を使用して、`building/control_room` に関連するトピックへのサブスクライブを拒否することを目的としています。ただし、MQTT ワイルドカードは AWS IoT ポリシーではワイルドカードの意味を持たず、デバイスは `building/control_room/data1` にサブスクライブできます。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、このポリシーに理由コード `POLICY_CONTAINS_MQTT_WILDCARDS_IN_DENY_STATEMENT` のフラグが付けられます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/#"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        }
    ]
}
```

------

以下は、適切に構成されたポリシーの例です。デバイスには、`building/control_room/` のサブトピックにサブスクライブするアクセス許可がなく、`building/control_room/` のサブトピックからメッセージを受信するアクセス許可がありません。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
    },
    {
      "Effect": "Deny",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
    },
    {
      "Effect": "Deny",
      "Action": "iot:Receive",
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/control_room/*"
    }
  ]
}
```

------

### ワイルドカードの使用を許可することを拒否することを目的したトピック フィルターの例
<a name="example-section-id2"></a>

次のポリシー例は、リソース `building/control_room/*` を拒否することにより、`building/control_room` に関連するトピックへのサブスクライブを拒否することを目的としています。ただし、デバイスは `building/#` にサブスクライブするリクエストを送信し、`building/control_room/data1` を含む `building` に関連するすべてのトピックからメッセージを受信できます。

**AWS IoT ポリシーが誤って構成されている可能性がある**チェックでは、このポリシーに理由コード `TOPIC_FILTERS_INTENDED_TO_DENY_ALLOWED_USING_WILDCARDS` のフラグが付けられます。

次のポリシーの例には、`building/control_room topics` でメッセージを受信するアクセス許可が含まれています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        }
    ]
}
```

------

以下は、適切に構成されたポリシーの例です。デバイスには、`building/control_room/` のサブトピックにサブスクライブするアクセス許可がなく、`building/control_room/` のサブトピックからメッセージを受信するアクセス許可がありません。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/building/control_room/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/*"
        },
        {
            "Effect": "Deny",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/building/control_room/*"
        }
    ]
}
```

------

**注記**  
このチェックでは、誤検出が報告される場合があります。フラグが立てられたポリシーをすべて評価し、監査抑制を使用して誤検出のリソースにマークを付けることをお勧めします。

## 修正方法
<a name="audit-chk-iot-misconfigured-policies-how-to-fix"></a>

このチェックにより、誤って構成されている可能性のあるポリシーにフラグが付けられるため、誤検出が発生する可能性があります。今後フラグが立てられないように、[監査抑制](audit-finding-suppressions.md)を使用して誤検出をマークします。

以下のステップに従ってモノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正することもできます。

1. ポリシーの新しい適合バージョンを作成するには、[CreatePolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_CreatePolicyVersion.html) を使用します。`setAsDefault` フラグを true に設定します。(これにより、この新しいバージョンは、ポリシーを使用するすべてのエンティティで動作します。)

   一般的なユースケース向けの AWS IoT ポリシーの作成例については、*AWS IoT Core 開発者ガイド*の「[パブリッシュ/サブスクライブポリシーの例](https://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html)」を参照してください。

1. 関連付けられているすべてのデバイスが AWS IoT に接続できることを確認します。デバイスが接続できない場合は、[SetPolicyVersion](https://docs.aws.amazon.com/iot/latest/apireference/API_SetPolicyVersion.html) を使用してデフォルトのポリシーを以前のバージョンにロールバックして、もう一度試してください。

緩和アクションを使用して、以下を実行できます。
+ 監査結果に `REPLACE_DEFAULT_POLICY_VERSION` 緩和アクションを適用して、この変更を行います。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

「**AWS IoT Core デベロッパーガイド」の [IoT Core ポリシー変数](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-variables.html)を使用して、ポリシー内の AWS IoT リソースを動的に参照します。

# ロールエイリアスの権限が過剰です
<a name="audit-chk-iot-role-alias-permissive"></a>

AWS IoT ロールエイリアスは、接続されたデバイスが X.509 証明書を使用して AWS IoT を認証し、AWS IoT ロールエイリアスに関連付けられた IAM ロールから短期間の AWS 認証情報を取得するためのメカニズムを提供します。これらの認証情報のアクセス許可は、認証コンテキスト変数を持つアクセスポリシーを使用して範囲を限定する必要があります。ポリシーが正しく設定されていない場合、特権攻撃のエスカレーションにさらされる可能性があります。この監査チェックにより、AWS IoT ロールエイリアスによって提供される一時的な認証情報が過度に許容されないことが保証されます。

このチェックは、次のいずれかの条件が見つかった場合にトリガーされます。
+ このポリシーは、このロールエイリアスによって過去 1 年に使用されたすべてのサービスに対する管理アクセス許可を提供します (例えば、「iot:\$1」、「dynamodb:\$1」、「iam:\$1」など)。
+ このポリシーは、モノメタデータアクションへの幅広いアクセス、制限された AWS IoT アクションへのアクセス、または AWS IoT データプレーンアクションへの幅広いアクセスを提供します。
+ このポリシーは、「iam」、「cloudtrail」、「guardduty」、「inspector」、「trustedadvisor」などのセキュリティ監査サービスへのアクセスを提供します。

このチェックは、CLI および API で `IOT_ROLE_ALIAS_OVERLY_PERMISSIVE_CHECK` として表示されます。

**重要度:** 非常事態

## Details
<a name="audit-chk-iot-role-alias-permissive-details"></a>

このチェックにより不適合の IoT ポリシーが見つかった場合、次の理由コードが返されます。
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1USED\$1SERVICES
+ ALLOWS\$1ACCESS\$1TO\$1SECURITY\$1AUDITING\$1SERVICES
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1READ\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1NON\$1THING\$1ADMIN\$1ACTIONS
+ ALLOWS\$1ACCESS\$1TO\$1IOT\$1THING\$1ADMIN\$1WRITE\$1ACTIONS
+ ALLOWS\$1BROAD\$1ACCESS\$1TO\$1IOT\$1DATA\$1PLANE\$1ACTIONS

## 重要な理由
<a name="audit-chk-iot-role-alias-permissive-why-it-matters"></a>

デバイスが通常のオペレーションを実行するために必要なアクセス許可を制限することで、デバイスが侵害された場合のアカウントのリスクを軽減できます。

## 修正方法
<a name="audit-chk-iot-role-alias-permissive-how-to-fix"></a>

モノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正するには、以下のステップを実行してください。

1. 「[AWS IoT Core 認証情報プロバイダーを使用して、AWS サービスの直接呼び出しを認証](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)」の手順に従って、ロールエイリアスにより制限の厳しいポリシーを適用します。

緩和アクションを使用して、以下を実行できます。
+ Amazon SNS メッセージに対するレスポンスとしてカスタムアクションを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

# ロールエイリアスが未使用サービスへのアクセスを許可します
<a name="audit-chk-role-alias-unused-svcs"></a>

AWS IoT ロールエイリアスは、接続されたデバイスが X.509 証明書を使用して AWS IoT を認証し、AWS IoT ロールエイリアスに関連付けられた IAM ロールから短期間の AWS 認証情報を取得するためのメカニズムを提供します。これらの認証情報のアクセス許可は、認証コンテキスト変数を持つアクセスポリシーを使用して範囲を限定する必要があります。ポリシーが正しく設定されていない場合、特権攻撃のエスカレーションにさらされる可能性があります。この監査チェックにより、AWS IoT ロールエイリアスによって提供される一時的な認証情報が過度に許容されないことが保証されます。

このチェックは、昨年 AWS IoT デバイスで使用されていないサービスに、ロールエイリアスがアクセスできる場合にトリガーされます。例えば、過去 1 年間に AWS IoT のみを使用したロールエイリアスにリンクされた IAM ロールがある場合、監査はレポートしますが、ロールにアタッチされたポリシーは `"iam:getRole"` および `"dynamodb:PutItem"` にもアクセス許可を付与します。

このチェックは、CLI および API で `IOT_ROLE_ALIAS_ALLOWS_ACCESS_TO_UNUSED_SERVICES_CHECK` として表示されます。

**重大度:** 中

## Details
<a name="audit-chk-role-alias-unused-svcs-details"></a>

このチェックにより非準拠の AWS IoT ポリシーが見つかった場合、次の理由コードが返されます。
+ ALLOWS\$1ACCESS\$1TO\$1UNUSED\$1SERVICES

## 重要な理由
<a name="audit-chk-role-alias-unused-svcs-why-it-matters"></a>

デバイスが通常のオペレーションを実行するために必要なサービスにアクセス許可を制限することで、デバイスが侵害された場合のアカウントのリスクを軽減できます。

## 修正方法
<a name="audit-chk-role-alias-unused-svcs-how-to-fix"></a>

モノ、モノのグループ、その他のエンティティにアタッチされた不適合のポリシーを修正するには、以下のステップを実行してください。

1. 「[AWS IoT Core 認証情報プロバイダーを使用して、AWS サービスの直接呼び出しを認証](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)」の手順に従って、ロールエイリアスにより制限の厳しいポリシーを適用します。

緩和アクションを使用して、以下を実行できます。
+ Amazon SNS メッセージに対するレスポンスとしてカスタムアクションを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

# CA 証明書の有効期限が切れます
<a name="audit-chk-ca-cert-approaching-expiration"></a>

CA 証明書が 30 日以内に有効期限が切れるか、既に切れています。

このチェックは、CLI および API で `CA_CERTIFICATE_EXPIRING_CHECK` として表示されます。

**重大度:** 中

## Details
<a name="audit-chk-ca-cert-approaching-expiration-details"></a>

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっている CA 証明書に適用されます。

このチェックにより不適合の CA 証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1APPROACHING\$1EXPIRATION
+ CERTIFICATE\$1PAST\$1EXPIRATION

## 重要な理由
<a name="audit-chk-ca-cert-approaching-expiration-why-it-matters"></a>

期限切れ CA 証明書は、新しいデバイス証明書への署名に使用しないでください。

## 修正方法
<a name="audit-chk-ca-cert-approaching-expiration-how-to-fix"></a>

処理方法については、セキュリティのベストプラクティスを参照してください。以下を行うことができます。

1. AWS IoT に新しい CA 証明書を登録します。

1. 新しい CA 証明書を使用して、デバイス証明書に署名できることを確認します。

1. [UpdateCACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) を使用して、AWS IoT で古い CA 証明書を INACTIVE としてマークします。緩和アクションを使用して、次の操作を行うこともできます。
   + 監査結果に `UPDATE_CA_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

# MQTT クライアント ID の競合
<a name="audit-chk-conflicting-client-ids"></a>

複数のデバイスが同じクライアント ID を使用して接続します。

このチェックは、CLI および API で `CONFLICTING_CLIENT_IDS_CHECK` として表示されます。

**重大度:** 高

## Details
<a name="audit-chk-conflicting-client-ids-details"></a>

同じクライアント ID を使用して複数の接続が行われ、既に接続されたデバイスが切断されます。MQTT 仕様では、クライアント ID あたり 1 つのアクティブな接続のみが許可されるため、同じクライアント ID を使用して別のデバイスが接続した場合、前の接続が中断されます。

オンデマンド監査の一部として実行された場合、このチェック項目は、監査の開始前 31 日間に接続するために clientID がどのように使用されたかを調べます。スケジュールされた監査では、このチェック項目は、前回監査が実行された時間からこの監査インスタンスが開始された時間までのデータを調べます。チェック時にこの条件を緩和するステップを実行した場合、問題が残っているかどうかを判断するために接続/切断がいつ行われたかに注目してください。

このチェックにより不適合が見つかった場合、次の理由コードが返されます。
+ DUPLICATE\$1CLIENT\$1ID\$1ACROSS\$1CONNECTIONS

このチェック項目によって返される結果には、接続に使用された clientID、プリンシパル ID、切断時間も含まれます。最新の結果が最初に一覧表示されます。

## 重要な理由
<a name="audit-chk-conflicting-client-ids-why-it-matters"></a>

ID が競合するデバイスは、継続して強制的に再接続されるため、メッセージが失われたり、デバイスが接続できなくなる可能性があります。

これは、デバイスまたはデバイスの認証情報が侵害されたか、DDoS 攻撃の一部であることを示している可能性があります。アカウントでデバイスが正しく設定されていない可能性や、デバイスが接続不良のために 1 分あたり数回再接続を強制された可能性もあります。

## 修正方法
<a name="audit-chk-conflicting-client-ids-how-to-fix"></a>

AWS IoT で各デバイスを一意のモノとして登録し、モノの名前をクライアント ID として使用して接続します。または、MQTT を介してデバイスを接続するときに、クライアント ID として UUID を使用します。緩和アクションを使用して、以下を行うこともできます。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

# デバイス証明書の有効期限が切れます
<a name="audit-chk-device-cert-approaching-expiration"></a>

デバイス証明書が設定されたしきい値期間内に期限切れになるか、または既に期限切れになっています。証明書の有効期限チェックのしきい値は、デフォルト値 30 日で、30 日 (最小) から 3,652 日 (最大 10 年) の間で設定できます。

このチェックは、CLI および API で `DEVICE_CERTIFICATE_EXPIRING_CHECK` として表示されます。

**重大度:** 中

## Details
<a name="audit-chk-device-cert-approaching-expiration-details"></a>

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっているデバイス証明書に適用されます。

このチェックにより不適合のデバイス証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1APPROACHING\$1EXPIRATION
+ CERTIFICATE\$1PAST\$1EXPIRATION

## 重要な理由
<a name="audit-chk-device-cert-approaching-expiration-why-it-matters"></a>

デバイス証明書は、有効期限が切れたら使用しないでください。

## デバイス証明書の有効期限チェックの設定
<a name="w2aab9c11c43c13"></a>

この設定により、デバイスフリート全体で有効期限が近づいている証明書をモニタリングし、アラートを受信できます。例えば、証明書の有効期限が 30 日以内になった際に通知を受け取る場合は、次のようにチェックを設定できます。

```
{
    "roleArn": "your-audit-role-arn",
    "auditCheckConfigurations": {
        "DEVICE_CERTIFICATE_EXPIRING_CHECK": {
            "enabled": true,
            "configuration": {
                "CERT_EXPIRATION_THRESHOLD_IN_DAYS": "30"
            }
        }
    }
}
```

## 修正方法
<a name="audit-chk-device-cert-approaching-expiration-how-to-fix"></a>

処理方法については、セキュリティのベストプラクティスを参照してください。以下を行うことができます。

1. 新しい証明書をプロビジョニングし、デバイスにアタッチします。

1. 新しい証明書が有効で、デバイスが接続するためにその証明書を使用できることを確認します。

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用して、AWS IoT で古い証明書を INACTIVE としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_DEVICE_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + `ADD_THINGS_TO_THING_GROUP` 緩和アクションを適用して、アクションを実行できるグループにデバイスを追加します。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. 古い証明書をデバイスからデタッチします。(「[DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html)」を参照してください)。

# デバイス証明書の経過時間チェック
<a name="device-certificate-age-check"></a>

この監査チェックでは、指定した日数以上の期間、デバイス証明書がアクティブになったときにアラートが表示されます。このチェックにより、証明書のステータスを常に把握し、証明書の有効期限が切れる時期に関係なく、定期的にタイムリーなアクションが可能になり、証明書の侵害のリスクを軽減することでセキュリティを向上させるができます。

証明書の経過時間チェックのしきい値は、デフォルト値 365 日で、30 日 (最小) から 3,652 日 (最大 10 年) の間で設定できます。

このチェックは、CLI および API で `DEVICE_CERTIFICATE_AGE_CHECK` として表示されます。このチェックはデフォルトで無効になっています。重要度: **低** 

## Details
<a name="w2aab9c11c45b9"></a>

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっているデバイス証明書に適用されます。このチェックにより不適合のデバイス証明書が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1PAST\$1AGE\$1THRESHOLD

## デバイス証明書の経過時間チェックの設定
<a name="w2aab9c11c45c11"></a>

この設定により、フリートの特定のニーズに合わせて証明書ローテーションアラートを調整できるため、すべてのデバイスで強力なセキュリティ体制を維持できます。このチェックは、`UpdateAccountAuditConfiguration` API を使用して設定できます。例えば、証明書が 365 日以上アクティブになったときにアラートを受け取る場合は、次のようにチェックを設定できます。

```
{
    "roleArn": "your-audit-role-arn",
    "auditCheckConfigurations": {
        "DEVICE_CERTIFICATE_AGE_CHECK": {
            "enabled": true,
            "configuration": {
                "CERT_AGE_THRESHOLD_IN_DAYS": "365"
            }
        }
    }
}
```

# 取り消されたデバイス証明書がアクティブのままです
<a name="audit-chk-revoked-device-cert"></a>

取り消されたデバイス証明書がアクティブのままです。

このチェックは、CLI および API で `REVOKED_DEVICE_CERTIFICATE_STILL_ACTIVE_CHECK` として表示されます。

**重大度:** 中

## Details
<a name="audit-chk-revoked-device-cert-details"></a>

デバイス証明書は、CA の[ 証明書失効リスト](https://en.wikipedia.org/wiki/Certificate_revocation_list)に含まれていますが、AWS IoT ではまだアクティブなままです。

このチェック項目は、「ACTIVE」または「PENDING\$1TRANSFER」になっているデバイス証明書に適用されます。

このチェックにより不適合が見つかった場合、次の理由コードが返されます。
+ CERTIFICATE\$1REVOKED\$1BY\$1ISSUER

## 重要な理由
<a name="audit-chk-revoked-device-cert-why-it-matters"></a>

デバイス証明書が取り消されるのは、通常侵害されたためです。エラーや見落としのため、AWS IoT でまだ取り消されていない可能性があります。

## 修正方法
<a name="audit-chk-revoked-device-cert-how-to-fix"></a>

デバイス証明書が侵害されていないことを確認します。侵害されている場合は、セキュリティのベストプラクティスに従って状況を軽減します。以下を行うことができます。

1. デバイスの新しい証明書をプロビジョニングします。

1. 新しい証明書が有効で、デバイスが接続するためにその証明書を使用できることを確認します。

1. [UpdateCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCertificate.html) を使用して、AWS IoT で古い証明書を REVOKED としてマークします。緩和アクションを使用して、以下を行うこともできます。
   + 監査結果に `UPDATE_DEVICE_CERTIFICATE` 緩和アクションを適用して、この変更を行います。
   + `ADD_THINGS_TO_THING_GROUP` 緩和アクションを適用して、アクションを実行できるグループにデバイスを追加します。
   + Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

   詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。

1. 古い証明書をデバイスからデタッチします。(「[DetachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_DetachThingPrincipal.html)」を参照してください)。

# ログ記録が無効です
<a name="audit-chk-logging-disabled"></a>

AWS IoTAmazon CloudWatch で ログが有効になっていません。V1 および V2 ログ記録の両方を確認します。

このチェックは、CLI および API で `LOGGING_DISABLED_CHECK` として表示されます。

**重大度:** 低

## Details
<a name="audit-chk-logging-disabled-details"></a>

このチェックにより不適合が見つかった場合、次の理由コードが返されます。
+ LOGGING\$1DISABLED

## 重要な理由
<a name="audit-chk-logging-disabled-why-it-matters"></a>

CloudWatch の AWS IoT ログでは、認証の失敗、予期しない接続や切断など (デバイスが侵害されていることを示している可能性があります)、AWS IoT 内での動作がわかります。

## 修正方法
<a name="audit-chk-logging-disabled-how-to-fix"></a>

CloudWatch で AWS IoT ログを有効にします。「**AWS IoT Core デベロッパーガイド」の「[モニタリングとログ記録](https://docs.aws.amazon.com/iot/latest/developerguide/security-logging.html)」を参照してください。緩和アクションを使用して、以下を行うこともできます。
+ 監査結果に `ENABLE_IOT_LOGGING` 緩和アクションを適用して、この変更を行います。
+ Amazon SNS メッセージに対する応答としてカスタムレスポンスを実装する場合は、`PUBLISH_FINDINGS_TO_SNS` 緩和アクションを適用します。

詳細については、「[緩和アクション](dd-mitigation-actions.md)」を参照してください。