AWS KMS による AWS CloudTrail API コールのログ記録
AWS KMS は、ユーザー、ロール、その他の AWS のサービスが AWS KMS へのすべての呼び出しを記録するサービスである AWS CloudTrail と統合されています。CloudTrail は、AWS KMS コンソールからの呼び出し、AWS KMS API、AWS CloudFormation テンプレート、AWS Command Line Interface (AWS CLI)、AWS Tools for PowerShell を含むイベントとして、AWS KMS へのすべての API コールをキャプチャします。
CloudTrail は、ListAliases や GetKeyRotationStatus などの読み取り専用オペレーション、CreateKey や PutKeyPolicy などの KMS キーを管理するオペレーション、GenerateDataKey や Decrypt などの暗号化オペレーションを含む、すべての AWS KMS オペレーションを記録します。また、DeleteExpiredKeyMaterial、DeleteKey、SynchronizeMultiRegionKey、RotateKey など、AWS KMS がユーザーのために呼び出す内部オペレーションも記録します。
CloudTrail は成功したオペレーションと失敗した呼び出しの試行 (発信者がリソースへのアクセスを拒否された場合など) を記録します。KMS キーに対するアカウントを横断したオペレーションは、発信者のアカウントと KMS キー所有者のアカウントの両方に記録されます。ただし、アクセスが拒否されたために拒否されたクロスアカウント AWS KMS リクエストは、呼び出し元のアカウントにのみ記録されます。
セキュリティ上の理由から、AWS KMS ログエントリ (Encrypt リクエストの Plaintext
パラメータ、GetKeyPolicy への応答、すべての暗号化オペレーションなど) から省略されるフィールドもあります。特定の KMS キーの CloudTrail ログエントリを容易に検索するために、AWS KMS は、API オペレーションがキー ARN を返さない場合でも、一部の AWS KMS キー管理オペレーションのログエントリの responseElements
フィールドに、影響を受けた KMS キーのキー ARN を追加します。
デフォルトでは、すべての AWS KMS アクションは CloudTrail イベントとして記録されますが、AWS KMS アクションは CloudTrail 追跡から除外できます。詳細については、「証跡からの AWS KMS イベントの除外」を参照してください。
詳細はこちら:
-
AWS Nitro Enclave の AWS KMS オペレーションの CloudTrail ログの例については、「Nitro Enclaves に対するリクエストの監視」を参照してください。
CloudTrail でのログ記録イベント
CloudTrail は、アカウント作成時に AWS アカウント で有効になります。AWS KMS でアクティビティが発生すると、そのアクティビティは [Event history] (イベント履歴) の他の AWS のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、 で表示、検索、ダウンロードできますAWS アカウント 詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。
AWS KMS のイベントなど、AWS アカウント のイベントの継続的な記録については、追跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべての AWS リージョン に適用されます 証跡は、AWS パーティションのすべてのリージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、CloudTrail ログで収集されたイベントデータをより詳細に分析し、それを基にアクションを取るために他の AWS のサービス を設定できます。詳細については、以下を参照してください。
CloudTrail の詳細については、AWS CloudTrail ユーザーガイドを参照してください。KMS キーの使用をモニタリングするその他の方法については、AWS KMS keys のモニタリング を参照してください。
各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。同一性情報は次の判断に役立ちます。
-
リクエストが、ルート認証情報または IAM ユーザー認証情報のどちらを使用して送信されたか。
-
リクエストが、ロールまたはフェデレーティッドユーザーの一時的なセキュリティ認証情報を使用して送信されたか。
-
リクエストが、別の AWS のサービス によって行われたか。
詳細については、「CloudTrail userIdentity Element」(CloudTrail userIdentity 要素) を参照してください。
CloudTrail のイベントの検索
CloudTrail ログエントリを検索するときは、CloudTrail コンソールか CloudTrail LookupEvents オペレーションを使用します。CloudTrail は、イベント名、ユーザー名、イベントソースなど、検索をフィルタリングするための多数の属性値をサポートしています。
CloudTrail の AWS KMS ログエントリを検索しやすくするために、AWS KMS が、次の CloudTrail ログエントリフィールドに入力します。
注記
2022 年 12 月以降、AWS KMS は、特定の KMS キーを変更するすべての管理オペレーションでリソースタイプとリソース名の各属性を入力しています。これらの属性値は、次のオペレーションでは、NULL か、CloudTrail の古いエントリになる場合があります: CreateAlias、CreateGrant、DeleteAlias、DeleteImportedKeyMaterial、ImportKeyMaterial、ReplicateKey、RetireGrant、RevokeGrant、UpdateAlias、UpdatePrimaryRegion。
属性 | 値 | ログエントリ |
---|---|---|
イベントソース (EventSource ) |
kms.amazonaws.com |
すべてのオペレーション |
リソースタイプ (ResourceType ) |
AWS::KMS::Key |
特定の KMS キーを変更する管理オペレーション (CreateKey や EnableKey など。ListKeys は除く)。 |
リソース名 (ResourceName ) |
キー ARN (またはキー ID およびキー ARN) | 特定の KMS キーを変更する管理オペレーション (CreateKey や EnableKey など。ListKeys は除く)。 |
特定の KMS キーの、管理オペレーションのログエントリを容易に検索するために、AWS KMS は、AWS KMS API オペレーションがキー ARN を返さない場合でも、ログエントリの responseElements.keyId
エレメントに、影響を受けた KMS キーのキー ARN を記録します。
例えば、DisableKey オペレーションの呼び出しが成功しても応答には値が返されませんが、NULL 値の代わりに、DisableKey ログエントリの responseElements.keyId
値には、無効になっている KMS キーのキーARN が追加されます。
この機能は 2022 年 12 月に追加されました。その影響を受ける CloudTrail ログエントリは以下の通りです: CreateAlias、CreateGrant、DeleteAlias、DeleteKey、DisableKey、EnableKey、EnableKeyRotation、ImportKeyMaterial、RotateKey、SynchronizeMultiRegionKey、TagResource、UntagResource、UpdateAlias、UpdatePrimaryRegion。
証跡からの AWS KMS イベントの除外
AWS KMS リソースの使用と管理に関するレコードを提供する場合、ほとんどの AWS KMS ユーザーは CloudTrail 追跡内のイベントに依存します。追跡は、AWS KMS keys の作成、無効化、削除、およびキーポリシーの変更、ユーザーに代わって AWS のサービスが行う KMS キーの使用など、重要なイベントを監査するための貴重なデータソースになります。場合によっては、CloudTrail ログエントリのメタデータ (暗号化オペレーションの暗号化コンテキストなど) が、エラーを回避または解決するために役立ちます。
ただし、AWS KMS では多数のイベントを生成できるため、AWS CloudTrail では証跡から AWS KMS イベントを除外できます。この証跡単位の設定では、すべての AWS KMS イベントが除外されます。特定の AWS KMS イベントを除外することはできません。
警告
CloudTrail ログから AWS KMS イベントを除外すると、KMS キーを使用するアクションが隠されることがあります。このオペレーションを実行するために必要な cloudtrail:PutEventSelectors
アクセス許可をプリンシパルに与えるときは注意してください。
証跡から AWS KMS イベントを除外するには:
-
CloudTrail コンソールでは、追跡の作成時または追跡の更新時に、[Log Key Management Service events] (Key Management Service のイベントを記録) 設定を使用します。手順については、AWS CloudTrail ユーザーガイドの Logging Management Events with the AWS Management Console を参照してください。
-
CloudTrail API では、PutEventSelectors オペレーションを実行します。
ExcludeManagementEventSources
属性をkms.amazonaws.com
の値でイベントセレクタに追加します。例については、AWS CloudTrail ユーザーガイドのExample: A trail that does not log AWS Key Management Service events を参照してください。
この除外は、コンソール設定または証跡のイベントセレクタを変更することでいつでも無効にできます。その後、証跡は AWS KMS イベントの記録を開始します。ただし、除外が有効である間に発生した AWS KMS イベントはリカバリできません。
コンソールまたは API を使用して AWS KMS イベントを除外すると、それにより実行される CloudTrail PutEventSelectors
の API オペレーションも CloudTrail ログに記録されます。AWS KMS イベントが CloudTrail ログに表示されない場合は、ExcludeManagementEventSources
属性が kms.amazonaws.com
に設定されている PutEventSelectors
イベントを探します。