Amazon Virtual Private Cloud
ユーザーガイド

Amazon S3 へのフローログの発行

フローログはフローログデータを Amazon S3 に発行できます。

Amazon S3 に発行した場合、フローログデータは、指定する既存の Amazon S3 バケットに発行されます。モニタリングされるすべてのネットワークインターフェイスのフローログレコードが、バケットに保存された一連のログファイルオブジェクトに発行されます。フローログが VPC のデータを取得する場合、フローログは、選択された VPC ですべてのネットワークインターフェイスのフローログレコードを発行します。詳細については、「フローログレコード」を参照してください。

フローログに使用する Amazon S3 バケットの作成方法については、Amazon Simple Storage Service 入門ガイドの「バケットの作成」を参照してください。

フローログファイル

フローログは、フローログレコードを収集し、ログファイルに統合して、5 分間隔でログファイルを Amazon S3 バケットに発行します。各ログファイルには、前の 5 分間に記録された IP トラフィックのフローログレコードが含まれています。

ログファイルの最大ファイルサイズは 75 MB です。ログファイルが 5 分以内にファイルサイズの上限に達した場合、フローログはフローログレコードの追加を停止し、Amazon S3 バケットに発行してから、新しいログファイルを作成します。

ログファイルでは、フローログの ID、リージョン、および作成日によって決定されるフォルダ構造を使用して、指定された Amazon S3 バケットに保存されます。バケットフォルダ構造では次の形式が使用されます。

bucket_ARN/optional_folder/AWSLogs/aws_account_id/vpcflowlogs/region/year/month/day/log_file_name.log.gz

同様に、ログファイルのファイル名は、フローログの ID、リージョン、および作成日時によって決定されます。ファイル名は、次の形式です。

aws_account_id_vpcflowlogs_region_flow_log_id_timestamp_hash.log.gz

注記

タイムスタンプには YYYYMMDDTHHmmZ 形式が使用されます。

たとえば、以下は、us-east-1 リージョンで June 20, 201816:20 UTC に、リソースに対して AWS アカウント 123456789012 で作成されたフローログのフォルダ構造とログファイルの名前を示しています。これには 16:15:00 から 16:19:59 のフローログレコードが含まれています。

arn:aws:s3:::my-flow-log-bucket/AWSLogs/123456789012/vpcflowlogs/us-east-1/2018/06/20/123456789012_vpcflowlogs_us-east-1_fl-1234abcd_20180620T1620Z_fe123456.log.gz

Amazon S3 へのフローログ発行のための IAM ロール

フローログを Amazon S3 バケットに発行するには、IAM プリンシパル (例: IAM ユーザー) に十分なアクセス許可が付与されている必要があります。IAM ポリシーには以下のアクセス許可が含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*" } ] }

フローログのための Amazon S3 バケットのアクセス許可

デフォルトでは、Amazon S3 バケットとそれに含まれているオブジェクトはプライベートです。バケット所有者のみが、そのバケットとそれに含まれているオブジェクトにアクセスできます。ただし、バケット所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーにアクセス権限を付与することができます。

フローログを作成しているユーザーがバケットを所有している場合、そのバケットにログを発行するアクセス権限をフローログに付与するため、次のポリシーが自動的にバケットにアタッチされます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket_name/optional_folder/AWSLogs/account_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:::bucket_name" } ] }

フローログを作成しているユーザーがバケットを所有していないか、バケットに対する GetBucketPolicy および PutBucketPolicy アクセス権限がない場合、フローログの作成は失敗します。この場合、バケット所有者はバケットに手動で上記のポリシーを追加して、フローログ作成者の AWS アカウント ID を指定する必要があります。詳細については、Amazon Simple Storage Service コンソールユーザーガイドの「S3 バケットポリシーを追加する方法」を参照してください。バケットが複数のアカウントからフローログを受け取る場合は、各アカウントの AWSLogDeliveryWrite ポリシーステートメントに Resource エレメントエントリを追加します。たとえば、次のバケットポリシーでは、AWS アカウント 123123123123 および 456456456456 に、log-bucket という名前のバケットの flow-logs という名前のフォルダに、フローログの発行を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": {"Service": "delivery.logs.amazonaws.com"}, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/123123123123/*", "arn:aws:s3:::log-bucket/flow-logs/AWSLogs/456456456456/*" ], "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:::log-bucket" } ] }

注記

個別の AWS アカウント ARN の代わりに、ログ配信サービスプリンシパルに AWSLogDeliveryAclCheck および AWSLogDeliveryWrite アクセス権限を付与することをお勧めします。

SSE-KMS バケットに使用する必須の CMK キーポリシー

AWS KMS で管理されたキー (SSE-KMS) とカスタマー管理のカスタマーマスターキー (CMK) を使用して Amazon S3 バケットで サーバー側の暗号化を有効にしている場合、CMK のキーポリシーに以下を追加して、フローログがバケットにログファイルを書き込めるようにする必要があります。

{ "Sid": "Allow VPC Flow Logs to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Amazon S3 ログファイルのアクセス権限

Amazon S3 は、必須のバケットポリシーに加えて、アクセスコントロールリスト (ACL) を使用して、フローログによって作成されたログファイルへのアクセスを管理します。デフォルトでは、バケット所有者が各ログファイルで FULL_CONTROL 権限を持ちます。ログ配信の所有者 (バケット所有者とは異なる場合) は、アクセス権限を持ちません。ログ配信アカウントには、READ および WRITE アクセス権限があります。詳細については、Amazon Simple Storage Service 開発者ガイドの「アクセスコントロールリスト (ACL) の概要」を参照してください。

Amazon S3 に発行するフローログの作成

Amazon S3 バケットを作成して設定した後は、VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。

ネットワークインターフェイスのフローログを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Network Interfaces] を選択します。

  3. 1 つ以上のネットワークインターフェイスを選択し、[アクション]、[フローログの作成] の順に選択します。

  4. [フィルタ] で、記録する IP トラフィックデータのタイプを指定します。承諾および拒否されたトラフィックを記録するには [すべて]、拒否されたトラフィックだけを記録するには [拒否]、承諾されたトラフィックだけを記録するには [承諾済み] を選択します。

  5. [送信先] で、[Amazon S3 バケットへの送信] を選択します。

  6. [S3 バケット ARN] で、既存の Amazon S3 バケットの Amazon リソースネーム (ARN) を指定します。バケットの ARN にはサブフォルダを含めることができます。AWSLogs は予約語であるため、バケットでサブフォルダ名として使用することはできません。

    たとえば、my-bucket というバケットで my-logs というサブフォルダを指定するには、次の ARN を使用します。

    arn:aws:s3:::my-bucket/my-logs/

    バケットを所有している場合は、リソースポリシーが自動的に作成され、バケットにアタッチされます。詳細については、「フローログのための Amazon S3 バケットのアクセス許可」を参照してください。

  7. [作成] を選択します。

VPC またはサブネットのフローログを作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションペインで、[VPC] または [サブネット] を選択します。

  3. 1 つ以上の VPC またはサブネットを選択し、[アクション]、[フローログの作成] の順に選択します。

  4. [フィルタ] で、記録する IP トラフィックデータのタイプを指定します。承諾および拒否されたトラフィックを記録するには [すべて]、拒否されたトラフィックだけを記録するには [拒否]、承諾されたトラフィックだけを記録するには [承諾済み] を選択します。

  5. [送信先] で、[Amazon S3 バケットへの送信] を選択します。

  6. [S3 バケット ARN] で、既存の Amazon S3 バケットの Amazon リソースネーム (ARN) を指定します。バケットの ARN にはサブフォルダを含めることができます。AWSLogs は予約語であるため、バケットでサブフォルダ名として使用することはできません。

    たとえば、my-bucket というバケットで my-logs というサブフォルダを指定するには、次の ARN を使用します。

    arn:aws:s3:::my-bucket/my-logs/

    バケットを所有している場合は、リソースポリシーが自動的に作成され、バケットにアタッチされます。詳細については、「フローログのための Amazon S3 バケットのアクセス許可」を参照してください。

  7. [作成] を選択します。

Amazon S3 でのフローログレコードの処理

ログファイルは圧縮されます。Amazon S3 コンソールを使用してログファイルを開くと、ファイルは解凍され、フローログレコードが表示されます。ファイルをダウンロードする場合、フローログレコードを表示するには解凍する必要があります。

Amazon Athena を使用し、ログファイルのフローログレコードに対してクエリを実行することもできます。Amazon Athena は、標準 SQL を使用して Amazon S3 のデータの分析を簡易化するインタラクティブなクエリサービスです。詳細については、Amazon Athena ユーザーガイドの「Amazon VPC フローログのクエリ」を参照してください。