S3を暗号化しているKMSキーでCloudWatch LogsにVPCフローログを配信する【AWS】

・S3を暗号化しているKMSキーを用いてVPCフローログを配信する
今回の記事では、1つのKMSキーを使用してS3とCloudWatchを暗号化しつつ、Cloud Warch LogsにVPCフローログを配信する手順を紹介しようと思います。
ちなみに、実行するユーザーはadmin権限を付与しております。
記事の目次
KMSポリシーの変更
まず初めにKMSポリシーを変更します。下記のポリシーを貼り付けてください。
<YOUR_ACCOUNT_ID>には使用しているAWSアカウントのIDを入力するようにしてください。
{
"Version": "2012-10-17",
"Id": "key-consolepolicy-3",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "Allow Transit Gateway Flow Logs to use the key",
"Effect": "Allow",
"Principal": {
"Service": [
"logs.ap-northeast-1.amazonaws.com",
"delivery.logs.amazonaws.com"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
今回はS3の暗号化とも併用しているため、Principalに「”logs.ap-northeast-1.amazonaws.com”」と「”delivery.logs.amazonaws.com”」の両方を付けていますが、S3のVPCフローログに暗号化が必要でない場合は「”delivery.logs.amazonaws.com”」を外しても問題ないです。
CloudWatch Logsのロググループ作成
下記コマンドを実行してロググループを作成します。
aws logs create-log-group --log-group-name my-log-group --kms-key-id "KMS_KEY_ARN"
上記コマンドの「my-log-group」がロググループ名になりますので、任意の名前で結構です。
ちなみに、AWS CLIをインストールしていない人は、下記画像の青枠内をクリックすればコマンド実行することが可能です。

CloudWatchフローログ用のIAMロールの作成
次にCloudWatchに割り当てるロールの作成を行います。
IAMポリシーの作成
まず初めにIAMロールにアタッチするIAMポリシーの作成を行います。
IAMのダッシュボードに移動し、ポリシーを選択。
「ポリシーの作成」をクリックします。

アクセス許可を指定では、タブを「JSON」に変更し下記のポリシーを貼り付け「次へ」をクリックしてください。

次のポリシーの作成では、任意のポリシー名、タグを入力し「ポリシーの作成」をクリックします。

IAMロールの作成
ポリシーの作成が終わったので、ロールの作成に移ります。
IAMダッシュボードからロールを選択し「ロールを作成」をクリックします。

信頼されたエンティティを選択では「カスタム信頼ポリシー」を選択し、principalに下記のコマンドを入力するようにしてください。
Principal: {
"Service": "vpc-flow-logs.amazonaws.com"
},

許可を追加では、先ほど作成した許可ポリシーを選択

次の画面で任意の名前を入力し「ロールを作成」をクリックし、作成完了です。
VPCフローログを設定する
最後にVPCフローログの設定を行います。
VPCダッシュボードに移動し「Your VPCs」から今回フローログを設定したいVPCにチェックを入れます。
下のタブの「フローログ」より「フローログを作成」をクリックします。

フローログの設定では送信先:CloudWatch Logsに送信を選択し、先ほど作成したロググループとロールを選択してください。
それ以外の設定は任意で結構です。

確認
CloudWatchのロググループから確認ができます。下記のようになっていれば配信成功です。

暗号化の確認は下記のコマンドで確認できます。
※YOUR_LOG_GROUP_NAMEにはロググループ名を入力してください。
aws logs describe-log-groups --log-group-name-prefix "YOUR_LOG_GROUP_NAME"

無事KMSキーが紐づけられているのを確認できましたね。
ちなみに、なかなか配信されない時はpingやsshログインを何回か試行すれば、ログが吐き出されます。
以上です。この記事が誰かの参考になれば幸いです。
- タグ:
- CloudWatch