
カスタマー管理キーがどのユーザーにより利用されているのかを確認する方法
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
カスタマー管理キーがどのユーザーにより利用されているのかを確認したいです。 確認方法を教えてください。
どう対応すればいいの?
どのユーザーが利用しているかについては、CloudTrail イベントの userIdentity
の userName
より確認いただくことが可能となります。
キーの暗号化については、下記 API のイベントより確認することができます。
- Encrypt
- GenerateDataKey
- GenerateDataKeyWithoutPlaintext
キーの復号については、下記 API のイベントより確認することができます。
- Decrypt
やってみた
実際にどのように、CloudTrail イベントに記録されるのかを確認していきます。 今回は カスタマー管理キーを、S3 バケットの暗号化タイプとして、利用します。 その後、下記の操作を行い、CloudTrail でどのユーザーが暗号化/復号しているのかを確認します。
- ファイルのアップロードでどのユーザーにより暗号化されているのか
- ファイルのダウンロードをどのユーザーにより復号しているのか
事前に利用する IAMユーザーをキーの管理者およびキーのユーザーとして選択いただき、カスタマー管理キーを作成します。 その後、S3 バケットを作成します。 S3 バケットの設定はデフォルトのままとし、「デフォルトの暗号化」を「AWS Key Management Service キーを使用したサーバー側の暗号化 (SSE-KMS)」と選択して、作成したカスタマー管理キーを選択します。
その後、任意のファイルをアップロードします。
アップロードしたファイルをダウンロードします。
まずは、ファイルのアップロードでどのユーザーにより暗号化されているのかについて、CloudTrail のイベント履歴から確認します。
CloudTrail のイベント履歴から、フィルター機能を利用して、イベント名:GenerateDataKey
として検索します。
結果を確認しますと、下記のイベントが記録されていることが分かります。
userIdentity の userName を確認しますと、暗号化をしたユーザーを特定することができます。
====一部抜粋====
{
"eventVersion": "1.09",
"userIdentity": {
"type": "IAMUser",
"principalId": "XXXXXXXXXX",
"arn": "arn:aws:iam::XXXXXXXXXXX:user/test-user",
"accountId": "XXXXXXXX",
"accessKeyId": "XXXXXXXXXXX",
"userName": "test-user",
"sessionContext": {
"attributes": {
"creationDate": "2024-05-12T08:32:17Z",
"mfaAuthenticated": "true"
}
},
"invokedBy": "AWS Internal"
},
"eventTime": "2024-05-12T08:44:34Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": {
"keySpec": "AES_256",
"keyId": "arn:aws:kms:ap-northeast-1:XXXXXXXXXXX:key/XXXXXXXX",
"encryptionContext": {
"aws:s3:arn": "arn:aws:s3:::test-s3-kms-for-blog"
}
},
====一部抜粋====
続いて、ファイルのダウンロードをどのユーザーにより復号しているのかについても、CloudTrail のイベント履歴から確認します。
フィルター機能をイベント名:Decrypt
として検索します。
下記のイベントが記録されており、userIdentity
の userName
を確認しますと、復号したユーザーを確認することができます。
====一部抜粋====
{
"eventVersion": "1.09",
"userIdentity": {
"type": "IAMUser",
"principalId": "XXXXXXXXXXX",
"arn": "arn:aws:iam::XXXXXXXXXXX:user/test-user",
"accountId": "XXXXXXXXXXX",
"accessKeyId": "XXXXXXXXXXX",
"userName": "test-user",
"sessionContext": {
"attributes": {
"creationDate": "2024-05-12T08:32:17Z",
"mfaAuthenticated": "true"
}
},
"invokedBy": "AWS Internal"
},
"eventTime": "2024-05-12T08:44:54Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "AWS Internal",
"userAgent": "AWS Internal",
"requestParameters": {
"encryptionContext": {
"aws:s3:arn": "arn:aws:s3:::test-s3-kms-for-blog"
},
====一部抜粋====
以上で、どのユーザーが暗号化/復号を行っているのかを確認しました。 どのユーザーにより操作されているのかが不明な際にご活用ください。