GitSync
GitSync は、Google Security Operations SOAR プロフェッショナル サービス チームによって構築された堅牢な統合であり、Google Security Operations SOAR コンポーネントを Git リポジトリと同期するように設計されています。git の内部オペレーションを使用してリポジトリ自体に直接書き込むため、ファイル ストレージ サービスとして機能します。次の処理を行うメソッドを提供します。
Google Security Operations SOAR インスタンス間でアセットを移行する
Google Security Operations SOAR アセットをバックアップする
自動ドキュメント
「ストア」を作成してアセット / ナレッジを共有する
バージョン管理
この統合は、複数の Google Security Operations SOAR ジョブで構成されています。サポートされているすべてのアセットの push ジョブと pull ジョブ、Google Security Operations SOAR インスタンス全体の push ジョブと pull ジョブです。これらのジョブは IDE から手動で実行するように構築されているため、定期的に実行する必要はありませんが、定期的なジョブ(毎日のコミットのアップロードなど)として使用できます。
GitSync は Google Security Operations SOAR API を使用して、統合やビジュアル ファミリーなどの関連アセットを取得し、そのアセットから利用可能なすべての情報を解析します(この情報は後で、通常閲覧時に表示される README.md ファイルにレンダリングされます)。次に、アセットの JSON 定義とレンダリングされた README をローカル リポジトリに書き込み、リモート リポジトリに push します。
GitSync のもう 1 つの用途は、ナレッジの共有です。この統合を使用すると、git リポジトリは、以前に設計されたハンドブックやオントロジー設定などのアセットの「ストア」として機能し、Google Security Operations SOAR のベスト プラクティスを活用してプラットフォームを最大限に活用できます。
前提条件
既存のリポジトリの push/pull:
Git への認証方法。サポートされているのは、ユーザー名とパスワードの組み合わせ(推奨されません)、アクセス トークン(推奨)、base64 エンコードされた SSH 秘密鍵(推奨)です。後者の 2 つを使用する場合、username パラメータは必要ありません。
ローカルの Google Security Operations SOAR ユーザー。アセットのインポートに使用されます。このユーザーには、ターゲット モジュールへの書き込み権限が必要です(たとえば、IDE にアクセスできないユーザーは統合を pull できません)。
新しいリポジトリを作成する
前の既存のリポジトリの push/pull で説明したすべてのポイント。
リモート リポジトリ。リポジトリに少なくとも 1 つのファイルを含めることをおすすめします。ほとんどの Git サービスでは、リポジトリの作成時に README ファイルを作成するオプションが用意されています。
インテグレーションを構成する
統合は共有インスタンスとして構成する必要があります。Google SecOps SOAR の既存の環境に接続することはできません。
統合のプロパティ
パラメータ名 | 説明 |
Repo URL | リポジトリの URLユーザー / パスワード認証を使用する場合、この値は https:// で始まる必要があります。SSH 認証を使用する場合、この値は git@ または ssh:// で始まる必要があります。(以下の Repo URL と Branch の構成をご覧ください)。 |
Branch | 同期するリポジトリのブランチ。 |
Git Password/Token/SSH Key | git への認証方法。この値は、Git パスワード / トークン / SSH 秘密鍵です。秘密鍵は base64 でエンコードする必要があります。RSA と Ed25519 がサポートされています。 |
Git Username | Git のユーザー名。SSH 認証を使用する場合、この値は必須ではありません。 |
Commit Author |
必須ではありません。commit の作成者を指定する機能を提供します。この値は、ユーザー名の形式にする必要があります。 |
Google Security Operations SOAR Verify SSL | Google Security Operations SOAR API に対して SSL を検証する |
Git Verify SSL | ターゲットの Git サービスで SSL を検証する |
Repo URL と Branch の構成
このガイドでは、Bitbucket で正しい値を取得する方法について説明します(GitHub でも同じプロセスです)。
Bitbucket でリポジトリを探します。
右上隅にある [Clone] ボタンをクリックします(GitHub の Code)。
ユーザー/パス認証またはトークン認証 - リポジトリの URL は https://bitbucket.org/siemplifyproserv/connectors.git です。(ユーザー名は無視できます)
現在のブランチ(下の画像の master)を確認します。
サンプル使用量
GitSync のすべてのジョブには、次のパラメータが含まれています。
Name | 説明 |
ジョブ固有 - コネクタ名、統合 ID、ハンドブックの許可リストなど | これらのパラメータは、リポジトリに push または pull するものを指定するためのものです。GitSync では、アセットは識別子で参照されます。この値では大文字と小文字が区別されます。 |
Repo URL と Branch | 同じ認証情報を持つ複数のリポジトリのサポートを追加します。これらのパラメータを設定すると、インテグレーション インスタンスで構成されたリポジトリは無視されます。 |
commit メッセージ | アセットをリポジトリに push するときには、commit に対するメッセージが必要です。ここでは、アセットに修正、変更、追加された内容を示すプッシュの理由を指定できます。 |
Readme Addon | プッシュ時にアセットのドキュメントを拡張する機能を追加します。この値では、次のものを使用できます。
テンプレートはドキュメントの末尾に追加され、リポジトリのルートにあるメタデータ ファイル GitSync.json に保存されます。 |
アセットの取得
この例では、正しいマッピングとビジュアル ファミリーを含むコネクタをプルします。
- まず、アセットが構成済みのリポジトリにあることを確認します。リポジトリ ディレクトリを参照して、アセット ID(通常はディレクトリ名または README ファイルのタイトル)をコピーするだけです。
Connectors ディレクトリの Bitbucket のリポジトリの例。ディレクトリは統合名であり、その内部にはコネクタの実際の ID があります。 Google Security Operations SOAR IDE で適切なジョブを見つけます。この例では、ジョブ Pull Connector を使用します。
注: コネクタをプルするときは、コネクタの統合もインストールされていることを確認してください。
[テスト] タブをクリックして、パラメータを設定します。1 つのリポジトリを使用しており、統合インスタンスですでに構成されているため、[Repo URL] パラメータと [Branch] パラメータは空のままにして、他のパラメータを必要な値に設定します。
ジョブを実行します。
オペレーションのログについては、デバッグ出力を参照してください。すべてがうまくいけば、ログにそのことが示されます。
- Google Security Operations SOAR -> [コネクタ] に移動して、コネクタを構成します。
アセットのプッシュ
この例では、プレイブックとブロックをリポジトリに push します。
プッシュするハンドブックを特定します。ここでは、Failed Login という新しいブロックと、Malicious Activity という更新されたハンドブックを push します。
Google Security Operations SOAR IDE で適切なジョブを見つけます。この例では、ジョブ Push Playbook を使用します。
[テスト] タブをクリックして、パラメータを構成します。
- 両方とも同じフォルダ(Default)にあるため、フォルダの許可リストを使用することもできます。
ジョブを実行します。
オペレーションのログについては、デバッグ出力を参照してください。すべてがうまくいけば、ログにそのことが示されます。
リポジトリに最新バージョンのプレイブックが含まれていることを確認します。
新しいリポジトリの作成
新しいリポジトリを作成する際に重要なのは、GitSync で構成する前に、リポジトリに 1 つのファイルを含めることです。リポジトリの作成時にリポジトリのルートに README ファイルを含めることで迅速に行うことができます。
Bitbucket

GitHub

既知の問題と制限事項
リポジトリが初めて設定されると、事前定義されたディレクトリ構造を使用して、各アセットの場所を把握します。カスタム commit やリポジトリの変更でディレクトリ構造に従わないと、統合が正しく機能しません。リポジトリのディレクトリ構造のスキーマは、このドキュメントの最後にあります。
この統合を公開リポジトリで使用する場合は注意してください。Google Security Operations SOAR アセットは、アプリケーション ID、クライアント ID、ユーザー名、その他の機密情報を保持するパラメータを使用します。GitSync はパラメータが機密情報かどうかを判断できないため、タイプが「Password」以外のすべてのパラメータがリポジトリにアップロードされます。また、Google Security Operations SOAR インスタンスを push(Push Environment ジョブ)するときに、パスワードを commit するオプションがあります。このオプションは、統合構成からすべてのパスワード パラメータを試してエクスポートするように GitSync に指示します。リポジトリが公開されている場合は、この値を true に設定しないでください。すべての認証情報がオンラインで漏洩します。
Google Security Operations SOAR インスタンスを pull(Pull Environm ジョブ)する場合、すべての統合のインストールに 5 分以上かかり、ジョブがタイムアウトで失敗します。問題を回避するために、Google Security Operations Marketplace からすべての商用インテグレーションを手動で事前にインストールすることをおすすめします。ただし、タイムアウトでジョブが失敗した場合は、ジョブを再実行することもできます。
商用統合とカスタム統合は異なる方法で処理されます。カスタム統合は、インポート/エクスポート オペレーションのため、統合の ZIP エクスポート全体として push されます。商用インテグレーションはカスタムコードのみでプッシュされます。プルされると、GitSync は Google SecOps Marketplace から統合の最新バージョンをインストールし、カスタムコードを公式の統合に保存します。
マッピングを pull する際、イベントはまだインデックスに登録されていないため、イベントが実際に Google Security Operations SOAR に取り込まれるまで、[Settings] -> [Ontology] -> [Ontology Status] テーブルには表示されません。
ローカル リポジトリは、/opt/siemplify/siemplify_server/GitSyncFiles/{RepoName} に保存されます。統合ではファイルではなく Git オブジェクトが書き込まれるため、このフォルダはリポジトリを表していません。ジョブが実行されるたびに、行われた変更で上書きされます。GitSync によって作成されたものではなく、リポジトリの別のクローンを使用することをおすすめします。
権限が制限されているプレイブック(デフォルトの権限が [表示可能] に設定されているなど)では、GitSync を介して同期を成功させるために、ソースシステムで特定の権限構成が必要です。詳細については、プレイブックの権限を操作するをご覧ください。
Google SecOps は、GitSync を使用した SOAR アセットのバックアップをサポートしています。ただし、Google SecOps は、GitSync を使用してシステム間で SOAR アセットを配布することをサポートしていません。データベース オブジェクトが一意でない可能性があるため、予期しない結果が生じる可能性があります。
ハンドブックの権限を操作する
GitSync を使用して、権限が制限されたプレイブック(デフォルトの権限が [閲覧可] に設定されている場合や、デフォルト以外の設定の場合など)を同期すると、プレイブックを変更する権限が宛先システムにない場合にエラーが発生することがあります。これは、GitSync が Administrator
SOC ロールを持つ内部システム API キーを使用してアクションを実行するためです。権限が制限されている Playbook の同期を成功させるには、これらの Playbook のソースシステムで Administrator
SOC ロールに [編集可能] 権限を付与します。
GitSync を有効にして、制限付きの権限でハンドブックを pull する
- ソースシステムで次の操作を行います。
- GitSync と同期するプレイブックに移動します。
- プレイブックの権限設定を開きます。
Administrator
SOC ロールが、編集可権限を持つエンティティのリストに追加されていることを確認します。
- ソースシステムの権限を調整したら、GitSync で [Push Playbook] アクションを実行して、ハンドブックとその権限で Git リポジトリを更新します。
- 移行先システムで、GitSync の Pull Playbook アクションを実行します。
GitSync で使用する SSH 認証鍵を作成する
まず、鍵ペアを生成します。パスフレーズの入力を求められたら、Enter キーを押します:
ssh-keygen -b 2048 -t rsa -f ./id_rsa
id_rsa(秘密鍵)と id_rsa.pub(公開鍵)の 2 つのファイルが作成されます。秘密鍵は安全な場所に保管してください。
リポジトリに公開鍵を設定します。たとえば、Bitbucket でリポジトリの設定を入力し、[Access Keys] をクリックします。[Add Key] をクリックし、id_rsa.pub の内容を Key パラメータに貼り付けます。
秘密鍵を統合構成に追加する前に、Base64 にエンコードする必要があります。
次のコマンドを使用してファイルをエンコードします。
- Linux:
cat id_rsa | base64 -w 0
- Windows:
id_rsa がある PowerShell を開き、次のコマンドを貼り付けます(1 行です)。
Write-Output [System.Text.Encoding]::ASCII.GetString([convert]::ToBase64String(([IO.File]::ReadAllBytes((Join-Path (pwd) 'id_rsa')))))
- Linux:
- 出力された値を統合プロパティ Passord/Token/SSH Key にコピーし、統合接続をテストします。
GitSync リポジトリのディレクトリ構造
リモート リポジトリの想定されるディレクトリ構造は次のとおりです。
* これは、サンプル リポジトリの tree コマンドの出力です。コメントは赤色で表示されます。


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