Google Cloud API
このドキュメントでは、Google Cloud API を Google Security Operations SOAR と構成して統合する際に役立つガイダンスを提供します。
統合バージョン: 4.0
API を Google SecOps SOAR と統合する Google Cloud
統合には次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Test URL |
任意 Google Cloud API への認証を検証するためのテスト URL。このパラメータは GET リクエストを使用します。 |
Service Account Json File Content |
任意 サービス アカウント キーの JSON ファイルの内容。 このパラメータ、 このパラメータを構成するには、サービス アカウントの作成時にダウンロードしたサービス アカウント キーの JSON ファイルの内容全体を指定します。 認証方法としてサービス アカウントを使用する方法については、サービス アカウントの概要とサービス アカウントの権限借用をご覧ください。 この統合では、サービス アカウント キーの JSON ファイルを使用した認証は、Workload Identity のメールアドレスよりも優先されます。 |
Organization ID |
任意 統合で使用する組織 ID。 アクションの実行中にこのパラメータから値を取得するには、プレースホルダ |
Project ID |
任意 統合で使用するプロジェクト ID。 アクションの実行中にこのパラメータから値を取得するには、プレースホルダ |
Quota Project ID |
任意 Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに 統合は、このパラメータ値をすべての API リクエストに付加します。 このパラメータに値を設定しない場合、インテグレーションは Google Cloud サービス アカウントからプロジェクト ID を取得します。 |
Workload Identity Email |
任意 サービス アカウントのクライアント メールアドレス。 このパラメータまたは この統合では、サービス アカウント キーの JSON ファイルによる認証が、Workload Identity のメールアドレスよりも優先されます。 Workload Identity でサービス アカウントの権限を借用するには、サービス アカウントに |
OAuth Scopes |
任意 Google Cloud API リクエストの実行に必要な OAuth スコープのカンマ区切りリスト。 |
Verify SSL |
必須 選択すると、統合によって Google Cloud サービスへの接続用の SSL 証明書が有効かどうかが検証されます。 デフォルトで選択されています。 |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの詳細については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、 デスクから保留中のアクションに対応すると手動アクションを実行するをご覧ください。
HTTP リクエストを実行する
[Execute HTTP Request] アクションを使用して、ターゲット URL に対してカスタマイズされた HTTP API リクエストを構築して実行します。
このアクションは Google SecOps エンティティに対して実行されません。
アクションの動作
このアクションは、非同期ポーリング、動的ペイロードの構築、ファイル管理などの複雑な動作をサポートします。
非同期ポーリング
Expected Response Values が指定されている場合、アクションは非同期モードで動作します。このモードでは、アクションはターゲット エンドポイントを繰り返しポーリングして、レスポンスの状態を追跡します(長時間実行タスクが完了するのを待つなど)。
このアクションは、パラメータで指定された JSON 条件に対してレスポンスの本文を評価し、条件が満たされるか、アクションがタイムアウトに達するまで実行を続けます。
条件ロジック
このアクションは、レスポンスの状態を追跡するための次のロジックをサポートしています。
単一フィールドの一致: 特定のフィールドが単一の値に達するまでアクションが待機します。
{ "state": "finished" }複数の値(OR 論理): 指定されたリスト内のいずれかの値とフィールドが一致した場合、アクションの実行が停止します。これは、不要なポーリングを避けるために、「成功」と「エラー」の両方の状態で停止する場合に便利です。
{ "state": ["finished", "error"] }複数のフィールド(AND 論理): 指定されたすべてのフィールドがそれぞれの値と同時に一致するまで、アクションは待機します。
{ "state": "finished", "percentage": "100" }組み合わせたロジック: JSON オブジェクト内で複数の条件を組み合わせることができます。
{ "state": ["finished", "error"], "percentage": "10" }
JSON 解析の動作
条件を評価する際、アクションは次のルールに従います。
グローバル検索: アクションは、JSON レスポンス オブジェクト全体で指定されたキーを検索します。親オブジェクト名を付加したり、接頭辞を使用したりせずに、JSON に表示されるとおりにキー名を指定します(たとえば、
"data_state"や"data-state"ではなく"state"を使用します)。同じキーが複数ある: レスポンスに同じ名前のキーが JSON 階層の異なるレベルで複数含まれている場合、一致するすべてのキー名が同じ期待値を満たしている場合にのみ、期待される出力が得られます。
たとえば、JSON レスポンスで
finished状態を検索し、他の状態を無視するには、Expected Response Valuesのすべてのstateキーをfinishedに設定します。{ "data": { "state": "finished" }, "state": "finished" }
本文ペイロードの作成
このアクションは、Headers で指定された Content-Type ヘッダーに基づいてリクエスト本文を作成します。
これは、次の構築例で使用される Body Payload 入力です。
{
"Id": "123123",
"sorting": "asc"
}
application/x-www-form-urlencoded: アクションはペイロードをId=123123&sorting=ascとして生成します。application/json: このアクションは、次の JSON ペイロードを生成します。{ "Id": "123123", "sorting": "asc" }XML: サードパーティ製品で XML が必要な場合は、Body Payloadで XML 形式の入力を直接指定します。<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="[http://schemas.xmlsoap.org/soap/envelope/](http://schemas.xmlsoap.org/soap/envelope/)"> <soap:Body> <NumberToWords xmlns="[http://www.dataaccess.com/webservicesserver/](http://www.dataaccess.com/webservicesserver/)"> <ubiNum>500</ubiNum> </NumberToWords> </soap:Body> </soap:Envelope>
ファイル処理
このアクションは、次のファイル管理ワークフローをサポートしています。
ファイルをダウンロードする:
ファイルデータを base64 形式の JSON 結果の一部として返すには、
Base64 Outputを選択します。ファイルを ZIP アーカイブとしてケースウォールに直接保存するには、
Save To Case Wallを選択します。
ファイルのアップロード: ファイルをアップロードするには、ファイルを base64 エンコード文字列に変換し、
Body Payload値の一部として含めます。次の例は、base64 でエンコードされた文字列に変換された画像ファイルを示しています。
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セキュリティ: 機密性の高いファイル(マルウェアなど)の場合は、
Password Protect Zipを選択します。これにより、Save To Case Wallを使用して作成された保存済み ZIP アーカイブが、パスワードinfectedで自動的に暗号化されます。
ハンドブック ブロックの構成
次の構成は、プレイブック ブロック内で Execute HTTP Request アクションを使用する方法を示しています。この例では、プレースホルダと入力接頭辞を適用する方法について説明します。
ブロック入力をプレースホルダとして使用する場合は、Input. 接頭辞([Input.comment] など)を含める必要があります。
Method:
PUTURL パス:
https://{API_URL}/[Input.table_name]/[Input.sys_id]ヘッダー:
{ "Content-type": "application/json; charset=utf-8", "Accept": "application/json", "User-Agent": "GoogleSecops" }本文のペイロード:
{ "work_notes": "[Input.comment]" }
アクション入力
[Execute HTTP Request] アクションには、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Method |
任意 リクエストで使用するメソッド。 デフォルト値は
|
URL Path |
任意 実行する URL。 デフォルト値は |
URL Params |
任意 URL パラメータ。 このアクションでは、URL パス パラメータで直接指定した値とともに指定された値が使用されます。 このパラメータには、入力として JSON オブジェクト形式が必要です。デフォルト値は次のとおりです。 {
"URL Field Name": "URL_FIELD_VALUE"
} |
Headers |
任意 HTTP リクエストで使用するヘッダー。 このパラメータには、入力として JSON オブジェクト形式が必要です。デフォルト値は次のとおりです。 {
"Content-Type": "application/json; charset=utf-8",
"Accept": "application/json",
"User-Agent" : "GoogleSecOps"
} |
Cookie |
任意
このパラメータは、Headers パラメータで指定された Cookie を上書きします。 このパラメータには、入力として JSON オブジェクト形式が必要です。デフォルト値は次のとおりです。 {
"Cookie_1": "COOKIE_1_VALUE"
} |
|
省略可
HTTP リクエストの本文。このアクションは、 このパラメータでは、サードパーティ製品で XML または デフォルト値は次のとおりです。 {
"Body Field Name": "BODY_FIELD_VALUE"
} |
Expected Response Values |
省略可。 レスポンス本文の必要な状態を定義するフィールドと値のペアを含む JSON オブジェクト。 |
Save To Case Wall |
任意 選択すると、ファイルが保存され、保存されたファイルがケースウォールに添付されます。ファイルは デフォルトでは選択されていません。 |
Password Protect Zip |
任意 選択すると、アクションは このパラメータは、疑わしいファイルを操作するときに使用します。 デフォルトで選択されています。 |
Follow Redirects |
任意 選択すると、アクションはリダイレクトに従います。 デフォルトで選択されています。 |
Fail on 4xx/5xx |
任意 選択した場合、レスポンスのステータス コードが 4xx または 5xx エラーの場合、アクションは失敗します。 デフォルトで選択されています。 |
Base64 Output |
任意 選択すると、アクションはレスポンスを base64 形式に変換します。 このパラメータは、ファイルをダウンロードするときに使用します。 JSON 結果は 15 MB を超えることはできません。 デフォルトでは選択されていません。 |
Fields To Return |
必須 返すフィールド。使用できる値は次のとおりです。
|
Request Timeout |
必須 アクションが失敗する前にサーバーがデータを送信するのを待機する期間。 デフォルト値は 120 秒です。 |
アクションの出力
[HTTP リクエストを実行] アクションは、次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用可能 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、[Execute HTTP Request] アクションを使用した場合に受信される JSON 結果の出力を示しています。
{
"response_data": {
"data": {
"relationships": {
"comment": [
{
"name": "item",
"description": "Object to which the comment belongs to."
},
{
"name": "author",
"description": "User who wrote the comment."
}
]
}
}
},
"redirects": [],
"response_code": 200,
"cookies": {},
"response_headers": {
"Content-Type": "application/json",
"X-Cloud-Trace-Context": "VALUE",
"Date": "Fri, 03 Nov 2023 16:14:13 GMT",
"Server": "Google Frontend",
"Content-Length": "36084"
},
"apparent_encoding": "ascii"
}
出力メッセージ
[Execute HTTP Request] アクションでは、次の出力メッセージが表示されます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
Failed to execute API request. Error:
ERROR_REASON |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、Execute HTTP Request アクションを使用する場合のスクリプト結果の出力値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
True または False |
Ping
Ping アクションを使用して、 Google Cloudへの接続をテストします。
このアクションは Google SecOps エンティティに対して実行されません。
アクション入力
なし。
アクションの出力
Ping アクションは次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用可能 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
次の例は、Ping アクションを使用した場合に受信する JSON 結果の出力を示しています。
{
"endpoint": "TEST_URL"
}
出力メッセージ
Ping アクションでは、次の出力メッセージが表示されます。
| 出力メッセージ | メッセージの説明 |
|---|---|
Successfully tested connectivity. |
アクションが成功しました。 |
Failed to test connectivity. |
操作に失敗しました。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、Ping アクションを使用する場合のスクリプト結果出力の値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
True または False |
ご不明な点がございましたら、コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。