ChromeOS XDR ログを収集する

パーサーのバージョン: 4.0

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

このドキュメントでは、 Google Cloud Pub/Sub を使用して ChromeOS XDR ログを Google Security Operations に取り込む方法について説明します。

ChromeOS XDR は、管理対象の ChromeOS デバイスからオペレーティング システム レベルのセキュリティ テレメトリーを、お客様が所有する Google Cloud Pub/Sub トピックに転送します。このテレメトリーには、ログインとログアウトのアクティビティ、デバイスの起動状態、プロセスの実行、ネットワーク フロー、機密ファイルの変更などが含まれます。Google 管理コンソールで ChromeOS XDR プロバイダの構成を Pub/Sub トピックに指定すると、Pub/Sub push サブスクリプションによってイベントが Google SecOps フィード エンドポイントに配信されます。

始める前に

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

  • Google SecOps インスタンス。
  • Google SecOps インスタンスにバインドされた Google Cloud プロジェクト。Pub/Sub トピックと push サブスクリプションは、このプロジェクトに存在する必要があります。
  • その Google Cloud プロジェクトの Identity and Access Management(IAM)と Pub/Sub への特権アクセス。
  • 特権管理者権限を持つ Google Workspace 管理者アカウント。
  • Google Workspace 組織に登録されている管理対象の ChromeOS デバイス。
  • テレメトリーを収集する ChromeOS デバイスを含む組織部門(OU)をターゲットにする
  • Google 管理コンソールで Google Cloud Pub/Sub XDR プロバイダの設定にアクセスできる。

Google Cloud プロジェクトを Google SecOps インスタンスにバインドする

Pub/Sub Push フィードを作成する前に、トピックをホストする Google Cloud プロジェクトを Google SecOps インスタンスにバインドします。このバインディングにより、push サブスクリプションはサービス アカウントで認証できるようになります。

プロジェクトがすでにバインドされているかどうかを確認する

  1. Google SecOps インスタンスで、[設定] > [管理] > [Google Cloud Platform] に移動します。
  2. Google Cloud プロジェクトがリストされているかどうかを確認します。
  3. 表示されている場合、プロジェクトはすでにバインドされています。次のセクションに進みます。

プロジェクトをバインドする

  1. [Settings] > [Administration] > [Google Cloud Platform] に移動します。
  2. [プロジェクトを追加] をクリックします。
  3. [プロジェクト ID] フィールドに、 Google Cloud プロジェクト ID を入力します。
  4. [追加] をクリックします。
  5. バインドが完了するまで待ち、ページを更新して、プロジェクトのステータスが [有効] になっていることを確認します。

Chronicle API が有効になっていることを確認する

  1. Google Cloud コンソールの [API とサービス] ライブラリに移動します。
  2. バインドされたプロジェクトを選択します。
  3. 検索ボックスに「Chronicle」と入力します。
  4. [Chronicle API] をクリックします。
  5. この API が有効になっていない場合は、[有効にする] をクリックします。

Pub/Sub トピックを作成する

ChromeOS XDR イベントを受信するトピックを作成します。トピックはユーザーに属し、後で Google 管理コンソールに入力する値です。

Google Cloud コンソールの使用

  1. Pub/Sub トピックに移動します。
  2. バインドされたプロジェクトを選択します。
  3. [トピックを作成] をクリックします。
  4. 次の構成情報を指定します。
    • トピック ID: わかりやすい名前(例: chromeos-xdr-secops)を入力します。
    • デフォルトのサブスクリプションを追加する: このチェックボックスをオフにします。
  5. [作成] をクリックします。
  6. トピックのフルパスをコピーします。形式は次のとおりです。

    projects/<PROJECT_ID>/topics/<TOPIC_ID>
    

gcloud コマンドライン ツールの使用

  • 次のコマンドを使用します。

    gcloud pubsub topics create chromeos-xdr-secops \
            --project=<PROJECT_ID>
    
    • <PROJECT_ID> は、バインドされた Google Cloud プロジェクトの ID に置き換えます。

ChromeOS XDR パブリッシャーに公開アクセス権を付与する

ChromeOS XDR は、Google が管理するサービス アカウントを使用してイベントを公開します。このサービス アカウントは、アクセス権を付与するまでトピックにアクセスできません。また、アクセス権を付与するまで、Google 管理コンソールの [接続をテスト] チェックは失敗します。

Google Cloud コンソールの使用

  1. Pub/Sub トピックに移動します。
  2. 作成したトピックをクリックします。
  3. [権限] タブを開き、[プリンシパルを追加] をクリックします。
  4. 次の構成情報を指定します。
    • 新しいプリンシパル: 「cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com」と入力します。
    • ロール: [Pub/Sub] > [Pub/Sub パブリッシャー] を選択します。
  5. [保存] をクリックします。

gcloud コマンドライン ツールの使用

  • 次のコマンドを使用します。

    gcloud pubsub topics add-iam-policy-binding chromeos-xdr-secops \
            --member="serviceAccount:cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com" \
            --role="roles/pubsub.publisher" \
            --project=<PROJECT_ID>
    

Google SecOps で Pub/Sub push フィードを作成する

フィードを作成する

  1. Google SecOps で、[設定] > [データ マネジメント] > [フィード] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで、[単一のフィードを構成する] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: ChromeOS XDR events)。
  5. [Source type] として [Google Cloud Pub/Sub Push] を選択します。
  6. [ログタイプ] として [ChromeOS XDR] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。
    • Split delimiter: このフィールドは空のままにします。ChromeOS XDR は、Pub/Sub メッセージごとに 1 つのイベントをパブリッシュします。
    • Asset namespace: アセットの名前空間。
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。
  10. [Finalize] 画面でフィードの設定を確認し、[Submit] をクリックします。

push エンドポイントの URL を取得する

  1. フィードの詳細ページで、フィードのステータスが [アクティブ] で、[フィードを有効にする] の切り替えがオンになっていることを確認します。
  2. [エンドポイント情報] フィールドで、push エンドポイントの URL をコピーします。書式は次のとおりです。

    https://<REGION>-chronicle.googleapis.com/v1alpha/projects/<PROJECT_NUMBER>/locations/<REGION>/instances/<INSTANCE_ID>/feeds/<FEED_ID>:importPushLogs
    
  3. この URL を push サブスクリプション用に保存します。

Pub/Sub push のサービス アカウントを作成する

サービス アカウントを作成する

  1. Google Cloud コンソールの [サービス アカウント] ページに移動します。
  2. バインドされたプロジェクトを選択します。
  3. [+ サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: わかりやすい名前を入力します(例: chromeos-xdr-push)。
    • サービス アカウントの説明: 「Pub/Sub Push to Google SecOps for ChromeOS XDR」と入力します。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロール] フィールドを空のままにします。
  7. [続行] > [完了] をクリックします。
  8. サービス アカウントのメールアドレスをコピーします。書式は次のとおりです。

    chromeos-xdr-push@<PROJECT_ID>.iam.gserviceaccount.com
    

gcloud コマンドライン ツールの使用

  • 次のコマンドを使用します。

    gcloud iam service-accounts create chromeos-xdr-push \
            --display-name="ChromeOS XDR Push" \
            --description="Pub/Sub Push to Google SecOps for ChromeOS XDR" \
            --project=<PROJECT_ID>
    

サービス アカウントの権限

このサービス アカウントに追加の IAM ロールは必要ありません。先ほど構成したプロジェクト バインディングにより、サービス アカウント認証が有効になります。push サブスクリプションは、サービス アカウントの OIDC トークンを使用して Google SecOps フィード エンドポイントに対して認証を行います。このサービス アカウントは、push サブスクリプションで認証を有効にするときに選択します。

Pub/Sub push サブスクリプションを作成する

Google Cloud コンソールの使用

  1. Pub/Sub の [サブスクリプション] に移動します。
  2. [サブスクリプションを作成] をクリックします。
  3. 次の構成情報を提供してください。

    設定 値
    サブスクリプション ID わかりやすい名前を入力します(例: secops-chromeos-xdr)。
    Cloud Pub/Sub トピックを選択してください 作成したトピックを選択します。
    配送タイプ push
    エンドポイント URL フィードの詳細ページから push エンドポイントの URL を貼り付けます。
    認証を有効にする 選択中
    サービス アカウント 作成したサービス アカウントを選択します。
    対象 空白のままにする
    ペイロードのアンラッピングを有効にする 消去しました
    メタデータを書き込む 消去しました
    確認応答期限 600 秒
    有効期限 有効期限なし
  4. [作成] をクリックします。

gcloud コマンドライン ツールの使用

  • 次のコマンドを使用します。

    gcloud pubsub subscriptions create secops-chromeos-xdr \
            --topic=chromeos-xdr-secops \
            --push-endpoint=<PUSH_ENDPOINT_URL> \
            --push-auth-service-account=chromeos-xdr-push@<PROJECT_ID>.iam.gserviceaccount.com \
            --ack-deadline=600 \
            --expiration-period=never \
            --project=<PROJECT_ID>
    

    次のように置き換えます。

    • <PUSH_ENDPOINT_URL>: フィードの詳細ページに表示される push エンドポイントの URL
    • <PROJECT_ID>: バインドされた Google Cloud プロジェクトの ID

サブスクリプションが作成されたことを確認する

  • 次のコマンドを使用します。

    gcloud pubsub subscriptions describe secops-chromeos-xdr \
            --project=<PROJECT_ID>
    

    出力に次の内容が表示されていることを確認します。

    • pushConfig.pushEndpoint: フィード エンドポイントの URL
    • pushConfig.oidcToken.serviceAccountEmail: サービス アカウントのメールアドレス
    • ackDeadlineSeconds: 600

Google Cloud Pub/Sub XDR プロバイダ構成を追加する

管理対象の ChromeOS デバイスがテレメトリーをパブリッシュするように、ChromeOS XDR プロバイダの構成で Pub/Sub トピックを指定します。

  1. 特権管理者アカウントで Google 管理コンソールにログインします。

    特権管理者アカウントを使用していない場合は、この手順を完了できません。

  2. メニュー > [デバイス] > [Chrome] > [コネクタ] に移動します。

  3. (省略可)Chrome Enterprise Connectors の設定を初めて行う場合は、画面の指示に沿って Chrome Enterprise Connectors を有効にします。

  4. 画面上部の [+ 新しいプロバイダの設定] をクリックします。

  5. [Google Cloud Pub/Sub XDR] を見つけて、[設定] をクリックします。

    [Google Cloud Pub/Sub の XDR 設定] ダイアログが開きます。

  6. 次の構成の詳細を入力します。

    • 設定名: わかりやすい名前を入力します。例: ChromeOS XDR to Google SecOps
    • トピックのフルパス: 作成したトピックのフルパスを projects/<PROJECT_ID>/topics/<TOPIC_ID> の形式で入力します。
  7. [接続をテスト] をクリックし、設定の詳細を検証します。

    検証が失敗した場合は、次の点を確認します。

    • トピックのフルパスが正しく、バインドされた Google Cloud プロジェクトにトピックが存在する
    • cloud-pub-sub-publisher@chromeos-xdr.iam.gserviceaccount.com がそのトピックに対する Pub/Sub パブリッシャーのロールを保持している
    • プロジェクトで Pub/Sub API が有効になっている
  8. [この設定で受信が許可されているイベント] で [XDR イベント] を展開し、[XDR イベントを有効にする] を選択します。

  9. [設定を保存] をクリックします。

設定は組織全体に対して追加され、監視対象の ChromeOS デバイスで有効にするには、それらのデバイスを含む組織部門を選択し、設定の横にあるチェックボックスをオンにします。

ChromeOS XDR レポートを有効にする

デバイスの設定で ChromeOS XDR レポートを有効にすると、管理対象の ChromeOS デバイスからオペレーティング システム レベルのセキュリティ テレメトリーの収集が開始されます。

  1. Google 管理コンソールで、メニュー アイコン > [デバイス] > [Chrome] > [設定] > [デバイスの設定] に移動します。
  2. すべての ChromeOS デバイスに設定を適用する場合は、最上位の組織部門を選択したままにします。それ以外の場合は、テレメトリーを収集するデバイスを含む子組織部門を選択します。
  3. [ユーザーとデバイスのレポート] に移動します。
  4. [広範な検出と対応(XDR)イベントを報告する] の横にある [広範な検出と対応(XDR)イベントに関する情報を報告する] を選択します。
  5. [保存] をクリックします。

    組織部門の [オーバーライド] をクリックします。後で継承値を復元するには、[継承] をクリックします。

  6. テレメトリーを収集する ChromeOS デバイスが含まれる他の組織部門についても、この手順を繰り返します。

データフローを確認する

ChromeOS XDR ログが Google SecOps に取り込まれていることを確認するには:

  1. Google SecOps インスタンスを開きます。
  2. [メニュー] > [検索] に移動します。
  3. 次の検索クエリを実行して、ChromeOS XDR イベントを検索します。

    metadata.log_type = "CHROMEOS_XDR"
    
  4. 構成後、数分以内にイベントが表示されます。イベントが表示されない場合:

    • Google Cloud コンソールでトピックを開き、[指標] タブでパブリッシュされたメッセージを確認します。公開されたメッセージがない場合は、管理コンソール側で配信されていないことを意味します。
    • Google Cloud コンソールでサブスクリプションを開き、push リクエスト数とエラーの指標を確認します。push エラーは、エンドポイント URL、サービス アカウント、またはプロジェクト バインディングが間違っていることを意味します。
    • Google 管理コンソールで、適切な組織部門に対して ChromeOS XDR レポートが有効になっていることを確認します。
    • プロバイダの設定が、デバイスを含む組織部門に適用されていることを確認します。
    • 対象の ChromeOS デバイスが組織に登録され、管理されていることを確認します。
    • push サブスクリプションで [ペイロードのラップ解除を有効にする] と [メタデータを書き込む] がオフになっていることを確認します。

サポートされているログタイプ

ChromeOS XDR レポートは、次の ChromeOS デバイスのセキュリティ テレメトリーを Google SecOps に転送します。

イベント カテゴリ 説明
ログインとログアウト ChromeOS デバイスでのユーザーのログイン、ログアウト、認証要素のアクティビティ
デバイスのブート状態 デバイスの起動状態、ファームウェアのセキュアブート ステータス、カーネル バージョンのレポート
プロセスの実行 コマンドラインやイメージの詳細を含む、プロセスと親プロセスの実行
ネットワーク フロー ネットワーク接続(ローカルおよびリモートのエンドポイント、ポート、プロトコル、転送バイト数など)
機密ファイルの変更 機密ファイルの作成と変更(パスやハッシュの詳細など)

UDM マッピング テーブル

次の表に、ChromeOS XDR ログフィールドが Google SecOps 統合データモデル(UDM)フィールドにマッピングされる方法を示します。

ログフィールド UDM マッピング ロジック
application_protocol_label additional.fields 統合済み
attributesBefore_canonicalGid_label additional.fields 統合済み
attributesBefore_canonicalUid_label additional.fields 統合済み
attributesBefore_mode_label additional.fields 統合済み
authFactor_label additional.fields 統合済み
bindAddr_label additional.fields 統合済み
bindPort_label additional.fields 統合済み
communityIdV1_label additional.fields 統合済み
fileAfter_inodeDeviceId_label additional.fields 統合済み
fileAfter_inode_label additional.fields 統合済み
fileAfter_mntNs_label additional.fields 統合済み
fileAfter_mode_label additional.fields 統合済み
firmwareSecureBoot_label additional.fields 統合済み
image_canonicalGid_label additional.fields 統合済み
image_canonicalUid_label additional.fields 統合済み
image_mode_label additional.fields 統合済み
inodeDeviceId_label additional.fields 統合済み
inode_label additional.fields 統合済み
inode_process_label additional.fields 統合済み
linuxKernelVersion_label additional.fields 統合済み
local_timezone_label additional.fields 統合済み
metaFirstAppearance_label additional.fields 統合済み
modifyType_label additional.fields 統合済み
networkFlow_direction_label additional.fields 統合済み
process_image_canonicalGid_label additional.fields 統合済み
process_image_canonicalUid_label additional.fields 統合済み
process_image_mode_label additional.fields 統合済み
process_inodeDeviceId_label additional.fields 統合済み
process_metaFirstAppearance_label additional.fields 統合済み
process_relStartTimeS_label additional.fields 統合済み
rel_start_time_label additional.fields 統合済み
sensitiveFileType_label additional.fields 統合済み
socketType_label additional.fields 統合済み
spawnProcess_canonicalUid_label additional.fields 統合済み
spawnProcess_image_inodeDeviceId_label additional.fields 統合済み
spawnProcess_image_inode_label additional.fields 統合済み
spawnProcess_image_mode_label additional.fields 統合済み
spawnProcess_metaFirstAppearance_label additional.fields 統合済み
spawnProcess_relStartTimeS_label additional.fields 統合済み
has_principal metadata.event_type マッピング済み: true → NETWORK_CONNECTION、true → STATUS_UPDATE
has_user metadata.event_type マッピング済み: true → USER_UNCATEGORIZED
schemaVersion metadata.product_version 直接マッピングされます。
app_protocol_output network.application_protocol 直接マッピングされます。
ip_protocol_out network.ip_protocol 名前変更 / マッピング
networkFlow.rxBytes network.received_bytes 名前変更 / マッピング
networkFlow.txBytes network.sent_bytes 名前変更 / マッピング
deviceName principal.asset.asset_id 直接マッピングされます。
localIp principal.asset.ip 統合済み
sensitiveModify.attributesBefore.pathname principal.file.full_path 直接マッピングされます。
localIp principal.ip 統合済み
networkFlow.localIp principal.ip 統合済み
osVersion principal.platform_version 直接マッピングされます。
networkFlow.localPort principal.port 名前変更 / マッピング
spawnProcess.commandline principal.process.parent_process.command_line 直接マッピングされます。
spawnProcess.image.pathname principal.process.parent_process.file.full_path 直接マッピングされます。
spawnProcess.image.sha256 principal.process.parent_process.file.sha256 直接マッピングされます。
spawnProcess.canonicalPid principal.process.parent_process.pid 直接マッピングされます。
spawnProcess.processUuid principal.process.product_specific_process_id 直接マッピングされます。
devicePermanentId principal.resource.product_object_id 直接マッピングされます。
event_log security_result.summary 直接マッピングされます。
sensitiveModify.fileAfter.pathname target.file.full_path 直接マッピングされます。
sensitiveModify.fileAfter.sha256 target.file.sha256 直接マッピングされます。
networkFlow.remoteHostName target.hostname 直接マッピングされます。
networkFlow.remoteIp target.ip 統合済み
networkFlow.remotePort target.port 名前変更 / マッピング
process.image.pathname target.process.file.full_path 直接マッピングされます。
process.image.sha256 target.process.file.sha256 直接マッピングされます。
parentProcess.commandline target.process.parent_process.command_line 直接マッピングされます。
process.commandline target.process.parent_process.command_line 直接マッピングされます。
parentProcess.image.pathname target.process.parent_process.file.full_path 直接マッピングされます。
parentProcess.image.sha256 target.process.parent_process.file.sha256 直接マッピングされます。
parentProcess.canonicalPid target.process.parent_process.pid 直接マッピングされます。
parentProcess.processUuid target.process.parent_process.product_specific_process_id 直接マッピングされます。
process.canonicalPid target.process.pid 直接マッピングされます。
process.processUuid target.process.product_specific_process_id 直接マッピングされます。
deviceUser target.user.email_addresses 統合済み
なし metadata.event_type 定数: NETWORK_CONNECTION
なし metadata.product_name 定数: CHROMEOS XDR
なし metadata.vendor_name 定数: CHROMEOS XDR

変更ログ

このパーサーの変更ログを表示する

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