

# Data Catalog の暗号化
<a name="encrypt-glue-data-catalog"></a>

AWS Glue Data Catalog 暗号化により、機密データのセキュリティが強化されます。AWS Glue は AWS Key Management Service (AWS KMS) と統合し、Data Catalog に保存されているメタデータを暗号化します。これには、セマンティック検索用にビジネスコンテキストが追加された自動登録アセットも含まれます。AWS Glue コンソールまたは AWS CLI を使用し、Data Catalog でリソースの暗号化設定を有効または無効にできます。

Data Catalog の暗号化を有効にすると、新しく作成するオブジェクトはすべて暗号化されます。暗号化を無効にすると、新しく作成するオブジェクトは暗号化されませんが、既存の暗号化オブジェクトは暗号化された状態が維持されます。

AWS マネージド暗号化キーまたはカスタマーマネージド暗号化キーを使用し、Data Catalog 全体を暗号化できます。キーの種類と状態の詳細については、AWS Key Management Service デベロッパーガイドの「[AWS Key Management Service の概念](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html#key-state-cmk-type)」を参照してください。

**注記**  
暗号化されたデータカタログをクローラーで使用する場合、暗号化設定を維持する必要があります。クローラーが暗号化されたカタログを処理した後に暗号化設定を削除すると、エラーが発生します。暗号化設定を削除する必要がある場合は、既存のクローラを変更するのではなく、新しいクローラを作成してください。

## AWS マネージドキー
<a name="AWS-managed-keys"></a>

 AWS マネージドキーはお客様のアカウントにある KMS キーであり、AWS KMS と統合された AWS サービスがお客様に代わって作成、管理、使用します。アカウントの AWS マネージドキーの表示、キーポリシーの表示し、AWS CloudTrail ログでその使用の監査を行うことができます。ただし、キーを管理したり、許可を変更したりすることはできません。

保管時の暗号化は、メタデータの暗号化に使用される AWS Glue の AWS マネージドキーを管理するため、AWS KMS と自動的に統合されます。メタデータの暗号化を有効にしたときに AWS マネージドキーが存在しない場合、AWS KMS は自動的に新しいキーを作成します。

詳細については、[AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) を参照してください。

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

カスタマーマネージドキーは AWS アカウント 内の KMS キーで、ユーザーが作成、所有、および管理します。ユーザーは、この KMS キーに関する完全なコントロール権を持ちます。以下の操作を実行できます。
+  キーポリシー、IAM ポリシー、許可付与の確立と維持 
+ 有効化と無効化
+  暗号化マテリアルのローテーション 
+  タグを追加 
+ 参照するエイリアスの作成
+  削除のスケジュール設定

カスタマーマネージドキーの許可を管理する方法の詳細については、[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を参照してください。

**重要**  
AWS Glue は、対称カスタマーマネージドキーのみをサポートしています。KMS キー リストには、対称キーのみが表示されます。ただし、**[KMS キー ARN の選択]** を選択した場合、任意のキータイプの ARN をコンソールで入力します。対称キーには ARN だけを入力するようにしてください。  
対称カスタマーマネージドキーを作成するには、AWS Key Management Service デベロッパーガイドの「[対称カスタマーマネージドキーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)」の手順に従ってください。

保存時に Data Catalog の暗号化を有効にすると、KMS キーを使用して次のリソースタイプが暗号化されます。
+ データベース
+ テーブル
+ パーティション
+ テーブルのバージョン
+ 列統計
+ ユーザー定義関数
+ Data Catalog のビュー
+ カタログアセット

## AWS Glue の暗号化コンテキスト
<a name="encryption-context"></a>

 [暗号化コンテキスト](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)とは、データに関する追加のコンテキスト情報を含むために、使用する (オプションの) キーと値のペアのセットです。AWS KMS は、暗号化コンテキストを[追加の認証済みデータ](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad)として使用し、[暗号化の認証](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#define-authenticated-encryption)をサポートします。データの暗号化リクエストに暗号化コンテキストを組み込むと、AWS KMS は暗号化コンテキストを暗号化後のデータにバインドします。データを復号化するには、リクエストに同じ暗号化コンテキストを含めます。AWS Glue はすべての AWS KMS の暗号化処理に同じ暗号化コンテキストを使用する際、キーは `glue_catalog_id` で値は `catalogId` を指定します。

```
"encryptionContext": {
    "glue_catalog_id": "111122223333"
}
```

 AWS マネージドキーまたは対称カスタマーマネージドキーを使用して Data Catalog を暗号化するとき、監査レコードとログで暗号化コンテキストも使用することができ、キーがどのように使用されているか特定することができます。暗号化コンテキストは、AWS CloudTrail または Amazon CloudWatch ログが生成したログにも表示されます。

## 暗号化の有効化
<a name="enable-encryption"></a>

 AWS Glue コンソールの **[データカタログの設定]** または AWS CLI を使用し、AWS Glue Data Catalog オブジェクトの暗号化を有効にできます。

------
#### [ Console ]

**コンソールを使用して暗号化を有効にするには**

1. AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。

1. ナビゲーションペインで、**[データカタログ]** を選択します。

1. **[データカタログの設定]** ページで、**[メタデータの暗号化]** チェックボックスを選択し、AWS KMS​ キーを選択します。

   暗号化を有効にするとき、カスタマーマネージドキーを指定しない場合、暗号化設定では AWS マネージド KMS キーが使用されます。

1. (オプション) カスタマーマネージドキーを使用して Data Catalog を暗号化すると、リソースを暗号化および復号化するため、Data Catalog は IAM ロールを登録するオプションを提供します。お客様に代わって AWS Glue が引き受ける IAM ロールの許可を付与する必要があります。データを暗号化および復号する AWS KMS アクセス許可が含まれます。

   Data Catalog に新しいリソースを作成すると、AWS Glue はデータを暗号化するために提供される IAM ロールを引き受けます。同様に、コンシューマがリソースにアクセスすると、AWS Glue はデータを復号化する IAM ロールを引き受けます。必要な許可を持つ IAM ロールを登録した場合、呼び出し元のプリンシパルはキーにアクセスしてデータを復号化する許可の必要がなくなります。
**重要**  
カスタマーマネージドキーを使用して Data Catalog リソースを暗号化するときに限り、KMS オペレーションを IAM ロールに委任できます。KMS ロール委任の機能は、現時点では Data Catalog リソースの暗号化に AWS マネージドキーの使用をサポートしていません。
**警告**  
IAM ロールを有効にして KMS の操作を委任すると、以前に AWS マネージドキーで暗号化された Data Catalog リソースにアクセスできなくなります。

   1. お客様に代わって AWS Glue が引き受けられる IAM ロールを有効にし、データの暗号化および復号化できるようにするには、**[KMS 操作を IAM ロールに委任する]** オプションを選択します。

   1. 次に、IAM ロールを選択します。

      IAM ロールを作成するには、[AWS Glue の IAM ロールを作成する](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) を参照してください。

      Data Catalog にアクセスするために AWS Glue が引き受ける IAM ロールには、Data Catalog のメタデータを暗号化および復号化する許可が必要です。IAM ロールを作成し、次のインラインポリシーをアタッチできます。
      + 次のポリシーを追加し、Data Catalog を暗号化および復号化する AWS KMS 許可を含めてください。

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

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey"
              ],
              "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{<key-id>}}"
            }
          ]
        }
        ```

------
      + 次に、AWS Glue サービスが IAM ロールを引き受けるには、ロールに次の信頼ポリシーを追加します。

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

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "",
              "Effect": "Allow",
              "Principal": {
                "Service": "glue.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        }
        ```

------
      + 次に、IAM ロールに `iam:PassRole` 許可を追加します。

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

****  

        ```
        {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                "iam:PassRole"
              ],
              "Resource": [
                "arn:aws:iam::{{111122223333}}:role/{{<encryption-role-name>}}"
              ]
            }
          ]
        }
        ```

------

   暗号化を有効にするときに、AWS Glue が引き受ける IAM ロールを指定していない場合、Data Catalog にアクセスするプリンシパルには、KMS キーに対して次の AWS KMS アクションを実行するアクセス許可が必要です。
   + `kms:DescribeKey`
   + `kms:Decrypt`
   + `kms:Encrypt`
   + `kms:GenerateDataKey`
   + `kms:CreateGrant`

   次のポリシーにより、プリンシパルに必要なアクセス許可が付与されます。`kms:CreateGrant` アクションにより、AWS Glue は AWS KMS リクエストの完了後にバックグラウンドで Data Catalog メタデータと検索インデックスを暗号化および再暗号化できます。AWS Glue は、そのアクセス許可の付与を `glue_catalog_id` 暗号化コンテキストにスコープします。

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "kms:DescribeKey",
               "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:Encrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}"
           },
           {
               "Effect": "Allow",
               "Action": "kms:CreateGrant",
               "Resource": "arn:aws:kms:{{us-east-1}}:{{123456789012}}:key/{{1234abcd-12ab-34cd-56ef-1234567890ab}}",
               "Condition": {
                   "StringEquals": {
                       "kms:EncryptionContext:glue_catalog_id": "{{123456789012}}"
                   },
                   "StringLike": {
                       "kms:CallerAccount": "{{123456789012}}"
                   },
                   "Bool": {
                       "kms:GrantIsForAWSResource": "true"
                   }
               }
           }
       ]
   }
   ```

------
#### [ AWS CLI ]

**SDK または AWS CLI を使用して暗号化を有効にするには**
+ `PutDataCatalogEncryptionSettings` API オペレーションを使用します。キーが指定されていない場合、AWS Glue はカスタマーアカウントに AWS マネージド暗号化キーを使用し、Data Catalog を暗号化します。

  ```
  aws glue put-data-catalog-encryption-settings \
    --data-catalog-encryption-settings '{
        "EncryptionAtRest": {
        "CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE",
        "SseAwsKmsKeyId": "arn:aws:kms:{{<region>}}:{{<account-id>}}:key/{{<key-id>}}",
        "CatalogEncryptionServiceRole":"arn:aws:iam::{{<account-id>}}:role/{{<encryption-role-name>}}"
      }
  
    }'
  ```

------

 暗号化を有効にすると、Data Catalog オブジェクトで作成するすべてのオブジェクトが暗号化されます。この設定をオフにすると、Data Catalog で作成するオブジェクトが暗号化されなくなります。必要な KMS 許可を使用して、Data Catalog の既存の暗号化オブジェクトに引き続きアクセスできます。


|  | 
| --- |
|   AWS KMS​ キーは、Data Catalog でそのキーを使用して暗号化されたすべてのオブジェクトの ​AWS KMS キーストアに、使用可能な状態で保持する必要があります。キーを削除すると、オブジェクトは復号化できなくなります。ある種のシナリオでは、このようにして、Data Catalog メタデータにアクセスできないようにする場合があります。   | 

## AWS KMS カスタマーマネージドキーを使用した Catalog アセットの暗号化
<a name="encrypt-context-search"></a>

サポートされているカタログリソースは、アセットとして AWS Glue Data Catalog に自動的に登録されます。これらのアセットにビジネスコンテキストを追加すると、AWS Glue でこのメタデータをセマンティック検索してフィルタリングできます。カスタマーマネージドキーを使用してメタデータ暗号化を有効にすると、AWS Glue は KMS キーを使用して Data Catalog の検索インデックスも暗号化します。追加の手順は必要ありません。AWS Glue は、メタデータ暗号化の一部として検索インデックスの暗号化を自動的に有効にします。

以前にカスタマーマネージドキーで Data Catalog 暗号化を有効にしていて、既存のポリシーに `kms:Decrypt`、`kms:Encrypt`、`kms:GenerateDataKey` のみが含まれている場合は、カタログアセットとセマンティック検索をサポートするために、次のアクセス許可を追加する必要があります。
+ `kms:DescribeKey` — キーの検証に必要です。
+ `kms:CreateGrant` — AWS Glue が検索インデックスをバックグラウンドで暗号化および再暗号化できるようにします。AWS Glue は、そのアクセス許可の付与を `glue_catalog_id` 暗号化コンテキストにスコープします。

これらのアクセス許可が含まれているポリシー全体については、「[暗号化の有効化](#enable-encryption)」を参照してください。暗号化を初めて設定する場合、そのセクションのポリシーには既に必要なアクセス許可がすべて含まれています。

**重要**  
Data Catalog アセットに対するセマンティック検索は、AWS マネージドキー (`aws/glue`) をサポートしていません。Data Catalog メタデータが `aws/glue` で暗号化されている場合、カスタマーマネージドキーを使用するように設定を変更するか、設定を削除するまで、そのカタログを検索することはできません。

メタデータ暗号化の有効化は非同期オペレーションです。AWS Glue はリクエストを受け入れ、既存の検索インデックスの暗号化を含む暗号化設定を完了します。データカタログのサイズによっては、初めて暗号化を有効にする際に時間がかかる場合があります。この間、ビジネスコンテキスト API と検索 API は、ステータスが `Enabled` になるまでエラーを返します。

次の表に、Data Catalog アセットメタデータのさまざまな暗号化ステータスを示します。


| ステータス | 説明 | 
| --- | --- | 
| 有効化 | AWS Glue は暗号化をセットアップしています。初めて暗号化を有効にすると、セットアップが完了するまで検索できなくなります。あるカスタマーマネージドキーから別のカスタマーマネージドキーに変更しても、検索機能は引き続き利用可能です。 | 
| 有効 | 暗号化が完了しました。データカタログメタデータは検索可能です。 | 
| 有効 (エラーあり) | 暗号化が完了し検索は可能ですが、AWS Glue は一部のメタデータを処理できませんでした。コンソールにエラーメッセージが表示されます。失敗した項目を再試行するには、エラーを修正した後に暗号化設定を再度保存してください。 | 
| 失敗 | 暗号化を完了できず、検索できません。エラーメッセージを確認し、設定を修正して、カスタマーマネージドキーを使用して暗号化設定を再度保存します。 | 
| 無効化 | AWS Glue は、KMS キーを使用して検索インデックスからの暗号化を無効にしています。 | 
| Disabled | Data Catalog メタデータと検索インデックスが KMS キーで暗号化されなくなりました。ビジネスコンテキスト API と検索 API は引き続き機能します。 | 

Data Catalog 暗号化をあるカスタマーマネージドキーから別のキーに変更すると、AWS Glue は検索インデックスを新しいキーで再暗号化します。検索は、再暗号化の進行中も引き続き使用できます。メタデータ暗号化を無効にすると、AWS Glue は検索インデックスから KMS キーを削除し、ステータスは `Disabled` に変わります。

**警告**  
暗号化ステータスが `Enabled` (暗号化を無効にした場合は `Disabled`) に戻るまで、以前の KMS キーへのアクセスを無効化、削除、または取り消さないでください。オペレーションが完了する前に AWS Glue が前のキーにアクセスできなくなると、検索インデックスを復号できず、ステータスが `Failed` に変わり、Data Catalog での検索は使用できません。

メタデータ暗号化を有効化または変更するプリンシパルには、「[暗号化の有効化](#enable-encryption)」で説明されている `kms:CreateGrant` アクセス許可が必要です。AWS Glue は、[AWS Glue の暗号化コンテキスト](#encryption-context) と一致する検索インデックスの AWS KMS オペレーションで `glue_catalog_id` 暗号化コンテキスト (値は `catalogId`) を使用します。AWS Glue が検索インデックスに対して行う AWS KMS 呼び出しは、AWS CloudTrail に記録されます。

ビジネスコンテキストと検索にアクセスするプリンシパルも、KMS キーにアクセスできる必要があります。IAM サービスロールに AWS KMS オペレーションを委任している場合は、代わりにサービスロールが KMS キーにアクセスできる必要があります。

ID ポリシーに加えて、AWS Glue が検索インデックス暗号化の許可を作成できるように、KMS キーポリシーに以下のステートメントを追加する必要があります。`kms:GrantIsForAWSResource` 条件はアクセス許可の付与を AWS Glue に制限し、`glue_catalog_id` 暗号化コンテキストはそれをデータカタログにスコープします。ステートメントを使用するには、{{ユーザー入力用プレースホルダー}}を独自の情報に置き換えます。

```
{
    "Sid": "AllowCreateGrantForSearchIndexEncryption",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::{{account-id}}:root"
    },
    "Action": "kms:CreateGrant",
    "Resource": "arn:aws:kms:{{region}}:{{account-id}}:key/{{key-id}}",
    "Condition": {
        "StringLike": {
            "kms:CallerAccount": "{{account-id}}"
        },
        "Bool": {
            "kms:GrantIsForAWSResource": "true"
        },
        "StringEquals": {
            "kms:EncryptionContext:glue_catalog_id": "{{account-id}}"
        }
    }
}
```

## AWS Glue 用に KMS キーの監視
<a name="monitoring-keys"></a>

 Data Catalog リソースに KMS キーを使用すると、AWS CloudTrail または Amazon CloudWatch ログを使用して AWS Glue が AWS KMS に送信するリクエストを追跡できます。AWS CloudTrail は、KMS キーで暗号化されたデータにアクセスするために AWS Glue が呼び出す KMS 操作を監視および記録します。

 次の例は、`Decrypt`、`GenerateDataKey`、`CreateGrant`、`RetireGrant` オペレーションの AWS CloudTrail イベントです。カスタマーマネージドキーで暗号化を有効にすると、AWS Glue は `glue_catalog_id` 暗号化コンテキストに範囲指定される AWS KMS のアクセス許可の付与を作成し、バックグラウンドで Data Catalog メタデータを暗号化および再暗号化できるようにし、AWS Glue が不要になったアクセス許可の付与を廃止します。

------
#### [ Decrypt ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXPHTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-01-10T14:33:56Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-01-10T15:18:11Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "glue_catalog_id": "111122223333"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df",
    "eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:{{<region>}}:{{111122223333}}:key/{{<key-id>}}"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```

------
#### [ GenerateDataKey ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAXPHTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "AKIAIOSFODNN7EXAMPLE",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-01-05T21:15:47Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-01-05T21:15:47Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE",
        "encryptionContext": {
            "glue_catalog_id": "111122223333"
        },
        "keySpec": "AES_256"
    },
    "responseElements": null,
    "requestID": "64d1783a-4b62-44ba-b0ab-388b50188070",
    "eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ CreateGrant ]

カスタマーマネージドキーで暗号化を有効にすると、AWS Glue は KMS キーのアクセス許可の付与を作成し、バックグラウンドで Data Catalog メタデータを暗号化および再暗号化できるようにします。アクセス許可の付与は `glue_catalog_id` 暗号化コンテキストに範囲指定されます。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Example/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/Example",
                "accountId": "111122223333",
                "userName": "Example"
            },
            "attributes": {
                "creationDate": "2024-04-22T17:02:00Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2024-04-22T17:02:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": {
        "retiringPrincipal": "glue.eu-west-2.amazonaws.com",
        "operations": [
            "GenerateDataKey",
            "Decrypt",
            "Encrypt",
            "ReEncryptFrom",
            "ReEncryptTo",
            "DescribeKey",
            "RetireGrant"
        ],
        "granteePrincipal": "glue.eu-west-2.amazonaws.com",
        "constraints": {
            "encryptionContextSubset": {
                "glue_catalog_id": "111122223333"
            }
        },
        "keyId": "arn:aws:kms:eu-west-2:111122223333:key/{{<key-id>}}"
    },
    "responseElements": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE",
        "keyId": "arn:aws:kms:eu-west-2:111122223333:key/{{<key-id>}}"
    },
    "requestID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "eventID": "ff000af-00eb-00ce-0e00-ea000fb0fba0SAMPLE",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-2:111122223333:key/{{<key-id>}}"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```

------
#### [ RetireGrant ]

AWS Glue は、KMS キーを変更したり、暗号化を無効にしたりするなど、AWS Glue で不要になったアクセス許可の付与を廃止します。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "glue.amazonaws.com"
    },
    "eventTime": "2025-04-29T22:18:50Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "RetireGrant",
    "awsRegion": "eu-west-2",
    "sourceIPAddress": "glue.amazonaws.com",
    "userAgent": "glue.amazonaws.com",
    "requestParameters": null,
    "responseElements": {
        "keyId": "arn:aws:kms:eu-west-2:111122223333:key/{{<key-id>}}"
    },
    "additionalEventData": {
        "grantId": "0ab0ac0d0b000f00ea00cc0a0e00fc00bce000c000f0000000c0bc0a0000aaafSAMPLE"
    },
    "requestID": "294308c0-7617-4727-b5c9-34eaf75aa8e3",
    "eventID": "273708f7-5fbb-3a90-b04d-2b3138bf0ec9",
    "readOnly": false,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:eu-west-2:111122223333:key/{{<key-id>}}"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "sharedEventID": "b46377d7-b3c3-4bfd-a257-722bd3f3411d",
    "eventCategory": "Management"
}
```

------