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 フィードとして公開します。

  1. Cortex XSOAR または XSIAM で、[Settings & Info] > [Settings] > [Integrations] > [Marketplace] から TAXII Server コンテンツ パックをインストールします。
  2. [設定] > [統合] > [インスタンス] に移動し、TAXII2 サーバーを検索して、[インスタンスを追加] をクリックします。
  3. 次の構成情報を指定します。
    • 名前: インスタンスの名前を入力します(SecOps-TAXII など)。
    • 長時間実行インスタンス: このオプションを有効にします。
    • TAXII2 Server version: [2.1] を選択します。
    • 認証情報: 取り込みスクリプトが HTTP Basic 認証に使用するユーザー名とパスワードを設定します。
  4. [コレクション 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"
        }
    }
    
  5. [保存して終了] をクリックして、インスタンスを有効にします。インスタンスのステータスが実行中と表示されていることを確認します。

  6. Google SecOps プレイグラウンドまたは統合のコマンドバーで、次のコマンドを実行して出力を保存します。

    !taxii-server-info
    !taxii-server-list-collections
    
  7. コマンド出力から、デプロイ ステップで使用する次の値を保存します。

    • Discovery URL: !taxii-server-info によって返される API ルート URL(例: https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/)。
    • コレクション名: SecOpsIOCs。
    • ユーザー名とパスワード: 設定した Basic 認証情報。

必要な Google Cloud API を有効にする

  1. 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 パスワードを読み取ります。

  1. 取り込み認証ファイルから Google SecOps 取り込みサービス アカウントのシークレットを作成します。

    gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.json
    
  2. TAXII パスワードの Secret を作成します。

    printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-
    
  3. 両方のリソース名を projects/PROJECT_ID/secrets/SECRET_NAME/versions/latest の形式で保存します。これらは .env.yml で使用します。

関数用のサービス アカウントを作成する

  1. Cloud Run functions のランタイム サービス アカウントを作成します。

    gcloud iam service-accounts create stix-taxii-sa \
        --display-name="STIX/TAXII ingestion function"
    
  2. 次の 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 ログタイプを使用して取り込みます。

  1. 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
    
  2. 次の内容のファイルを .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"
    
  3. 関数をデプロイします。

    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
    
  4. デプロイ出力から関数のトリガー URL(https://us-central1-PROJECT_ID.cloudfunctions.net/stix-taxii-ingestion など)を保存します。

Cloud Scheduler で関数のスケジュールを設定する

  1. 関数を呼び出す権限をサービス アカウントに付与します。

    gcloud functions add-invoker-policy-binding stix-taxii-ingestion \
        --region=us-central1 \
        --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com"
    
  2. 関数を 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"
    

デプロイを確認する

  1. 初回実行をトリガーします。

    gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1
    
  2. 関数のログを確認します。

    gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50
    
  3. Google 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 のプロフェッショナルから回答を得ることができます。