CloudWatch LogsへVPC/サブネット/ENIのフローログを送る設定

AWSでCloudWatch Logsへフローログを送ることが出来るリソースは以下の3種。

  1. VPC
  2. サブネット
  3. ENI(Elasic Network interface)

上記3種リソースからCloudWatch Logsにフローログを送ることが出来ます。VPCのフローログを1つCloudWatch Logsに設定すると、そのVPC内のサブネットとENIの全てのフローログが自動で設定されます。一つ一つ管理しなくていいので楽です。

ENIはEC2の(仮想)ネットワークインターフェイスでいわゆるNIC(ネットワークインターフェイスカード)です。ENIは基本的にEC2インスタンスに1個以上付きます。したがって、CloudWatch Logsのフローログ設定は、上記の3種類のリソース合計数と同じ数のCloudWatchロググループを設定する事が可能です。

フローログの設定は、IAMポリシーを作り、IAMロールを作り、CloudWatchでロググループを作り、VPCフローログを作るとなります。

以下、一連の作業はIAMポリシーのAdministratorAccessをアタッチしたIAMグループに所属するAdministratorsグループのユーザーで行っています。

IAMポリシー作成

CloudWatch Logsへロググループを作り、ログストリームを作り、ログイベントを送り、ログを記載する というアクション達を許可する以下JSONのIAMポリシーを作る。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
  1. IAMへ
  2. IAMポリシーへ
  3. ポリシーの作成へ
  4. JSONを選ぶ
  5. 上記JSONを貼り付け
  6. ポリシーの確認
  7. 名前を入力 EX)Send_to_CloudWatch_Logs
  8. ポリシーの作成

IAMポリシーをIAMロールに設定

  1. IAMへ
  2. ロールへ
  3. ロールの作成へ
  4. 「信頼されたエンティティの種類を選択」で「AWSサービス」を選ぶ
  5. 「ユースケースの選択」は、EC2を選ぶ
  6. 「次のステップ:アクセス権限」へ
  7. 「ポリシーのフィルタ」で「ユーザーによる管理」を選択
  8. 「Send_to_CloudWatch_Logs」ポリシーにチェックを入れる
  9. 「次のステップ:タグ」
  10. 「次のステップ:確認」
  11. 「ロール名」を入力 EX)Flow-Logs-Role-to-cloudwatch-logs-from-ec2-eni
  12. 「ロールの作成」

IAMロールでロールとVPCフローログの信頼関係を設定

Flow-Logs-Role-to-cloudwatch-logs-from-ec2-eni のIAMロールで以下JSONの信頼関係を作成

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
  1. IAMへ
  2. ロールへ
  3. 「Flow-Logs-Role-to-cloudwatch-logs-from-ec2-eni」をクリック
  4. 「信頼関係」のタブをクリック
  5. 「信頼関係の編集」をクリック
  6. 上記JSONを貼り付け
  7. 「信頼ポリシーの更新」をクリック

※AWSのAdministratorユーザーではないユーザーがこれらのIAM設定をしている場合、そのユーザーは以下JSONの iam:PassRole アクションを使用するアクセス許可 が必要です。account-idにはアカウントIDを調べて変更してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["iam:PassRole"],
      "Resource": "arn:aws:iam::account-id:role/Flow-Logs-Role-to-cloudwatch-logs-from-ec2-eni"
    }
  ]
}

フローログのIAM設定詳細は、AWS公式ドキュメントCloudWatch Logs へのフローログの発行を参照ください。

CloudWatchでロググループを作る

CloudWatchロググループでENIフローログをつくると仮定します。

  1. CloudWatchへ
  2. ロググループへ
  3. 「ロググループを作成」へ
  4. 「ロググループ名」を入力 EX)「/aws/プロジェクト名/vpc/eniリソース名/flowlogs」
  5. 「作成」

※必要に応じて作成したロググループの「保持設定」を「アクション」→「保持設定を編集」で変更してください。

フローログを作る

CloudWatchロググループでENIフローログをつくると仮定します。

  1. EC2ダッシュボードへ
  2. 左サイドバーのネットワークインターフェイスへ
  3. 該当するネットワークインターフェイスをチェックする
  4. タブのフローログをクリック
  5. 「フローログの作成」をクリック
  6. filterを選ぶ
  7. DestinationはCloudWatch Logsを選択
  8. ロググループでは上記で作ったロググループを選択
  9. IAMロールで「Flow-Logs-Role-to-cloudwatch-logs-from-ec2-eni」を選ぶ
  10. タグを入力(任意)
  11. 「Create」

VPCとサブネットのフローログの削除について

VPCとサブネットのフローログは、EC2のENI(ネットワークインターフェイス)では削除できません。VPC、もしくはVPCのサブネットで削除しなければならない。ENIのフローログはENIで削除できます。要は、フローログを作ったリソースでないとフローログを削除できないです。AWSやAzureなどのクラウドは、リソース削除が複雑・・・。

また、フローログの削除後、IAMポリシーやIAMロールで削除できるものがあるかどうか、確認することもお勧めします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください