Palo Alto Networks IOC のログを収集する
このドキュメントでは、STIX over TAXII を使用して Palo Alto Networks のセキュリティ侵害インジケーター(IOC)を Google Security Operations に取り込む方法について説明します。stix_taxii 取り込みスクリプト(Cloud Run functions の関数)は、スケジュールに従って Palo Alto TAXII 2.1 サーバーからインジケーターを取得し、STIX ログタイプを使用して Google SecOps に送信します。
Palo Alto Networks は、Cortex XSOAR または XSIAM 脅威インテリジェンス管理(TIM)から TAXII 経由で IoC を STIX 2.1 フィードとして公開します。Google SecOps の STIX パーサーは、一般的なインジケーター タイプ(IPv4 アドレス、ドメイン、URL、ファイル ハッシュ、メールアドレス)を UDM にマッピングします。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス、Google SecOps 取り込み認証ファイル(サービス アカウント JSON)、お客様 ID。
- 課金が有効になっており、サービス アカウント、Secret Manager シークレット、Cloud Run functions、Cloud Scheduler ジョブを作成する権限がある Google Cloud プロジェクト。
Palo Alto Cortex XSOAR または XSIAM(脅威インテリジェンス管理(TIM)ライセンス付き)、統合を構成するための特権アクセス。
Cortex TIM で Palo Alto TAXII 2.1 フィードを設定する
TAXII2 Server 統合は、Cortex XSOAR または XSIAM のインジケーターを、取り込みスクリプトがプルするアウトバウンド TAXII 2.1 フィードとして公開します。
- Cortex XSOAR または XSIAM で、[Settings & Info] > [Settings] > [Integrations] > [Marketplace] から TAXII Server コンテンツ パックをインストールします。
- [設定] > [統合] > [インスタンス] に移動し、TAXII2 サーバーを検索して、[インスタンスを追加] をクリックします。
- 次の構成情報を指定します。
- 名前: インスタンスの名前を入力します(
SecOps-TAXIIなど)。 - 長時間実行インスタンス: このオプションを有効にします。
- TAXII2 Server version: [2.1] を選択します。
- 認証情報: 取り込みスクリプトが HTTP Basic 認証に使用するユーザー名とパスワードを設定します。
- 名前: インスタンスの名前を入力します(
[コレクション JSON] フィールドに、次の内容を貼り付けます。
STIXパーサーがサポートするインジケーター タイプを含むSecOpsIOCsという名前のコレクションを 1 つ公開します。{ "SecOpsIOCs": { "query": "type:IP or type:Domain or type:URL or type:File or type:Email", "description": "Indicators exported to Google SecOps" } }[保存して終了] をクリックして、インスタンスを有効にします。インスタンスのステータスが実行中と表示されていることを確認します。
Google SecOps プレイグラウンドまたは統合のコマンドバーで、次のコマンドを実行して出力を保存します。
!taxii-server-info !taxii-server-list-collectionsコマンド出力から、デプロイ ステップで使用する次の値を保存します。
- Discovery URL:
!taxii-server-infoによって返される API ルート URL(例:https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/)。 - コレクション名:
SecOpsIOCs。 - ユーザー名とパスワード: 設定した Basic 認証情報。
- Discovery URL:
必要な Google Cloud API を有効にする
Google Cloud コンソールで Cloud Shell を開き、次のコマンドを実行します。
gcloud services enable \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ cloudscheduler.googleapis.com \ secretmanager.googleapis.com
認証情報を Secret Manager に保存する
このスクリプトは、Secret Manager から Google SecOps サービス アカウントの JSON と TAXII パスワードを読み取ります。
取り込み認証ファイルから Google SecOps 取り込みサービス アカウントのシークレットを作成します。
gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.jsonTAXII パスワードの Secret を作成します。
printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-両方のリソース名を
projects/PROJECT_ID/secrets/SECRET_NAME/versions/latestの形式で保存します。これらは.env.ymlで使用します。
関数用のサービス アカウントを作成する
Cloud Run functions のランタイム サービス アカウントを作成します。
gcloud iam service-accounts create stix-taxii-sa \ --display-name="STIX/TAXII ingestion function"次の 2 つのシークレットへのアクセス権を付与します。
gcloud secrets add-iam-policy-binding secops-ingestion-sa \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding taxii-password \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
取り込みスクリプトをデプロイする
stix_taxii 取り込みスクリプトは、TAXII サーバーから指標を取得し、Ingestion API を使用して Google SecOps にストリーミングする Cloud Run functions です。常に STIX ログタイプを使用して取り込みます。
Cloud Shell で、取り込みスクリプト リポジトリのクローンを作成します。
git clone https://github.com/chronicle/ingestion-scripts.git cp -r ingestion-scripts/common ingestion-scripts/stix_taxii/common cd ingestion-scripts/stix_taxii次の内容のファイルを
.env.ymlという名前で作成します。プレースホルダの値を、前に保存した値に置き換えます。CHRONICLE_CUSTOMER_ID: "YOUR_CUSTOMER_ID" CHRONICLE_REGION: "us" CHRONICLE_SERVICE_ACCOUNT: "projects/PROJECT_ID/secrets/secops-ingestion-sa/versions/latest" TAXII_VERSION: "2.1" TAXII_DISCOVERY_URL: "https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/" TAXII_COLLECTION_NAMES: "SecOpsIOCs" TAXII_USERNAME: "YOUR_TAXII_USERNAME" TAXII_PASSWORD_SECRET_PATH: "projects/PROJECT_ID/secrets/taxii-password/versions/latest" POLL_INTERVAL: "60"関数をデプロイします。
gcloud functions deploy stix-taxii-ingestion \ --gen2 \ --entry-point main \ --trigger-http \ --runtime python312 \ --region us-central1 \ --service-account stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com \ --timeout 540 \ --memory 512MB \ --no-allow-unauthenticated \ --env-vars-file .env.ymlデプロイ出力から関数のトリガー URL(
https://us-central1-PROJECT_ID.cloudfunctions.net/stix-taxii-ingestionなど)を保存します。
Cloud Scheduler で関数のスケジュールを設定する
関数を呼び出す権限をサービス アカウントに付与します。
gcloud functions add-invoker-policy-binding stix-taxii-ingestion \ --region=us-central1 \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com"関数を 1 時間ごとに呼び出すスケジューラ ジョブを作成します(頻度を
POLL_INTERVALと一致させます)。gcloud scheduler jobs create http stix-taxii-scheduler \ --location=us-central1 \ --schedule="0 */1 * * *" \ --uri="FUNCTION_TRIGGER_URL" \ --http-method=POST \ --oidc-service-account-email="stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --oidc-token-audience="FUNCTION_TRIGGER_URL"
デプロイを確認する
初回実行をトリガーします。
gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1関数のログを確認します。
gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50Google SecOps で、
STIXログタイプのイベントを検索して、インジケーターが取り込まれていることを確認します。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | 論理 |
|---|---|---|
observable.object.properties.type |
categorization |
直接マッピングされます。 |
type |
categorization |
直接マッピングされます。 |
x_ctix_confidence_score |
confidence_score |
名前変更済み/マッピング済み |
name |
domain_and_ports.domain |
直接マッピングされます。 |
observable.object.properties.value |
domain_and_ports.domain |
直接マッピングされます。 |
value |
domain_and_ports.domain |
直接マッピングされます。 |
type |
feed_name |
マッピング済み: "ipv4","ipv4-addr", "scan_ip", "mal_ip" → STIX-IOC、`"phish_domain"、"domain"、"... |
src_ip |
ip_and_ports.ip_address |
直接マッピングされます。 |
value |
ip_and_ports.ip_address |
直接マッピングされます。 |
src_port |
ip_and_ports.ports |
統合済み |
type |
ip_and_ports.ports |
マッピング済み: "ipv4","ipv4-addr", "scan_ip", "mal_ip" → src_port、ipv4-addr → src_port |
created |
metadata.event_timestamp |
ISO8601 として解析済み |
modified |
metadata.event_timestamp |
ISO8601 として解析済み |
timestamp |
metadata.event_timestamp |
ISO8601 として解析済み |
valid_from |
metadata.event_timestamp |
ISO8601 として解析済み |
valid_until |
metadata.event_timestamp |
ISO8601 として解析 |
| なし | feed_name |
定数: STIX-IOC |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。