Forseti オープンソースのログを収集する
パーサーのバージョン: 2.0
このドキュメントでは、Google Cloud Storage V2 を使用して Forseti Open Source ログを Google Security Operations に取り込む方法について説明します。
Forseti Security は、Google Cloud Platform 環境のセキュリティを強化するために設計された、コミュニティ主導のオープンソース ツールのコレクションです。Forseti は、GCP リソースのインベントリ スナップショットを取得し、アクセス制御のコンプライアンスをスキャンして、Cloud IAM ポリシーの可視性を提供します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Cloud Storage API が有効になっている GCP プロジェクト。
- GCS バケットと IAM ポリシーを作成および管理する権限。
- 既存の Forseti Security のデプロイ。
- Forseti サーバー構成ファイル(
forseti_conf_server.yaml)へのアクセス権。
Google Cloud Storage バケットを作成する
Google Cloud コンソールを使用する
- Google Cloud コンソールに移動します。
- プロジェクトを選択するか、新しいプロジェクトを作成します。
- ナビゲーション メニューで、[Cloud Storage] > [バケット] に移動します。
- [バケットを作成] をクリックします。
次の構成情報を提供してください。
設定 値 バケットに名前を付ける グローバルに一意の名前( forseti-violations-exportなど)を入力します。ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。 ロケーション 場所を選択します(例: us-central1)。ストレージ クラス Standard(アクセス頻度の高いログに推奨) アクセス制御 均一(推奨) 保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする [作成] をクリックします。
gcloud コマンドライン ツールを使用する
または、
gcloudコマンドを使用してバケットを作成します。gcloud storage buckets create gs://forseti-violations-export \ --location=us-central1 \ --default-storage-class=STANDARDforseti-violations-exportは、必要なグローバルに一意のバケット名に置き換えます。us-central1は、必要なリージョンに置き換えます。
違反を GCS にエクスポートするように Forseti Security を構成する
Forseti Security は、forseti_conf_server.yaml ファイルの通知構成を使用して、スキャナ違反を GCS にエクスポートします。
- SSH を使用して Forseti サーバー VM に接続します。
bash gcloud compute ssh forseti-server-vm --project=YOUR_PROJECT_ID --zone=YOUR_ZONE - 構成ファイルを編集用に開きます。
bash sudo nano /home/ubuntu/forseti-security/configs/forseti_conf_server.yamlGCS ベースの構成を使用している場合は、まずダウンロードします。bash gsutil cp gs://YOUR_FORSETI_SERVER_BUCKET/configs/forseti_conf_server.yaml ~/forseti_conf_server.yaml notifierセクションに移動して、resources項を見つけます。エクスポートする違反リソース タイプごとに、
gcs_violations通知ツールを構成します。notifier: resources: - resource: iam_policy_violations should_notify: true notifiers: - name: gcs_violations configuration: data_format: csv gcs_path: gs://forseti-violations-export/violations/ - resource: firewall_rule_violations should_notify: true notifiers: - name: gcs_violations configuration: data_format: csv gcs_path: gs://forseti-violations-export/violations/ - resource: cloudsql_acl_violations should_notify: true notifiers: - name: gcs_violations configuration: data_format: csv gcs_path: gs://forseti-violations-export/violations/ - resource: bucket_acl_violations should_notify: true notifiers: - name: gcs_violations configuration: data_format: csv gcs_path: gs://forseti-violations-export/violations/ - resource: config_validator_violations should_notify: true notifiers: - name: gcs_violations configuration: data_format: csv gcs_path: gs://forseti-violations-export/violations/キー パラメータ:
resource: 違反のタイプ(例:iam_policy_violations)。data_format:csvまたはjsonに設定します。gcs_path: Cloud Storage パス(末尾にスラッシュを含める必要があります)。
ファイルを保存し、必要に応じて GCS にアップロードし直します。
構成を再読み込みします。
bash forseti server configuration reload以下を確認します。
bash forseti server configuration get | grep gcs_violations
Google SecOps サービス アカウントを取得する
Google SecOps でフィードを構成する
- [SIEM Settings] > [Feeds] に移動します。
- [新しいフィードを追加] をクリックし、[単一のフィードを設定する] を選択します。
- Feed name: 名前を入力します(例:
Forseti Violations)。 - ソースタイプ: [Google Cloud Storage V2] を選択します。
- ログタイプ: [Forseti Open Source] を選択します。
- [サービス アカウントを取得する] をクリックします。
- 一意のサービス アカウントのメールアドレス(例:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)をコピーします。 - [次へ] をクリックします。
- 入力パラメータを指定します。
- ストレージ バケット URL:
gs://forseti-violations-export/violations/ - Source deletion option: 必要に応じて選択します(テストの場合は [Never] など)。
- ストレージ バケット URL:
- [次へ] をクリックし、構成を確認して [送信] をクリックします。
Google SecOps サービス アカウントに IAM 権限を付与する
Google Cloud コンソールを使用する
- [Cloud Storage] > [バケット] に移動します。
- バケット名をクリックして、[権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
- ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。(フィードで削除オプションを選択した場合は、Storage オブジェクト管理者を使用します)。
- [保存] をクリックします。
gcloud コマンドライン ツールを使用する
gcloud storage buckets add-iam-policy-binding gs://forseti-violations-export \ --member="serviceAccount:CHRONICLE_SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.objectViewer"
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
data.resource_data.instanceGroupUrls |
about |
instanceGroupUrls の配列から統合されます。 |
data.resource_data.nodePools.*.statusMessage |
metadata.description |
nodePool.statusMessage の値。 |
data.resource_type |
metadata.event_type |
KMS/FW の特定のタイプ。それ以外の場合は GENERIC_EVENT。 |
data.scanner_index_id |
metadata.product_log_id |
値が文字列として直接コピーされます。 |
| なし | metadata.product_name |
FORSETI SECURITY に設定します。 |
| なし | metadata.vendor_name |
FORSETI に設定します。 |
data.resource_data.direction |
network.direction |
方向が INGRESS の場合は INBOUND に設定します。 |
data.resource_data.endpoint |
principal.ip |
値が直接コピーされます。 |
data.full_name、serviceAccount |
principal.user.userid |
full_name または serviceAccount から抽出されます。 |
data.violation_type |
security_result.category |
POLICY_VIOLATION または ACL_VIOLATION にマッピングされます。 |
data.rule_name |
security_result.rule_name |
値が直接コピーされます。 |
data.full_name |
target.asset.attribute.cloud.project.id |
grok を使用して full_name から抽出されます。 |
data.resource_type |
target.resource.resource_type |
resource_type に基づいて特定の型にマッピングされます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。