VPC単位でVPCフローログをCloudWatch Logsへ保管処理を実施しましたので、その備忘録となります。
– インスタンスやサービスのログを蓄積
– ログのフィルタリング
– ログのアラート化
などの機能があります。
以下のような構成図でパブリックサブネットとプライベートサブネットにEC2を立てて、pingを飛ばしてログを確認してみたいと思います。
Table of Contents
Amazon CloudWatchへのロールを作成
CloudWatchサービスを使用するためにロールを作成します。
AWSマネジメントコンソールからIAMで検索します
左ペインのロールを選択し、ロールを作成を押下します
信頼されたエンティティを選択画面にて
信頼されたエンティティタイプはAWSサービス
ユースケースはEC2を選択し次へを押下します
ポリシーの作成は後ほど作成するので、ここもそのまま次へ
ロール名を入力し、ロールを作成する
空のロールが出来上がります。
ポリシーを作成し、アタッチ
作成したロールにポリシーを作成し、ロールに対してポリシーをアタッチします。
許可タブからインラインポリシーを作成を選択します。
ポリシーの作成ではJSONタブを選択し、以下のリンクからポリシーを貼り付けます。
参考 CloudWatch Logs へのフローログ発行のための IAM ロールAWS公式サイト– AWSのどのサービスの
– どのリソースに対して
– どんな操作を
– 許可する/許可しない
の権限をIMAユーザやIAMロールに対して付与すること
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams"
],
"Resource": "*"
}
]
}
こちらのポリシーはCloudWatch Logsへ
ロググループを作成し、ログストリームを作成し、ログイベントを送り、ログを記載する。というアクションを許可するJSONの情報です。
ポリシーに名前を付けて作成します。
ポリシーが作成されました。
信頼関係のタブから信頼されたエンティティを編集します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
どのサービスに対してポリシーを許可するか、の設定になるので、今回はCloudWatch Logsへvpc-flow-logsを発行するため、”Service”: “ec2.amazonaws.com”の部分を”Service”: “vpc-flow-logs.amazonaws.com”に書き換えます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "vpc-flow-logs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ポリシーを更新します。
ここまででロールの作成→ポリシーの作成ができました。
CloudWatchロググループの作成
AWS公式ドキュメントによると、
ロググループは、保持、モニタリング、アクセス制御について同じ設定を共有するログストリーミングのグループです。ロググループを定義して、各グループに入れるストリームを指定することができます。1 つのロググループに属することができるログストリーミングの数に制限はありません。
という説明です。
簡潔に説明すると、ログストリームはログが蓄積され、それらを集約したものをロググループ、となります。
参考 ロググループとログストリームAWS公式サイトググループを作成します
ロググループ名とログの保持期間の設定を選択します
対象のVPCにフローログを作成します。
フローログの設定をし、フローログを作成します。
– フィルタ: 通信が成功した場合、通信が失敗した場合、失敗も成功もすべてかを選択する項目
– 最大集約間隔: ログが発行される間隔
– 送信先: CloudWatch Logsに送信するか、S3に送信するかを選択
VPCに作成してフローログの送信先名をクリックしてCloudWatchのロググループを開きます。
現状は何もサービスを操作していないため、ログが発行されてませんので、EC2インスタンスを起動しパブリックサブネット→プライベートサブネットのインスタンスにping通信をしてみたいと思います。
ログの確認
ロググループからログイベントが確認できます。
内容は以上です。