既存のKMSキーで暗号化したCloudWatch LogsにVPCフローログを配信する【AWS】

cloudwatchアイキャッチ画像

・暗号化したCloudWatcをVフローログに配信したい

記事の目次

KMSのポリシー確認

まず初めにKMSのポリシーを確認してみましょう。

AWSマネジメントコンソールにサインインしサインインし、KMSのダッシュボードへ移動

KMS画像

エイリアスをクリックしKMSポリシーを確認し、編集をクリック

オンプレポリシー

principalのserviceに「”logs.ap-northeast-1.amazonaws.com”」を追加してください。
下記は私の環境の例となります。

{
    "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": "*"
        }
    ]
}

ロググループの作成

今回はAWS CLIを用いて作成を行います。

下記コマンドより、配信するロググループの作成を行なってください

aws logs create-log-group --log-group-name my-log-group --kms-key-id "KMS_KEY_ARN"

実行する環境はAWS CLIのセットアップができていればどこでもできますが、マネジメントコンソールの下記の箇所からでも実行可能です。

AWS CLI

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

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

IAMポリシーの作成

IAMのダッシュボードに移動し「ポリシーの作成」をクリック

IAMポリシー作成

下記のコマンドを入力し「次へ」をクリック

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}   

任意のポリシー名を入力し
確認画面で問題なさそうであれば、「ポリシーの作成」をクリックし完了させてください。

MFAをポリシー確認

ロールを作成

次にロールの作成を行います。

引き続きIAMロールのダッシュボードからロールを選択し「ロールを作成」をクリックします。

ロールを作成

principalに下記コマンドを追記

Principal: {
   "Service": "vpc-flow-logs.amazonaws.com"
},

全体像はこんな感じです。

信頼されたエンティティ

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

許可を作成

次の画面で任意の名前を入力し「ロールを作成」をクリック

CloudWatchログを配信

VPCダッシュボードに移動

VPCダッシュボード

下記の画面よりフローログを作成をクリック※内容は任意で入力してください。

VPCフローログ作成

作成が完了すればVPCフローログが配信されるはずです。

暗号化の確認

下記コマンドより、ロググループの詳細を確認できるので、KmsKeyIdが入っていることを確認しましょう。

aws logs describe-log-groups --log-group-name-prefix "YOUR_LOG_GROUP_NAME"
AWS CloudShell

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