モニタリングのアラート アクティビティ ログを収集する Google Cloud
このドキュメントでは、Google Cloud Storage V2 を使用して、Cloud Monitoring アラート アクティビティに関連する Cloud Logging ログを Google Security Operations に取り込む方法について説明します。
Cloud Monitoring には、Google Cloud リソースのアラート機能が用意されています。ログベースのアラート ポリシーは、ログに特定のメッセージが表示されたときに通知します。ログエントリがアラート ポリシーの条件を満たすと、Cloud Monitoring でインシデントがオープンになり、インシデントの通知が届きます。この統合により、Cloud Logging エントリを Google Security Operations にエクスポートして、セキュリティ分析と関連付けを行うことができます。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- Cloud Storage API が有効になっているGoogle Cloud プロジェクト
- GCS バケットを作成および管理する権限
- GCS バケットの IAM ポリシーを管理する権限
- Cloud Logging シンクを構成する権限
Google Cloud Storage バケットを作成する
Google Cloud コンソールを使用する
- Google Cloud Console に移動します。
- プロジェクトを選択するか、新しいプロジェクトを作成します。
- ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
- [バケットを作成] をクリックします。
次の構成情報を提供してください。
設定 値 バケットに名前を付ける グローバルに一意の名前( monitoring-logs-exportなど)を入力します。ロケーション タイプ ニーズに基づいて選択します(リージョン、デュアルリージョン、マルチリージョン)。 ロケーション ロケーションを選択します(例: us-central1)。ストレージ クラス Standard(頻繁にアクセスされるログにおすすめ) アクセス制御 均一(推奨) 保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする [作成] をクリックします。
gcloud コマンドライン ツールを使用する
または、
gcloudコマンドを使用してバケットを作成します。gcloud storage buckets create gs://monitoring-logs-export \ --location=us-central1 \ --default-storage-class=STANDARD- 次のように置き換えます。
monitoring-logs-export: 必要なバケット名(グローバルに一意)。us-central1: 優先リージョン。
- 次のように置き換えます。
ログを GCS にエクスポートするように Cloud Logging を構成する
ログエントリは、Cloud Storage に転送されると JSON ファイルとして保存されます。アラート ポリシーの管理に関する監査ログなど、Cloud Monitoring アラート アクティビティに関連するログをエクスポートできます。
ログシンクを作成する
- Google Cloud コンソールで、[ロギング] > [ログルーター] に移動します。
- [シンクを作成] をクリックします。
- 次の構成の詳細を指定します。
- シンク名: わかりやすい名前を入力します(例:
monitoring-alerts-to-gcs)。 - シンクの説明: 省略可能な説明。
- シンク名: わかりやすい名前を入力します(例:
- [次へ] をクリックします。
- [シンクサービスの選択] セクションで、次の操作を行います。
- シンクサービス: [Cloud Storage バケット] を選択します。
- Cloud Storage バケットを選択: リストからバケット(
monitoring-logs-exportなど)を選択します。
- [次へ] をクリックします。
[シンクに含めるログの選択] セクションで、エクスポートするログを選択するフィルタ クエリを入力します。
Cloud Monitoring 監査ログのフィルタの例:
protoPayload.serviceName="monitoring.googleapis.com" logName:"cloudaudit.googleapis.com/activity"ログベースのアラート ポリシーのトリガーのフィルタの例:
ログベースのアラート ポリシーをトリガーする基盤となるログをエクスポートする場合は、それらの特定のログに一致するフィルタを使用します。次に例を示します。
severity >= ERROR resource.type="gce_instance"
[次へ] をクリックします。
省略可: 必要に応じて除外フィルタを構成します。
[シンクを作成] をクリックします。
ログデータを Cloud Storage バケットにルーティングする新しいシンクを作成した場合は、ログエントリのルーティングが開始されるまで数時間かかることがあります。転送されたログエントリは、1 時間ごとにまとめて Cloud Storage バケットに保存されます。最初のエントリが表示されるまでに 2 ~ 3 時間かかることがあります。
Google SecOps サービス アカウントを取得する
Google SecOps は、一意のサービス アカウントを使用して GCS バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。
Cloud Monitoring のログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Google Cloud Monitoring Alerts Logs)。 - [ソースタイプ] として [Google Cloud Storage V2] を選択します。
[ログタイプ] として [GCP_MONITORING_ALERTS] を選択します。
[サービス アカウントを取得する] をクリックします。一意のサービス アカウント メールアドレスが表示されます(例:)。
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comこのメールアドレスをコピーして、次のステップで使用します。
[次へ] をクリックします。
次の入力パラメータの値を指定します。
ストレージ バケットの URL: GCS バケットの URI を入力します。
gs://monitoring-logs-export/monitoring-logs-exportは、実際の GCS バケット名に置き換えます。
Source deletion option: 必要に応じて削除オプションを選択します。
- なし: 転送後にファイルを削除しません(テストにおすすめ)。
- 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
アセットの名前空間: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
Google SecOps サービス アカウントに IAM 権限を付与する
Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者ロールが必要です。
Google Cloud コンソールを使用する
- [Cloud Storage] > [バケット] に移動します。
- バケット名(
monitoring-logs-exportなど)をクリックします。 - [権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- 次の構成の詳細を指定します。
- プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
- ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
- [保存] をクリックします。
gcloud コマンドライン ツールを使用する
または、
gcloudコマンドを使用して権限を付与します。gcloud storage buckets add-iam-policy-binding gs://monitoring-logs-export \ --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.objectViewer"- 次のように置き換えます。
monitoring-logs-export: バケット名。SECOPS_SERVICE_ACCOUNT_EMAIL: Google SecOps サービス アカウントのメールアドレス。
- 次のように置き換えます。
gsutil コマンドライン ツールを使用する(以前のバージョン)
SecOps サービス アカウントに、宛先バケット内のオブジェクトを読み取るために必要な権限を付与します。
gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \ gs://monitoring-logs-export
権限を確認する
権限が正しく付与されたことを確認するには:
gcloud storage buckets get-iam-policy gs://monitoring-logs-export \ --flatten="bindings[].members" \ --filter="bindings.role:roles/storage.objectViewer"出力に Google SecOps サービス アカウントのメールアドレスが表示されます。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
| jsonPayload.type_1 | additional.fields.jsonPayload_type_1 | 値を直接コピー |
| jsonPayload.debugInfo | additional.fields.number | grok パターンを使用して jsonPayload.debugInfo から抽出されます |
| jsonPayload.scheduledTime、receiveTimestamp、timestamp | metadata.event_timestamp | jsonPayload.scheduledTime の値(空でない場合)、それ以外の場合は receiveTimestamp(空でない場合)、それ以外の場合は timestamp(空でない場合)。日付照合を使用して変換されます。 |
| event_type | metadata.event_type | event_type の値(空でない場合)。空の場合は「GENERIC_EVENT」に設定 |
| insertId | metadata.product_log_id | 値を直接コピー |
| jsonPayload.targetType | network.application_protocol | 値を直接コピー |
| httpRequest.status | network.http.response_code | 整数に変換しました |
| resource.labels.location | principal.location.name | 値を直接コピー |
| jsonPayload.jobName | principal.url | 値を直接コピー |
| jsonPayload.status | security_result.action | jsonPayload.status == "PERMISSION_DENIED" の場合は「BLOCK」に設定します。 |
| 重要度 | security_result.severity | 重大度が =~ (?i)INFO の場合は INFORMATIONAL に、重大度が「LOW」の場合は LOW に、重大度が「MEDIUM」の場合は MEDIUM に、重大度が「HIGH」の場合は HIGH に、重大度が「VERY-HIGH」の場合は CRITICAL に設定します。 |
| jsonPayload.debugInfo | security_result.summary | grok パターンを使用して jsonPayload.debugInfo から抽出されます |
| logName | src.url | 値を直接コピー |
| resource.labels.project_id | target.resource.attribute.labels.project_id | 値を直接コピー |
| resource.labels.job_id | target.resource.attribute.labels.resource_labels_job_id | 値を直接コピー |
| resource.type | target.resource.resource_subtype | 値を直接コピー |
| jsonPayload.url | target.url | 値を直接コピー |
| metadata.product_name | 「Gcp_monitoring_alerts」に設定します。 | |
| metadata.vendor_name | 「GCP_MONITORING_ALERTS」に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。