Pub/Sub を Google SecOps と統合する
このドキュメントでは、Pub/Sub を Google Security Operations(Google SecOps)と統合する方法について説明します。
統合バージョン: 1.0
始める前に
Pub/Sub 統合を使用するには、次のものが必要です。
Google Cloud サービス アカウント - 既存のサービス アカウントを使用するか、新しいサービス アカウントを作成できます。
サービス アカウントの作成については、サービス アカウントを作成するをご覧ください。
サービス アカウントを使用して Google Cloudに対する認証を行う場合は、JSON でサービス アカウント キーを作成し、統合パラメータを構成するときに、ダウンロードした JSON ファイルのコンテンツを指定できます。
注: セキュリティ上の理由から、サービス アカウント キーではなく、ワークロード ID のメールアドレスを使用することをおすすめします。ワークロード ID の詳細については、ワークロードの ID をご覧ください。
プリンシパルの IAM ロールを構成します。
Pub/Sub は、アクセス制御に Identity and Access Management(IAM)を使用します。プリンシパルに
Pub/Sub Viewerロールを付与する必要があります。
統合のパラメータ
Pub/Sub の統合には、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Workload Identity Email |
Optional Workload Identity 連携のクライアント メールアドレス。 このパラメータまたは Workload Identity 連携を使用してサービス アカウントの権限を借用するには、サービス アカウントに |
Service Account JSON File Content |
Optional サービス アカウント キーの JSON ファイルの内容。 このパラメータまたは このパラメータを構成するには、サービス アカウントの作成時にダウンロードしたサービス アカウント キーの JSON ファイルの内容全体を指定します。 認証方法としてサービス アカウントを使用する方法については、サービス アカウントの概要をご覧ください。 |
Quota Project ID |
Optional Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに 統合は、このパラメータ値をすべての API リクエストに付加します。 このパラメータの値を設定しない場合、統合は Google Cloud サービス アカウントから割り当てプロジェクト ID を取得します。 |
Project ID |
Optional 統合で使用するプロジェクト ID。 このパラメータの値を設定しない場合、統合は Google Cloud サービス アカウントからプロジェクト ID を取得します。 |
Verify SSL |
必須 選択すると、統合によって Pub/Sub への接続用の SSL 証明書が有効かどうかが検証されます。 デフォルトで選択されています。 |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、Your Workdesk から保留中のアクションに対応すると手動アクションを実行するをご覧ください。
Ping
Ping アクションを使用して、Pub/Sub への接続をテストします。
このアクションは Google SecOps エンティティに対しては実行されません。
アクション入力
なし
アクションの出力
[Ping] アクションでは、次の出力が提供されます。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用不可 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
出力メッセージ
Ping アクションは、次の出力メッセージを返すことができます。
| 出力メッセージ | メッセージの説明 |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
アクションが成功しました。 |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、Ping アクションを使用した場合のスクリプト結果出力の値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
True または False |
コネクタ
Google SecOps でコネクタを構成する手順については、データを取り込む(コネクタ)をご覧ください。
Pub/Sub - Messages コネクタ
Google SecOps プラットフォームでは、Pub/Sub - メッセージ コネクタは PubSub - メッセージ コネクタと呼ばれます。
Pub/Sub - メッセージ コネクタを使用して、Pub/Sub からメッセージを取得します。
JSON の重大度のマッピング
アラートの重大度をマッピングするには、Pub/Sub - メッセージ コネクタが Severity Mapping JSON パラメータの重大度の値を取得するために使用するフィールドを指定する必要があります。コネクタ レスポンスには、integer、float、string などの値の型を含めることができます。
Pub/Sub - メッセージ コネクタは、integer と float の値を読み取り、Google SecOps の設定に従ってマッピングします。次の表に、integer 値と Google SecOps の重大度のマッピングを示します。
| 整数値 | マッピングされた重大度 |
|---|---|
100 |
Critical |
80~100 |
High |
60~80 |
Medium |
40~60 |
Low |
40未満 |
Informational |
レスポンスに string 値が含まれている場合、Pub/Sub - メッセージ コネクタには追加の構成が必要です。
最初は、デフォルト値は次のように表示されます。
{
"Default": 60
}
マッピングに必要な値が event_severity JSON キーにある場合、値は次のようになります。
"Malicious""Benign""Unknown"
event_severity JSON キー値を解析し、JSON オブジェクトの形式が正しいことを確認するには、Severity Mapping JSON パラメータを次のように構成します。
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
"Default" の値が必要です。
同じ JSON オブジェクトに複数の一致がある場合、Pub/Sub - メッセージ コネクタは最初の JSON オブジェクト キーを優先します。
integer または float の値を含むフィールドを操作するには、Severity Mapping JSON パラメータでキーと空の文字列を構成します。
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
コネクタの入力
Pub/Sub - メッセージ コネクタには、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Product Field Name |
必須 商品名が保存されるフィールドの名前。 デフォルト値は |
Event Field Name |
必須 イベント名(サブタイプ)を特定するために使用されるフィールド名。 デフォルト値は |
Environment Field Name |
省略可 環境名が保存されるフィールドの名前。 環境フィールドが見つからない場合、環境はデフォルトの環境に設定されます。 デフォルト値は |
Environment Regex Pattern |
省略可
デフォルト値 正規表現パターンが null か空の場合、または環境値が null の場合、最終的な環境の結果はデフォルト環境になります。 |
Script Timeout (Seconds) |
必須 現在のスクリプトを実行している Python プロセスのタイムアウト上限(秒単位)。 デフォルト値は |
Service Account JSON File Content |
Optional サービス アカウント キーの JSON ファイルの内容。 このパラメータまたは このパラメータを構成するには、サービス アカウントの作成時にダウンロードしたサービス アカウント キーの JSON ファイルの内容全体を指定します。 Pub/Sub - メッセージ コネクタの場合、サービス アカウント キーの JSON ファイルを使用した認証は、Workload Identity 連携よりも優先されます。 |
Workload Identity Email |
Optional サービス アカウントのクライアント メールアドレス。 このパラメータまたは Workload Identity 連携を使用してサービス アカウントの権限を借用するには、サービス アカウントに |
Project ID |
Optional コネクタで使用するプロジェクト ID。 |
Quota Project ID |
Optional Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに 統合は、このパラメータ値をすべての API リクエストに付加します。 |
Subscription ID |
必須 Pub/Sub サブスクリプション ID。 |
Case Name Template |
Optional カスタム ケース名。 このパラメータを構成すると、コネクタは プレースホルダは 例: プレースホルダの場合、コネクタは最初の Google SecOps イベントを使用します。コネクタは、文字列値を含むキーのみを処理します。このパラメータを構成するには、接頭辞なしでイベント フィールドを指定します。 |
Alert Name Template |
必須 カスタム アラート名。 プレースホルダは 例: プレースホルダの場合、コネクタは最初の Google SecOps イベントを使用します。コネクタは、文字列値を含むキーのみを処理します。値を指定しない場合や、無効なテンプレートを使用した場合、コネクタは |
Rule Generator Template |
必須 カスタムルール生成ツール。 プレースホルダは 例: プレースホルダの場合、コネクタは最初の Google SecOps イベントを使用します。コネクタは、文字列値を含むキーのみを処理します。値を指定しない場合や、無効なテンプレートを使用した場合、コネクタは |
Timestamp Field |
必須 Google SecOps アラートのタイムスタンプを定義するフィールドの名前。 タイムスタンプで Unix エポック時刻形式が使用されていない場合は、 デフォルト値は |
Timestamp Format |
Optional メッセージのタイムスタンプの形式。 コネクタは、メッセージを正しく処理するためにタイムスタンプを必要とします。タイムスタンプが Unix エポック時刻形式を使用しておらず、タイムスタンプ形式を構成していない場合、コネクタは失敗します。 デフォルト値は |
Severity Mapping JSON |
必須 コネクタがメッセージから重大度レベルを抽出する方法を定義する JSON オブジェクト。 デフォルト値は次のとおりです。 { "Default": "60" } 重大度のマッピングの詳細については、JSON 重大度のマッピングをご覧ください。 |
Unique ID Field |
Optional メッセージが一意であることを確認するフィールドの名前。 値を設定しない場合、コネクタは SHA-256 ハッシュを生成し、メッセージの識別子として使用します。 |
Max Messages To Fetch |
Optional コネクタの反復処理ごとに処理するメッセージの最大数。 最大数は 100 です。 |
Disable Overflow |
Optional 選択すると、アラートの作成時に Google SecOps のオーバーフロー メカニズムが無視されます。 デフォルトで選択されています。 |
Verify SSL |
必須 選択すると、統合によって Pub/Sub への接続用の SSL 証明書が有効かどうかが検証されます。 デフォルトで選択されています。 |
Proxy Server Address |
Optional 使用するプロキシ サーバーのアドレス。 |
Proxy Username |
Optional 認証に使用するプロキシのユーザー名。 |
Proxy Password |
Optional 認証に使用するプロキシ パスワード。 |
コネクタルール
Pub/Sub - メッセージ コネクタはプロキシをサポートしています。
コネクタ イベント
次の例は、Pub/Sub - メッセージ コネクタが生成する Google SecOps イベントの JSON 出力を示しています。
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。