Armis Vulnerabilities のログを収集する

以下でサポートされています。

このドキュメントでは、Google Cloud Functions を使用して Armis Vulnerabilities ログを Google Security Operations に取り込む方法について説明します。パーサーは、未加工の JSON 形式のセキュリティ脆弱性ログを Google SecOps UDM に準拠した構造化形式に変換します。未加工ログからさまざまなフィールドを抽出し、対応する UDM フィールドにマッピングし、データ型の変換を行い、Google SecOps プラットフォームに取り込むための出力を構造化します。

始める前に

次の前提条件を満たしていることを確認してください。

  • 顧客 ID とサービス アカウントの認証情報を含む Google SecOps インスタンス
  • Armis Centrix プラットフォームへの特権アクセス
  • Armis API シークレット キーとサーバー URL
  • Cloud Functions、Secret Manager シークレット、Cloud Scheduler ジョブを作成する権限を持つ Google Cloud へのアクセス権
  • Armis Asset Vulnerability Management(AVM)ライセンスまたはモジュールへのアクセス

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Google SecOps サービス アカウントの認証情報を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイル(サービス アカウントの JSON ファイル)をダウンロードします。
  4. このファイルは Google Secret Manager にアップロードする必要があるため、安全に保存してください。

Armis API シークレット キーを取得する

  1. Armis Centrix プラットフォームにログインします。
  2. [設定> API 管理] に移動します。
  3. 新しい API シークレット キーを生成する必要がある場合は、[作成] をクリックします。
  4. [表示] をクリックして、シークレット キーを表示します。
  5. 秘密鍵をコピーして安全に保存します。

Google Secret Manager を構成する

このセクションでは、Google Secret Manager を使用して、統合に必要なサービス アカウント キーを安全に保存する方法について説明します。

Google SecOps サービス アカウントのシークレットを追加する

  1. Google Cloud コンソールにログインします。
  2. [セキュリティ] > [Secret Manager] に移動します。
  3. [シークレットの作成] をクリックします。
  4. 次の構成の詳細を入力します。
    • 名前: シークレットの名前を入力します(例: secops-service-account)。
    • シークレット値: 先ほどダウンロードした Google SecOps サービス アカウントの JSON ファイルをアップロードするか、その内容を直接貼り付けます。
  5. [シークレットの作成] をクリックします。
  6. 作成したシークレットのリソース ID を次の形式でコピーします。

    projects/{project_id}/secrets/{secret_id}/versions/{version_id}
    

Armis API シークレット キー シークレットを追加する

  1. [Secret Manager] で、[シークレットを作成] をクリックします。
  2. 次の構成の詳細を入力します。
    • 名前: シークレットの名前を入力します(例: armis-api-secret)。
    • シークレットの値: 先ほど取得した Armis API 秘密鍵を貼り付けます。
  3. [シークレットの作成] をクリックします。
  4. 作成したシークレットのリソース ID を次の形式でコピーします。

    projects/{project_id}/secrets/{secret_id}/versions/{version_id}`
    

取り込みスクリプトをダウンロードして準備する

  1. 公式の Google SecOps 取り込みスクリプト リポジトリ(https://github.com/chronicle/ingestion-scripts)にアクセスします。
  2. リポジトリから armis ディレクトリの内容をダウンロードします。
  3. リポジトリから common ディレクトリをダウンロードします(必須の依存関係)。
  4. ローカルマシンに Cloud Functions のデプロイ用の新しいディレクトリを作成します。
  5. armis ディレクトリと common ディレクトリの両方の内容をデプロイ ディレクトリにコピーします。

環境変数を構成する

  1. テキスト エディタで .env.yml ファイルを開きます。
  2. 次の構成でファイルを編集します。

    CHRONICLE_CUSTOMER_ID: <YOUR_CUSTOMER_ID>
    CHRONICLE_REGION: "us"
    CHRONICLE_SERVICE_ACCOUNT: projects/{project_id}/secrets/{chronicle-secret-id}/versions/{version_id}
    CHRONICLE_NAMESPACE: <YOUR_NAMESPACE>
    POLL_INTERVAL: "10"
    ARMIS_SERVER_URL: https://<your-armis-instance>.armis.com
    ARMIS_API_SECRET_KEY: projects/{project_id}/secrets/{armis-secret-id}/versions/{version_id}
    HTTPS_PROXY: 
    CHRONICLE_DATA_TYPE: ARMIS_VULNERABILITIES
    
    • 次の値を置き換えます。

      • <YOUR_CUSTOMER_ID>: Google SecOps のお客様 ID
      • projects/{project_id}/secrets/{chronicle-secret-id}/versions/{version_id}: Secret Manager の Google SecOps サービス アカウント シークレットの完全なリソース ID パス
      • <YOUR_NAMESPACE>: Google Security Operations ログの省略可能な Namespace(例: armis-vulnerabilities
      • <your-armis-instance>: Armis テナントのサブドメイン(たとえば、URL が https://company.armis.com の場合は company を使用します)
      • projects/{project_id}/secrets/{armis-secret-id}/versions/{version_id}: Secret Manager の Armis API シークレットの完全なリソース ID パス

Cloud Functions 関数のデプロイ

  1. Cloud Shell または gcloud CLI がインストールされているローカル ターミナルを開きます。
  2. 取り込みスクリプト ファイルを含むディレクトリに移動します。
  3. 次のコマンドを実行します。

    gcloud functions deploy armis-vulnerabilities-ingestion \
      --gen2 \
      --entry-point main \
      --trigger-http \
      --runtime python39 \
      --env-vars-file .env.yml \
      --memory 512MB \
      --timeout 3600s \
      --region us-central1
    

Cloud Functions 第 1 世代を使用してデプロイする(代替)

  • 次のコマンドを実行します。

    gcloud functions deploy armis-vulnerabilities-ingestion \
      --entry-point main \
      --trigger-http \
      --runtime python39 \
      --env-vars-file .env.yml \
      --memory 512MB \
      --timeout 540s \
      --region us-central1
    

Cloud Scheduler ジョブを作成する

  1. Google Cloud コンソールで、[Cloud Scheduler] に移動します。
  2. [ジョブを作成] をクリックします。
  3. 次の構成の詳細を入力します。
    • 名前: ジョブの名前を入力します(例: armis-vulnerabilities-scheduler)。
    • リージョン: Cloud Functions と同じリージョン(us-central1 など)を選択します。
    • 頻度: cron 構文を使用してスケジュールを入力します(例: 10 分ごとに実行するには */10 * * * *)。
    • タイムゾーン: 任意のタイムゾーン(UTC など)を選択します。
  4. [続行] をクリックします。
  5. ターゲット タイプとして [HTTP] を選択します。
  6. 次の構成の詳細を入力します。
    • URL: Cloud Functions コンソールで、関数の [トリガー] タブに移動し、トリガー URL をコピーします。ここに貼り付けます。
    • HTTP メソッド: [POST] を選択します。
  7. [Auth ヘッダー] > [OIDC トークンを追加] をクリックします。
  8. Cloud Functions の関数で使用されるサービス アカウントを選択します。
  9. [作成] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
affectedDevicesCount read_only_udm.security_result.detection_fields.value 直接マッピングされ、文字列に変換されます。
attackComplexity read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
attackVector read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
availabilityImpact read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
avmRating read_only_udm.security_result.detection_fields.value 直接マッピング。
ボットネット read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 複数のボットネットが存在する場合は、1 つの文字列に連結されます。
cisaDueDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
collection_time.nanos read_only_udm.metadata.event_timestamp.nanos 直接マッピング。
collection_time.seconds read_only_udm.metadata.event_timestamp.seconds 直接マッピング。
commonName read_only_udm.extensions.vulns.vulnerabilities.name 直接マッピング。
confidentialityImpact read_only_udm.security_result.detection_fields.value 直接マッピング。
cveUid read_only_udm.extensions.vulns.vulnerabilities.cve_id 直接マッピング。
cvssScore read_only_udm.extensions.vulns.vulnerabilities.cvss_base_score 直接マッピングされ、浮動小数点数に変換されます。
説明 read_only_udm.metadata.description 直接マッピング。
epssPercentile read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
epssScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
exploitabilityScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
firstReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.first_found タイムスタンプに解析され、ミリ秒を含む形式と含まない形式の両方を処理します。
firstWeaponizedReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
hasRansomware read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
id read_only_udm.metadata.product_log_id 直接マッピング。
impactScore read_only_udm.security_result.detection_fields.value 直接マッピングされ、文字列に変換されます。
integrityImpact read_only_udm.security_result.detection_fields.value 直接マッピング。
isWeaponized read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
latestExploitUpdate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
numOfExploits read_only_udm.security_result.detection_fields.value 直接マッピングされ、文字列に変換されます。
numberOfThreatActors read_only_udm.security_result.detection_fields.value 直接マッピングされ、文字列に変換されます。
orgPriorityManualChangeReason read_only_udm.security_result.detection_fields.value 直接マッピング。
orgPriorityManualChangedBy read_only_udm.principal.user.userid 直接マッピング。
orgPriorityManualUpdateTime read_only_udm.principal.labels.value 直接マッピング。
privilegesRequired read_only_udm.security_result.detection_fields.value 直接マッピング。
publishedDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
reportedByGoogleZeroDays read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピングされ、文字列に変換されます。
スコープ read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
重要度 read_only_udm.extensions.vulns.vulnerabilities.severity 値に基づいて CRITICAL、HIGH、MEDIUM、LOW にマッピングされます。元の値も severity_details にマッピングされます。
ステータス read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 直接マッピング。
threatTags read_only_udm.extensions.vulns.vulnerabilities.about.labels.value 複数の脅威タグが存在する場合は、1 つの文字列に連結されます。
userInteraction read_only_udm.about.labels.value 直接マッピング。
vulnerabilities_matches read_only_udm.metadata.url_back_to_product 直接マッピング。
read_only_udm.metadata.event_type 「GENERIC_EVENT」に設定します。
read_only_udm.metadata.product_name 「ARMIS」に設定します。
read_only_udm.metadata.vendor_name 「ARMIS」に設定します。
read_only_udm.metadata.log_type 「ARMIS_VULNERABILITIES」に設定します。
read_only_udm.extensions.vulns.vulnerabilities.severity_details 「severity」フィールドの値がこのフィールドにマッピングされます

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。