

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での保管時のデータ暗号化 AWS IoT Core
<a name="encryption-at-rest"></a>

デフォルトでは、保管中のすべての AWS IoT Core データは AWS 所有キーを使用して暗号化されます。 は AWS Key Management Service () の対称カスタマーマネージドキー AWS IoT Core もサポートしていますAWS KMS。カスタマーマネージドキーを使用すると、 AWS アカウントの AWS KMS キーを作成、所有、管理できます。 AWS IoT Core は KMS キーを使用して保管中のデータを暗号化します。ユーザーは、キーポリシーの作成や保守など、これらの KMS キーを完全に制御できます。これらのキーのアクセス許可を制御する AWS KMS ために にアクセスするロールの IAM ポリシーを設定することもできます。

## AWS 所有キー
<a name="aws-owned-keys"></a>

AWS 所有キーは、 AWS サービスが複数の AWS アカウントで使用するために所有および管理する KMS キーのコレクションです。 AWS サービスは AWS 、所有キーを使用してデータを保護します。デフォルトでは、 は AWS 所有キーを使用して保管中のデータを AWS IoT Core 暗号化します。これらのキーはサービスによって管理されます。 AWS 所有キーを表示、管理、使用することはできません。ユーザーがこれらのキーを保護するために実行する必要のあるアクションはありません。

 AWS 所有キーの詳細については、「 *AWS Key Management Service デベロッパーガイド*」の[AWS 「 所有キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key)」を参照してください。

## カスタマーマネージドキー
<a name="customer-managed-keys"></a>

カスタマーマネージドキーは、作成、所有、管理する AWS アカウントの KMS キーです。ユーザーは、キーポリシーの作成や保守など、これらの AWS KMS キーを完全に制御できます。これらのキーのアクセス許可を制御する AWS KMS ために にアクセスするロールの IAM ポリシーを設定することもできます。カスタマーマネージド KMS キー AWS IoT Core を使用してデータを暗号化するように を設定できます。

カスタマーマネージドキーの詳細については、*AWS Key Management Service デベロッパーガイド*の「[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。

でカスタマーマネージドキーにオプトインするには AWS IoT Core、次の手順に従います。

**Topics**
+ [ステップ 1：カスタマーマネージドキーを作成する](#encryption-at-rest-cmk-create)
+ [ステップ 2: KMS キーを使用する AWS IoT Core ためのアクセス許可を付与する IAM ロールを作成する](#create-an-iam-role)
+ [ステップ 3: でカスタマーマネージドキーにオプトインする AWS IoT Core](#opt-in-customer-managed-keys)
+ [ステップ 4: AWS IoT Core コントロールプレーンオペレーションに必要な追加のアクセス許可](#cmk-control-plane-permissions)
+ [ステップ 5: キーの管理](#understanding-key-health)
+ [ステップ 6: キーヘルスのモニタリング](#health-status-monitoring)

### ステップ 1：カスタマーマネージドキーを作成する
<a name="encryption-at-rest-cmk-create"></a>

対称カスタマーマネージドキーは、 AWS KMS コンソールまたは AWS KMS CLI コマンドを使用して作成できます。`keySpec` は `SYMMETRIC_DEFAULT`、`keyUsage` は `ENCRYPT_DECRYPT` である必要があります。

**注記**  
AWS IoT Core は、カスタマーマネージド AWS KMS キーの`SYMMETRIC_DEFAULT`キー仕様と`ENCRYPT_DECRYPT`キー使用状況を持つキーのみをサポートします。

以下は、 で AWS IoT Core カスタマーマネージドキーに使用できる KMS キーを作成する AWS CLI コマンドの例です。

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

以下は、コマンドの出力例です。

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

詳細については、「*AWS Key Management Service デベロッパーガイド*」の「[対称カスタマーマネージドキーを作成する](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」を参照してください。

#### キーポリシー
<a name="key-policy"></a>

カスタマーマネージドキーの作成時に、キーポリシーを指定することができます。キーポリシーは、カスタマーマネージドキーへのアクセスを制御します。すべてのカスタマーマネージドキーには、キーポリシーが 1 つだけ必要です。このポリシーには、そのキーを使用できるユーザーとその使用方法を決定するステートメントが含まれています。詳細については、「AWS Key Management Service デベロッパーガイド」の「[キーポリシー](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

AWS IoT Core は、アカウントの IAM ロールを使用してカスタマーマネージドキーにアクセスします。カスタムキーポリシーを使用している場合は、このキーで作成された IAM ロールに次のアクセス許可があることを確認してください。
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### ステップ 2: KMS キーを使用する AWS IoT Core ためのアクセス許可を付与する IAM ロールを作成する
<a name="create-an-iam-role"></a>

が作成した KMS キーを使用して保管中のデータを暗号化 AWS IoT Core するには、アカウントに IAM ロールも作成する必要があります。このロールは、 が KMS キーにアクセスするために引き受け AWS IoT Core ることができます。

がロールを引き受けることを許可する AWS IoT Core には、ロールに次の信頼ポリシーが必要です。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "iot.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "111122223333"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iot:us-west-2:111122223333:*"
            }
        }
    }
}
```

IAM ロールにアタッチされた IAM ポリシーに、KMS キーに対する次のアクセス許可が設定されていることを確認します。
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

以下は、カスタマーマネージドキーに必要なアクセス許可が設定された IAM ポリシーの例です。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

詳細については、*「AWS Identity and Access Management ユーザーガイド*」の「[IAM ユーザーにアクセス許可を付与するロールを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)」を参照してください。

### ステップ 3: でカスタマーマネージドキーにオプトインする AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

前のすべてのステップを完了したら、`update-encryption-configuration` CLI コマンドを実行し、 AWS IoT Coreでカスタマーマネージドキーを使用してオプトインします。カスタマーマネージドキーにオプトインすると、 AWS アカウント内のすべての AWS IoT Core リソースは指定された AWS KMS キーを使用して暗号化されます。

1.  AWS IoT Core を使用して でカスタマーマネージドキーにオプトインするには AWS CLI、 `update-encryption-configuration` CLI コマンドを実行します。

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1.  AWS IoT Core を使用して でカスタマーマネージドキーを検証するには AWS CLI、 `describe-encryption-configuration` CLI コマンドを実行します。

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   でカスタマーマネージドキーを有効にしている場合 AWS IoT Core、出力は次のようになります。

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   `lastModifiedDate` フィールドは、暗号化設定が最後に更新された日付を示します。

   カスタマーマネージドキーを有効にしていない場合、出力は次のようになります。

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### ステップ 4: AWS IoT Core コントロールプレーンオペレーションに必要な追加のアクセス許可
<a name="cmk-control-plane-permissions"></a>

カスタマーマネージドキーにオプトインすると、 AWS アカウントに属するすべての AWS IoT Core リソースは、提供された KMS キーで暗号化されます。すべてのコントロールプレーンオペレーションでは、 AWS IoT Core リソースに対する特定のオペレーションに必要な`kms:Decrypt`アクセス許可に加えて、呼び出し元に KMS キーに対するアクセス許可が必要になりました。発信者に `kms:Decrypt` アクセス許可がなく、データの暗号化または復号化を必要とする API コール (`GetPolicy` など) を行った場合、発信者は `UnauthorizedException` を受け取ります。

たとえば、`GetPolicy` を呼び出す場合、API コールを成功させるには、カスタマーマネージド KMS キーに対する `iot:GetPolicy` と `kms:Decrypt` の両方のアクセス許可が必要です。

**注記**  
暗号化設定に使用されるキーに対する AWS KMS アクセス許可を付与するように IAM ユーザーまたはロールを更新するときは、KMS キーポリシーがそれぞれの IAM ユーザーまたはロールに必要なアクセス許可も付与していることを確認します。

#### AWS KMS の アクセス許可 `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

`UpdateEncryptionConfiguration` API コールでは、カスタマーマネージドキーにオプトインしたり、キー設定を変更したりするために、KMS キーに対する次の AWS KMS アクセス許可が必要です。
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS 他のすべてのコントロールプレーン APIsの アクセス許可
<a name="kms-permissions-control-plane-apis"></a>

ほとんどのコントロールプレーン API では、カスタマーマネージドキーが有効になっている場合に `kms:Decrypt` アクセス許可が必要です。ただし、特定の API では、これらの追加のアクセス許可は必要ありません。

 AWS KMS アクセス許可を必要としない APIs   
`List*` および `Delete*` API はこの区分には該当しません。お客様はいつでも `List*` または `Delete*` コントロールプレーン API を呼び出すことができます。発信者に `kms:Decrypt` アクセス許可がない場合でも、これらの API コールは成功します。これらの API コールは、カスタマーマネージドキーが異常である場合でも成功します。これは、`List*` と `Delete*` API が復号化を一切行わないためです。  
+ **List\$1 API** – すべての一覧表示操作 (例: `ListThings`、`ListPolicies`、`ListCertificates`)
+ **Delete\$1 API** – すべての削除操作 (例: `DeleteThing`、`DeletePolicy`、`DeleteCertificate`)

### ステップ 5: キーの管理
<a name="understanding-key-health"></a>

AWS IoT Core は、カスタマーマネージドキー設定を定期的にチェックして、暗号化および復号オペレーションに影響がないことを確認します。これらのヘルスチェックは 1 AWS IoT Core分に 1 回実行され、 AWS KMS キーおよび関連する IAM ロールの両方にアクセスして使用してオペレーションを暗号化および復号化できるかどうかを検証します。

HEALTHY  
AWS IoT Core は、指定された IAM ロールを介して AWS KMS キーに正常にアクセスし、暗号化/復号オペレーションを実行できます。すべてのコンポーネントが正しく機能しています。

UNHEALTHY  
AWS IoT Core は AWS KMS キーにアクセスまたは使用できません。これにより、新しい暗号化操作を実行できなくなり、サービス機能に影響が出る可能性があります。`errorCode` フィールドは、問題がキーにあるのか、IAM ロールにあるのかを示します。

#### キーのヘルスに影響を与える可能性のあるお客様によるアクション
<a name="customer-actions-affecting-health"></a>

いくつかのお客様のアクションが引き金となって、キーのヘルスステータスが `HEALTHY` から `UNHEALTHY` に変わることがあります。

キー関連のアクション  
+ ** AWS KMS キーの削除** – キーの削除をスケジュールすると、そのキーは `Pending deletion`ステータスになり、使用できません。
+ ** AWS KMS キーの無効化** – KMS キーを無効にすると、暗号化/復号オペレーションに使用できなくなります。
+ **削除のためのキーのスケジュール** – 削除が完了するとキーは使用できなくなります。
+ **キーポリシーの変更** – AWS IoT Core アクセスに必要なアクセス許可の削除
+ **キー使用許可の変更** – 必要な AWS KMS アクションの制限

IAM ロール関連のアクション  
+ **IAM ロールの削除** – AWS IoT Core キーにアクセスするためのロールを引き受けることはできません
+ **ロールのアクセス許可の変更** — ロールポリシーから必要な AWS KMS アクセス許可を削除する
+ **信頼ポリシーの変更** — AWS IoT Core サービスがロールを引き受けるのを防ぐ
+ **制限条件の追加** – がロール AWS IoT Core を使用できないようにする条件

アカウントレベルのアクション  
+ **クロスアカウントキーアクセスの変更** – 異なるアカウントのキーのアクセス許可の変更。
+ **サービスコントロールポリシー (SCPs)** – AWS KMS アクセスを制限する組織レベルのポリシー
+ **アカウントレベルの IAM ポリシー** – キーアクセスを上書きする、またはキーアクセスと競合するポリシー。

**重要**  
で使用される AWS KMS キー、IAM ロール、またはポリシーへの変更は、まず開発環境でテスト AWS IoT Core する必要があります。変更を加えた後、主要なヘルスステータスを注意深くモニタリングして、 AWS IoT Core 機能に影響がないことを確認します。

#### 暗号化設定の更新
<a name="key-transition"></a>

の暗号化設定を更新 AWS IoT Core して、あるカスタマーマネージドキーから別のカスタマーマネージドキーに変更するか、 AWS 所有キーとカスタマーマネージドキーの間で変更します。

設定を別のカスタマーマネージドキーに変更するには:

1. 「[ステップ 1：カスタマーマネージドキーを作成する](#encryption-at-rest-cmk-create)」の手順に従って、新しいカスタマーマネージドキーを作成します。

1. 更新期間中には古いキーと新しいキーの両方のアクセス許可を含めるように、IAM ロールポリシーを更新します。

1. 新しいキーを使用するように暗号化設定を更新します。

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

カスタマーマネージドキーから AWS 所有キーに戻すには:

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**注記**  
新しいカスタマーマネージドキーの暗号化設定を更新するときは、操作を成功させるために、古いキーと新しいキーの両方がアクセス可能な状態であることを確認します。

##### 一般的な障害シナリオとその影響
<a name="failure-scenarios"></a>

次の表は、キーが削除または非アクティブ化される一般的な障害シナリオを示しています。


| シナリオ | 即時的な影響 | 長期的な影響 | 
| --- | --- | --- | 
|  キーの無効化  |  すべての新しい暗号化/復号化の操作がすぐに失敗する  |  キーが再有効化または置き換えられるまでサービスが中断  | 
|  キー削除のスケジュール  |  キーのステータスが削除保留中に変更され、すべての暗号化/復号化操作が失敗する  |  削除完了時に自動サービスの障害が発生する  | 
|  キーの完全削除  |  すべての操作の即時および永続的な障害  |  永久的にデータが損失され、暗号化されたデータの復元が不可能  | 
|  キーポリシーの不適切な変更  |  AWS IoT Core はキーへのアクセス許可を失います  |  ポリシーが修正されるまでのサービス障害が続く  | 
|  IAM ロールの削除  |  AWS IoT Core はキーにアクセスするためのロールを引き受けることができません  |  暗号化サービスが完全に停止  | 
|  IAM ロールが正しく変更されていない  |  AWS IoT Core がロールを引き受けたり、ロールを使用してキーにアクセスしたりできない  |   IAM ロールが修正されるまでサービス障害が続く  | 

##### 予防とベストプラクティス
<a name="prevention-best-practices"></a>

キーの偶発的な削除や非アクティブ化を防ぎ、サービス障害のリスクを最小限に抑えるには:

キーのライフサイクルポリシーを実装する  
キーの作成、ローテーション、廃止に関する明確な手順を確立します。どのキーがどの AWS IoT Core リソースで使用されるかを文書化し、アクティブなキーのインベントリを維持します。

IAM ポリシーを使用してキーの削除を制限する  
権限のないユーザーが重要な暗号化キーを削除または無効化できないようにする IAM ポリシーを作成します。条件を使用して、キー削除の操作に対し追加承認を要求します。

CloudTrail ログ記録を有効にする  
CloudTrail を使用してすべての AWS KMS キーオペレーションをモニタリングし、不正または偶発的なキー管理アクティビティを検出します。キーの削除、無効化、またはポリシーの変更に関するアラートを設定します。

キーの交換手順をテストする  
非本番環境でキーの交換手順を定期的にテストして、キー関連の障害から迅速に復旧できることを確認します。

キーのバックアップを維持する  
 AWS KMS キーマテリアルをエクスポートすることはできませんが、必要に応じて迅速なキー交換を容易にするために、キー ARNs、ポリシー、および関連する AWS IoT Core 設定の詳細な記録を維持します。

キーのヘルスをモニタリングする  
`CMK.Health` メトリクスを継続的にモニタリングし、主要なヘルスステータスの変更に関する自動アラートを設定します。キー関連の問題に迅速に対処するための自動応答を実装します。

**重要**  
キーの更新手順は、本番環境に実装する前に、必ず開発環境でテストしてください。ロールバック計画を文書化し、緊急時にキー交換手順を迅速に実行できるようにします。

### ステップ 6: キーヘルスのモニタリング
<a name="health-status-monitoring"></a>

定期的なチェック AWS IoT Core の実行の一環として、CloudWatch メトリクスとログが出力され、カスタマーマネージドキー設定のヘルスステータスが可視化されます。

AWS IoT Core は、少なくとも 1 分に 1 回 CloudWatch に`CMK.Health`メトリクスを出力します。メトリクスは、 がデータの暗号化と復号 AWS IoT Core に使用するカスタマーマネージドキーのヘルスステータスに関する情報を提供します。

この `CMK.Health` パラメータは以下の値を取ることができます。
+ 値は です`1`。 AWS IoT Core データの暗号化と復号に暗号化キーを正常に使用できます。
+ 値は です`0`。 AWS IoT Core はデータの暗号化と復号に暗号化キーを使用できません。

AWS IoT Core 暗号化キーのヘルスステータスが変更されると、 も AWS IoT V2 ログを出力します。これらのログは、ヘルスステータスの更新に関する追加の詳細を提供します。これらのログを表示するには、 AWS IoT V2 ログを有効にする必要があります。`HEALTHY` ログは `INFO` レベルで出力され、`UNHEALTHY` ログは `ERROR` レベルで出力されます。ログレベルの詳細については、「[ログレベル](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)」を参照してください。

次の例は、カスタマーマネージドキーのヘルスステータスの更新を示す AWS IoT Core ために から出力される CloudWatch ログエントリです。

重要なヘルスステータスの変更を効果的にモニタリングして対応するには:

1. `CMK.Health` メトリクスの **CloudWatch アラームを設定します**。

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. 詳細なヘルスステータス変更イベントをエラーコードとメッセージでキャプチャするための **Enable AWS IoT V2 ログ記録**。

1. トラブルシューティング**の設定ステータスを確認します**。

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. `errorCode` フィールドを確認して **UNHEALTHY ステータスを調べます**。
   + `KMS_KEY_VALIDATION_ERROR` – AWS KMS キーの問題 (無効、削除、またはポリシーの問題)
   + `ROLE_VALIDATION_ERROR` – IAM ロールの問題 (削除やポリシーの問題、または信頼の問題)

#### UNHEALTHY から HEALTHY へ変更
<a name="unhealthy-to-healthy"></a>

暗号化キーのステータスが から `UNHEALTHY`に更新されると`HEALTHY`、 AWS IoT Core は次の形式で AWS IoT V2 ログメッセージを出力します。

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### HEALTHY から UNHEALTHY へ変更
<a name="healthy-to-unhealthy"></a>

暗号化キーのステータスが から `HEALTHY`に更新されると`UNHEALTHY`、 AWS IoT Core は次の形式で AWS IoT V2 ログメッセージを出力します。

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**警告**  
キーの状態が になると`UNHEALTHY`、 AWS IoT Core オペレーションはすぐに失敗します。この場合は、キー設定、IAM ロールのアクセス許可、およびポリシーを確認してください。`CMK.Health` メトリクスでステータスの変更をモニタリングします。設定を確認してもオペレーションが失敗し続ける場合は、アカウントマネージャーまたは [AWS サポートセンター](https://console.aws.amazon.com/support/home#/)にお問い合わせください。

#### AWS CloudTrail イベント
<a name="aws-cloudtrail-events"></a>

復号オペレーションの暗号化のための KMS キー AWS IoT Coreの使用状況をモニタリングすることもできます。 AWS IoT Core は`DescribeKey`、KMS キーに対して `Decrypt`、`ReEncrypt`、、および `GenerateDataKeyWithoutPlaintext`オペレーションを行い、保管中の AWS アカウントに属するデータを暗号化/復号します。

`DescribeKey`、`Decrypt`、`ReEncrypt`および `GenerateDataKeyWithoutPlaintext` には CloudTrail イベントがあります。これらのイベントは、カスタマーマネージドキーによって暗号化されたデータにアクセス AWS IoT Core するために によって呼び出される AWS KMS オペレーションをモニタリングします。

##### `Decrypt` の例
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```