Cloudflare Logpush は、Cloudflare ダッシュボードまたは API から、ログを Amazon S3 へ直接送信できます。AWS GovCloud のロケーションを使うお客様は、Amazon S3 endpoint ではなく S3-compatible endpoint を使います。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
Select a destination で、Amazon S3 を選びます。
-
次の送信先情報を入力または選択します。
- Bucket - S3 バケット名
- Path - ストレージコンテナ内のバケットの場所
- Organize logs into daily subfolders(推奨)
- Bucket region
- ポリシーで AWS SSE-S3 AES256 Server Side Encryption ↗ が必要な場合。
- Grant Cloudflare access to upload files to your bucket では、バケットに ポリシー ↗ があることを確認します(未追加の場合)。
- JSON ポリシーをコピーし、Amazon S3 コンソールでバケットを開いて Permissions > Bucket Policy に貼り付け、Save を選択します。
送信先の詳細を入力したら、Continue を選択します。
-
所有権の証明のため、Cloudflare は指定した送信先へファイルを送ります。トークンを確認するには、所有権チャレンジファイルの Overview タブで Open ボタンを選び、内容を Cloudflare ダッシュボードに貼り付けてバケットへのアクセスを検証します。Ownership Token を入力し、Continue を選択します。
-
ストレージサービスへ送信するデータセットを選びます。
-
次のステップで、Logpush ジョブを設定します。
- Job name を入力します。
- If logs match では、ログに含めるイベントと除外するイベントを選べます。詳細は Filters を参照してください。このオプションがないデータセットもあります。
- Send the following fields では、すべてのログを送信先へ送るか、送るログを選ぶかを選べます。
-
Advanced Options では、次の設定ができます。
- ログ内のタイムスタンプフィールドの形式を選びます(
RFC3339(デフォルト)、Unix、UnixNano)。 - ログの サンプリングレート を選ぶか、ランダムに抽出した割合のログを送信します。
CVE-2021-44228の秘匿化を有効にします。このオプションは、${の出現箇所をすべてx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式を選びます(
-
Logpush ジョブの設定が終わったら、Submit を選択します。
Cloudflare は、Amazon Identity and Access Management(IAM)を使って S3 バケットへアクセスします。Cloudflare の IAM ユーザーには、バケットに対する PutObject 権限が必要です。
ログは、S3 Access Control List(ACL)の Bucket-owner-full-control 権限で、gzip 圧縮されたオブジェクトとしてバケットに書き込まれます。
例として、burritobot バケットの logs ディレクトリにログを保存する場合を考えます。S3 URL は s3://burritobot/logs になります。
Logpush ジョブの読み取りや設定の前に、Log Share の権限が有効になっていることを確認してください。詳細は Roles のセクション を参照してください。
Amazon S3 への Logpush を有効にするには、次の手順を行います。
-
S3 バケットを作成します。手順は Amazon のドキュメント ↗ を参照してください。
-
次のポリシーを編集し、S3 > Bucket > Permissions > Bucket Policy に貼り付けます。
Resourceの値は、自分のバケットパスに置き換えます。AWSのPrincipalは Cloudflare が所有しています。この値は変更しません。
{
"Id": "<POLICY_ID>",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1506627150918",
"Action": ["s3:PutObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::burritobot/logs/*",
"Principal": {
"AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"]
}
}
]
}