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

cloudwatchアイキャッチ画像

・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をインストールしていない人は、下記画像の青枠内をクリックすればコマンド実行することが可能です。

CLoudShell画面

CloudWatchフローログ用のIAMロールの作成

次にCloudWatchに割り当てるロールの作成を行います。

IAMポリシーの作成

まず初めにIAMロールにアタッチするIAMポリシーの作成を行います。

IAMのダッシュボードに移動し、ポリシーを選択。
「ポリシーの作成」をクリックします。

IAMポリシー作成画面

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

IAMポリシー作成画面

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

ポリシーの作成画面

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"
CloudWatch Logs確認

無事KMSキーが紐づけられているのを確認できましたね。

ちなみに、なかなか配信されない時はpingやsshログインを何回か試行すれば、ログが吐き出されます。

以上です。この記事が誰かの参考になれば幸いです。