

# AWS Global Accelerator フローログインの設定と使用
<a name="monitoring-global-accelerator.flow-logs"></a>

フローログにより、AWS Global Accelerator のアクセラレーター内のネットワークインターフェイス間で送信される IP アドレスに関する情報を取得できるようになります。フローログデータは Amazon S3 にパブリッシュされ、フローログを獲得した後、そこでデータを取得して表示できます。

**注記**  
米国西部 (オレゴン) リージョンの Global Accelerator に関する CloudWatch メトリクスとログは、両方ともコンソール上または AWS CLI の使用時に表示する必要があります。AWS CLI を使用するときは、`--region us-west-2` のパラメータを含めて、コマンドに米国西部 (オレゴン) リージョンを指定します。

フローログは、以下のような数多くのタスクに役立ちます。たとえば、特定のトラフィックがエンドポイントに到達していない原因のトラブルシューティングに役立ちます。これにより、制限が過度に厳しいセキュリティグループルールを診断できます。また、セキュリティツールとしてフローツールを使用し、エンドポイントに達しているトラフィックをモニタリングすることができます。

フローログレコードは、フローログのネットワークの流れを表します。各レコードでは、特定のキャプチャウィンドウで特定の 5 タプルのネットワークフローがキャプチャされます。5 タプルとは、IP のフローの送信元、送信先、およびプロトコルを指定する 5 セットの異なる値のことです。キャプチャウィンドウは、フローログレコードを発行する前にフローログサービスがデータを集計する期間です。キャプチャウィンドウは最大 1 分間です。つまり、ログは 1 分ごとに発行される頻度は高くなりますが、少なくとも 1 分ごとに発行されます。

CloudWatch Logs の料金は、ログが Amazon S3 に直接発行されている場合でも、フローログを使用する際に適用されます。詳細については、*[ログ]* タブの「[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」で*提供されたログ*を参照してください。

**ヒント**  
Amazon Athena と Amazon QuickSight を Global Accelerator フローログデータと共に使用すると、アプリケーションの到達可能性に関する問題のトラブルシューティング、セキュリティの脆弱性の特定、ユーザーがアプリケーションにアクセスする方法の概要を把握できます。詳細については、次の AWS ブログ記事を参照してください:「[Analyzing and visualizing AWS Global Accelerator flow logs using Amazon Athena and Amazon QuickSight](https://aws.amazon.com/blogs/networking-and-content-delivery/analyzing-and-visualizing-aws-global-accelerator-flow-logs-using-amazon-athena-and-amazon-quicksight/)」。

**Topics**
+ [フローログの有効化](#monitoring-global-accelerator.flow-logs-publishing-S3.enable)
+ [フローログレコードの処理](#monitoring-global-accelerator.flow-logs-publishing-S3.processing)
+ [Amazon S3 への発行](#monitoring-global-accelerator.flow-logs-publishing-S3)
+ [ログファイルのタイミング](#monitoring-global-accelerator.flow-logs.timing)
+ [フローログレコードの構文](#monitoring-global-accelerator.flow-logs.records.syntax)

## フローログを Amazon S3 に発行できるようにする
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.enable"></a>

AWS Global Accelerator でフローログを有効にするには、この手順内のステップに従います。この章のその他のセクションでは、フローログを発行してアクセスできるように、Amazon S3 バケットを設定し、アクセス許可を設定する手順について説明します。

## AWS Global Accelerator でフローログを有効にするには


1. AWS アカウントのフローログ用に Amazon S3 バケットを作成します。

1. フローログを有効にする AWS ユーザーに必要な IAM ポリシーを追加します。詳細については、「[フローログを Amazon S3 に発行する IAM ロール](#monitoring-global-accelerator.flow-logs-publishing-S3.roles)」を参照してください。

1. ログファイルに使用したい Amazon S3 バケット名とプレフィックスを使用して、次の AWS CLI コマンドを実行します。

   ```
   aws globalaccelerator update-accelerator-attributes 
          --accelerator-arn arn:aws:globalaccelerator::012345678901:accelerator/1234abcd-abcd-1234-abcd-1234abcdefgh 
          --region us-west-2
          --flow-logs-enabled
          --flow-logs-s3-bucket s3-bucket-name 
          --flow-logs-s3-prefix s3-bucket-prefix
   ```

## Amazon S3 でのフローログレコードの処理
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.processing"></a>

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

## フローログを Amazon S3 に発行する
<a name="monitoring-global-accelerator.flow-logs-publishing-S3"></a>

Amazon S3 に発行される AWS Global Accelerator のフローログは、指定される既存の S3 バケットに発行されます。フローログレコードが、バケットに保存された一連のログファイルオブジェクトに発行されます。

フローログに使用する Amazon S3 バケットの作成方法については、「*Amazon Simple Storage Service ユーザーガイド*」の「[最初の S3 バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html)」を参照してください。

### フローログファイル
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.files"></a>

フローログは、フローログレコードを収集し、ログファイルに統合して、5 分間隔でログファイルを Amazon S3 バケットに発行します。つまり、ログファイルは 5 分ごとに書き込まれ、各ログファイルには、過去 5 分間に記録された IP アドレストラフィックのフローログレコードが含まれます。

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

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

```
s3-bucket_name/s3-bucket-prefix/AWSLogs/aws_account_id/globalaccelerator/region/yyyy/mm/dd/
```

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

```
aws_account_id_globalaccelerator_accelerator_id_flow_log_id_timestamp_hash.log.gz
```

ログファイルのフォルダとファイル名構造については、次の点に注意してください。
+ タイムスタンプは、`YYYYMMDDTHHmmZ` 形式を使用します。
+ S3 バケットプレフィックスにスラッシュ (/) を指定すると、ログファイルバケットフォルダ構造には次のような二重スラッシュ (//) が含まれます:

  ```
  s3-bucket_name//AWSLogs/aws_account_id
  ```

次の例は、2018 年 11 月 23 日 00:05 UTC に AWS アカウントが `123456789012` アクセラレーター (ID: `1234abcd-abcd-1234-abcd-1234abcdefgh`) 用に作成したフローログのフォルダ構造とファイル名を示しています:

```
amzn-s3-demo-bucket/prefix1/AWSLogs/123456789012/globalaccelerator/us-west-2/2018/11/23/123456789012_globalaccelerator_1234abcd-abcd-1234-abcd-1234abcdefgh_20181123T0005Z_1fb1234.log.gz
```

1 つのフローログファイルには、5 タプルのレコードを含むインターリーブされたエントリが含まれます。つまり: `client_ip`、`client_port`、`accelerator_ip`、`accelerator_port`、`protocol`。アクセラレーターのすべてのフローログファイルを表示するには、`accelerator_id` と `account_id` によって集計されたエントリを探します。

### フローログを Amazon S3 に発行する IAM ロール
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.roles"></a>

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

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DeliverLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowGlobalAcceleratorService",
            "Effect": "Allow",
            "Action": [
                "globalaccelerator:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "s3Perms",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketPolicy",
                "s3:PutBucketPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

### フローログのための Amazon S3 バケットのアクセス許可
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.bucket-permissions"></a>

デフォルトでは、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 ユーザーガイド*」の「[Amazon S3 コンソールを使用したバケットポリシーの追加](https://docs.aws.amazon.com/AmazonS3/latest/gsg/add-bucket-policy.html)」を参照してください。バケットが複数のアカウントからフローログを受け取る場合は、各アカウントの `Resource` ポリシーステートメントに `AWSLogDeliveryWrite` エレメントエントリを追加します。

例えば、次のバケットポリシーでは、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 キーポリシー
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.encrypt-kms"></a>

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

```
{
    "Sid": "Allow AWS Global Accelerator Flow Logs to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": [
            "delivery.logs.amazonaws.com"
        ]
    },
    "Action": "kms:GenerateDataKey*",
    "Resource": "*"
}
```

### Amazon S3 ログファイルのアクセス許可
<a name="monitoring-global-accelerator.flow-logs-publishing-S3.log-file-permissions"></a>

Amazon S3 は、必須のバケットポリシーに加えて、アクセスコントロールリスト (ACL) を使用して、フローログによって作成されたログファイルへのアクセスを管理します。デフォルトでは、バケット所有者が各ログファイルで `FULL_CONTROL` 権限を持ちます。ログ配信の所有者 (バケット所有者とは異なる場合) は、許可を持ちません。ログ配信アカウントには、`READ` および `WRITE` 許可があります。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[アクセスコントロールリスト (ACL) の概要](https://docs.aws.amazon.com/AmazonS3/latest/gsg/acl-overview.html)」を参照してください。

## ログファイル配信のタイミング
<a name="monitoring-global-accelerator.flow-logs.timing"></a>

AWS Global Accelerator は、設定されたアクセラレーターのログファイルを 1 時間に最大数回配信します。一般的に、ログファイルには、一定期間内にアクセラレーターが受信したリクエストに関する情報が含まれています。Global Accelerator は通常、その期間のログファイルを、ログに書き込まれたイベントの発生から 1 時間以内に Amazon S3 バケットに配信します。ある期間のログファイルエントリの一部またはすべてが、最大で 24 時間遅れることもあります。ログエントリが遅れた場合、Global Accelerator はこれらをログファイルに保存します。そのファイル名には、ファイルが配信された日時ではなく、リクエストが発生した期間の日時が含められます。

Global Accelerator は、ログファイルを作成する場合、ログファイルに対応する期間中にリクエストを受信したすべてのエッジロケーションから、アクセラレーターの情報を集約します。

Global Accelerator は、ロギングが有効化し 4 時間後ほどから確実にログファイルを書き出し始めます。この時間以前にも少しのログファイルを取得できる場合もあります。

**注記**  
期間中にアクセラレーターに対してユーザーによる接続がなければ、その期間のログファイルは配信されません。

## フローログレコードの構文
<a name="monitoring-global-accelerator.flow-logs.records.syntax"></a>

フローログレコードはスペース区切りの文字列で、以下の形式です。

 `<version> <aws_account_id> <accelerator_id> <client_ip> <client_port> <accelerator_ip> <accelerator_port> <endpoint_ip> <endpoint_port> <protocol> <ip_address_type> <packets> <bytes> <start_time> <end_time> <action> <log-status> <globalaccelerator_source_ip> <globalaccelerator_source_port> <endpoint_region> <globalaccelerator_region> <direction> <vpc_id>` 

バージョン 1.0 形式には VPC 識別子 `vpc_id` は含まれません。`vpc_id` を含むバージョン 2.0 形式は、Global Accelerator がクライアント IP アドレスが保持されているエンドポイントにトラフィックを送信すると生成されます。

次の表は、フローログレコードのフィールドについて説明しています。


****  

| フィールド | 説明 | 
| --- | --- | 
| `version` | フローログバージョン。 | 
| `aws_account_id` | フローログの AWS アカウント ID。 | 
| `accelerator_id` | トラフィックが記録されるアクセラレーターの ID。 | 
| `client_ip` | 送信元の IPv4 または IPv6 アドレス。 | 
| `client_port` | ソースポート。 | 
| `accelerator_ip` | アクセラレーターの IP アドレス。 | 
| `accelerator_port` | アクセラレーターのポート。 | 
| `endpoint_ip` | トラフィックの送信先 IP アドレスとポート。 | 
| `endpoint_port` | トラフィックの送信先ポート。 | 
| `protocol` | トラフィックの IANA プロトコル番号。詳細については、「[割り当てられたインターネットプロトコル番号](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)」を参照してください。 | 
| `ip_address_type` | IPv4 または IPv6。 | 
| `packets` | キャプチャウィンドウ中に転送されたパケットの数。パケット数が 0 (ゼロ) の場合、フローは存続していますが、キャプチャウィンドウ中にその方向にパケットは見られませんでした。 | 
| `bytes` | キャプチャウィンドウ中に転送されたバイト数。 | 
| `start_time` | キャプチャウィンドウの開始時刻 (Unix 時間)。 | 
| `end_time` | キャプチャウィンドウの終了時刻 (Unix 時間)。 | 
| `action` | トラフィックに関連付けられたアクション: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html)  | 
| `log-status` | フローログのロギングステータス。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/global-accelerator/latest/dg/monitoring-global-accelerator.flow-logs.html)  | 
| `globalaccelerator_source_ip` | Global Accelerator ネットワークインターフェイスで使用される IP アドレス。クライアント IP アドレスの保存が有効になっている場合、この値は - (ハイフン) に設定されます。 詳細については、「[AWS Global Accelerator でクライアント IP アドレスを保存する](preserve-client-ip-address.md)」を参照してください。 | 
| `globalaccelerator_source_port` | Global Accelerator ネットワークインターフェイスで使用されるポート。クライアント IP アドレスの保存が有効になっている場合、この値は 0 (ゼロ) に設定されます。 詳細については、「[AWS Global Accelerator でクライアント IP アドレスを保存する](preserve-client-ip-address.md)」を参照してください。 | 
| `endpoint_region` | エンドポイントが配置されている AWS リージョン。 | 
| `globalaccelerator_region` | リクエストを処理したエッジロケーション (プレゼンスポイント)。各エッジロケーションには、3 文字コードと、割り当てられた任意の数字が存在します (例: DFW3)。通常、この 3 文字コードは、エッジロケーションの近くにある空港の、国際航空運送協会の空港コードに対応します (これらの略語は今後変更される可能性があります。) | 
| `direction` | トラフィックの方向。Global Accelerator ネットワーク (`INGRESS`) に入るトラフィック、またはクライアント (`EGRESS`) に戻るトラフィックを示します。 | 
| `vpc_id` | VPC 識別子。Global Accelerator がクライアント IP アドレスが保持されているエンドポイントにトラフィックを送信する場合、バージョン 2.0 フローログに含まれます。 | 

フィールドが特定のレコードに適用しない場合、レコードでそのエントリには「-」記号が表示されます。