Google Cloud Armor ログ(LBログ)を Logging から BigQuery へエクスポート
目次
概要
やりたいこと
BigQuery で Cloud Armor ログを検索したい。
Logging から BigQeury へ Cloud Armor ログ (LB ログ) をエクスポートできる。
ログルーターのシンク
Logging からログをエクスポートするのに、ログルーターのシンクがある。
BigQuery 以外にもCloud Storage、Pub/Sub、Elasticsearch にエクスポートできる。
コンソール
手動で Logging シンクを作成
「Logging」 →「ログエクスプローラー」→「操作」→「シンクを作成」。

もしくは「Logging」 →「ログルーター」→「シンクを作成する」でも可能。

という BigQuery の dataset を作成する。
- シンクの詳細 : waf_to_bq
- シンクの宛先 : BigQuery で新規データセット(test_waf_manu)
- シンクに含めるログの選択 : resource.type=http_load_balancer
- シンクに含めないログの選択 : なし

BigQuery で確認。
SELECT * FROM test_waf_manu.requests
ログを出力できた。

補足
WIP : Terraform で Logging シンクを作成
※できてない、BigQueryのアクセス権限で Logging からの編集を有効化する必要あり
Logging から BigQuery へのエクスポートするシンクを Terraform で作成できる。
エクスポート先の BigQuery は明示的に作成する。
シンクと BigQuery のデータセットを作成する。
vi logging_sync.tf
resource "google_bigquery_dataset" "dataset" { dataset_id = "lb_waf_tf" friendly_name = "test" description = "This is a test description" location = "EU" default_table_expiration_ms = 3600000 labels = { env = "default" } } resource "google_logging_project_sink" "my-sink" { name = "my-bigquery-instance-sink" # Can export to pubsub, cloud storage, or bigquery destination = "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/lb_waf_tf" # Log all WARN or higher severity messages relating to instances filter = "resource.type=http_load_balancer" # Use a unique writer (creates a unique service account used for writing) unique_writer_identity = true bigquery_options { use_partitioned_tables = true } }
デプロイ。
terraform apply
ログルーターに「my-bigquery-instance-sink」が作成される。

ログを発生させるため、リクエストしてみる。
$ curl -I “http://34.117.94.129/index.html?var=’OR’B=’B'”
HTTP/1.1 403 Forbidden
Content-Length: 134
Content-Type: text/html; charset=UTF-8
Date: Wed, 20 Jan 2021 05:47:04 GMT
ディスカッション
コメント一覧
まだ、コメントがありません