概要
やりたいこと
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
コメント