VPC Flow Logsを別アカウントのAmazon S3へ格納する

本記事では、VPC Flow Logsを別のアカウントにあるAmazon S3へ格納する方法について記載します。

はじめに

VPC Flow Logsを別のアカウントにあるAmazon S3に格納する構成のイメージは以下のようになります。アカウントAで発生したログの情報をアカウントBにあるAmazon S3へ格納する仕組みです。

  • アカウントA=通信発生アカウント
  • アカウントB=VPC Flow Logs格納するAmazon S3配置アカウント

※アカウントA/アカウントBは以降にも表示されます。

VPC Flow Logsとは

VPC内で発生した通信結果を記録として残すことができます。通信結果の範囲を絞りたい場合は、サブネットやネットワークインターフェースにフローログを作成します。

フローログのデータはAmazon CloudWatch Logs、Amazon S3、Amazon Kinesis Data Firehoseに発行することができます。

VPC フローログを使用した IP トラフィックのログ記録 - Amazon Virtual Private Cloud

設定手順

VPC Flow Logsを別アカウントのAmazon S3へ格納する設定手順は以下となります。

  1. アカウントBにてAmazon S3バケットの作成

  2. Amazon S3バケットポリシーの設定

  3. アカウントAにてVPC Flow Logsの作成

アカウントBにてS3バケットの作成

VPCフローログを格納するS3バケットをアカウントBに作成します。

AWSコンソールのAmazon S3から左ペインの[バケット]>[バケットを作成]を選択

Amazon S3バケットを作成

設定項目は以下となります。キャプチャは例をもとに設定しておりますが、実際に作成される場合は要件にあった設定値を入力してください。

設定項目 デフォルト値
バケット名 - test
AWSリージョン アジアパシフィック(東京) アジアパシフィック(東京)
オブジェクト所有者 ACL無効(推奨) ACL無効(推奨)
ブロックパブリックアクセス設定 パブリックアクセスをすべてブロック パブリックアクセスをすべてブロック
バケットのバージョニング※1 無効にする 無効にする
タグ - Name test
暗号化キータイプ SSE-S3 SSE-S3
バケットキー 有効にする 有効にする
オブジェクトロック※2 無効にする 無効にする

※1 バケットのバージョニング

バージョニング無効の場合すべ絵のオブジェクトは現行バージョンとして扱われ、現行バージョンオブジェクトを削除すると完全に削除された状態となります。有効化することで以前のバージョンという概念が生まれます。以前のバージョンオブジェクトが発生するケースとしては現行バージョンのオブジェクトが削除されたり変更が加えられた場合となります。
S3 バケットでのバージョニングの使用 - Amazon Simple Storage Service

※2 オブジェクトロック

オブジェクトロックはオブジェクトが削除及び上書きされるのを一定期間または無期限に防止できる機能です。バケットのオブジェクトロックを有効にすると、自動的にバージョニングも有効 になり、無効化はできません。
S3 オブジェクトロックの仕組み - Amazon Simple Storage Service

以上でAmazon S3バケットの作成が完了です。

Amazon S3バケットポリシーの設定

アカウントAからVPC Flow LogsをアカウントBのAmazon S3に格納するためにAmazon S3にバケットポリシーをを設定します。

作成したS3バケットを選択

[アクセス許可]タブを選択
[バケットポリシー]の[編集]からポリシーを設定
バケットポリシーを入力
  • (バケット名):Amazon S3バケット名を入力します
  • (アカウントID):アカウントAのアカウントIDを入力します

例では「(バケット名)=test」と「(アカウントID)=123456789012」を入力したポリシーとなっております。

デフォルト
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::(バケット名)/AWSLogs/(AWSアカウントAのID)/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::(バケット名)"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": [
"arn:aws:s3:::test/AWSLogs/123456789012/*"
],
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::test"
}
]
}

以上でAmazon S3バケットポリシーの作成が完了です。

VPC Flow Logs作成

アカウントAにてIPトラフィック情報を取得したい対象のAWS VPC(サブネット/ネットワークインターフェース)を選択し、VPC Flow Logsを作成します。

AWSコンソールのVPCから対象のVPCを選択し[フローログ]タブ>[フローログを作成]を選択

VPC Flow Logsを作成

設定項目は以下となります。キャプチャは例をもとに設定しておりますが、実際に作成される場合は要件にあった設定値を入力してください。

設定値 デフォルト値
名前-オプション - test
フィルタ※1 すべて すべて
最大集約間隔※2 10分間 10分間
送信先 CloudWatch Logsに送信 Amazon S3ベケットに送信
レコード形式※3 AWSのデフォルト形式 AWSのデフォルト形式
ファイル形式※4 テキスト(デフォルト) テキスト(デフォルト)
Hive互換S3プレフィックス※5 なし なし
ログのパーティション分割 24時間ごと(デフォルト) 24時間ごと(デフォルト)
タグ - Name test

※1 フィルタ

キャプチャするトラフィックを承諾、却下、すべてのトラフィックから選択することが可能です。デフォルトではすべてが指定されていますが、承諾を選択すると、通信が問題なく行われたトラフィックのみをS3に格納する設定となります。反対に、却下を選択すると、通信がうまく行われなかったトラフィックのみをS3に格納します。
VPC フローログを使用した IP トラフィックのログ記録 - Amazon Virtual Private Cloud

※2 最大集約間隔

デフォルトでは10分間が指定されていますが、1分間に設定することで10分間よりフローログが素早く届くためフロー内のイベントシーケンスをより詳細に可視化することが可能です。セキュリティインシデントを正確かつ迅速に解決できるようになりますが、その分ログの量は膨大となります。
Amazon VPC フローログで、集約間隔を 1 分に設定できるようになりました

※3 レコード形式

ログレコード形式はデフォルト形式とカスタム形式の2種類あります。デフォルト形式では14種類の指定された情報がログに含まれますが、カスタム形式では、29種類の中から必要な情報を指定することが可能です。
VPC フローログを使用した IP トラフィックのログ記録 - Amazon Virtual Private Cloud

※4 ファイル形式

Apache Parquet形式は優れた圧縮率と効率的なエンコードにより、ファイルを高圧縮することができる。フローログはVPCのネットワークインターフェース間のトラフィック情報のため、サイズが肥大化しやすいため、ファイルの圧縮率向上によりS3のストレージコストを最大25%削減することができます。
Amazon S3 インベントリが Apache Parquet の出力形式を追加しました

※5 Hive互換プレフィックス

Hive互換プレフィックスを有効にすることでS3オブジェクト名の前にオブジェクト名の説明が追記される機能です。例えば5月のオブジェクトに対して無効の場合オブジェクト名は[/5]となり、有効の場合は「month=/5」となります。
Amazon VPC フローログは、Apache Parquet、Hive 互換のプレフィックス、Hourly partitioned ファイルをサポート

以上でVPC Flow Logsの作成が完了です。

※Amazon S3にログが格納されているか確認してください。

おわりに

本記事ではAWSのVPC Flow Logsを別アカウントのAmazon S3へ格納する方法について記載しました。

ログ用のアカウント、リソース用のアカウントと利用用途によってアカウントを分けている方はぜひ参考にしていただければと思います。

執筆担当者プロフィール
相澤 萌々子

相澤 萌々子(日本ビジネスシステムズ株式会社)

クラウドソリューション本部 AWSのインフラにかかわる業務に携わっています。

担当記事一覧