GitSync

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

GitSync は、Google SecOps プロフェッショナル サービス チームが構築した堅牢な統合機能で、Google SecOps コンポーネントを git リポジトリと同期するように設計されています。git の内部オペレーションを使用してリポジトリ自体に直接書き込むため、ファイル ストレージ サービスとして機能します。次の処理を行うメソッドを提供します。

  • Google SecOps インスタンス間でアセットを移行する

  • Google SecOps アセットをバックアップする

  • ドキュメントの自動生成

  • 「ストア」を作成してアセット / ナレッジを共有する

  • バージョン管理

ユースケース

この統合は、複数の Google SecOps ジョブで構成されています。サポートされているすべてのアセットの push ジョブと pull ジョブ、Google SecOps インスタンス全体の push ジョブと pull ジョブです。これらのジョブは IDE から手動で実行するように構築されているため、定期的に実行する必要はありませんが、定期的なジョブ(毎日のコミットのアップロードなど)として使用できます。

GitSync は Chronicle API を使用して、統合やビジュアル ファミリーなどの関連アセットを取得し、そのアセットから利用可能なすべての情報を解析します(この情報は後で、通常閲覧時に表示される README.md ファイルにレンダリングされます)。次に、アセットの JSON 定義とレンダリングされた README をローカル リポジトリに書き込み、リモート リポジトリに push します。

GitSync のもう 1 つの用途は、ナレッジの共有です。このインテグレーションを使用すると、git リポジトリは、以前に設計されたプレイブックやオントロジー設定などのアセットの「ストア」として機能し、Google SecOps のベスト プラクティスを活用してプラットフォームを最大限に活用できます。

セキュリティ アップデート: ホストのフィンガープリントの固定(GitSync V42.0)

GitSync V42.0 で、ホスト フィンガープリントの固定のサポートを追加することで、中間者(PITM)攻撃から保護するためのセキュリティ強化がリリースされました。この機能により、GitSync 統合が検証済みの Git サーバーにのみ接続されます。

知っておくべきことと必要な対応

Host Fingerprint フィールドは省略可能であり、既存のジョブは中断なく実行されます。ただし、統合のセキュリティを強化するために、この機能をすぐに構成することを強くおすすめします。

ホスト フィンガープリントは、Git サーバーの一意の ID です。この新機能は、接続時にこの一意のフィンガープリントを検証し、攻撃者がサーバーを偽装してデータを傍受するのを防ぎます。

ホストのフィンガープリント ピンニングを有効にする

ホストのフィンガープリントの固定を有効にするには、Git サーバーのフィンガープリントを取得して、統合構成に追加する必要があります。

  1. ホストのフィンガープリントを確認する: Git サーバーの公開鍵のフィンガープリントは、ドキュメントから取得するか、信頼できる方法で取得できます。ssh-keyscan コマンドを使用してフィンガープリントを取得するには、ターミナルで次のコマンドを実行します。

    ssh-keyscan -t rsa <hostname>
    

    たとえば、GitHub の場合は ssh-keyscan -t rsa github.com を実行します。出力には、次のようなホストのフィンガープリントが含まれます。 github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC...

  2. 統合にフィンガープリントを追加する: コピーしたフィンガープリントを GitSync 統合の構成設定の Host Fingerprint フィールドに追加します。

前提条件

既存のリポジトリの push/pull:

  • Git への認証方法。サポートされているのは、ユーザー名とパスワードの組み合わせ(推奨されません)、アクセス トークン(推奨)、base64 エンコードされた SSH 秘密鍵(推奨)です。後者の 2 つを使用する場合、username パラメータは必要ありません。

  • ローカルの Google SecOps ユーザー。アセットのインポートに使用されます。このユーザーには、ターゲット モジュールを書き込む権限が必要です(たとえば、IDE にアクセスできないユーザーは統合を 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 SecOps Verify SSL

Google SecOps API に対して SSL を検証する

Git Verify SSL

ターゲットの Git サービスで SSL を検証する

Repo URL と Branch の構成

このガイドでは、Bitbucket で正しい値を取得する方法について説明します(GitHub でも同じプロセスです)。


  1. Bitbucket でリポジトリを探します。

    gitsync1

  2. 右上隅にある [Clone] ボタンをクリックします(GitHub の Code)。

    • SSH 認証 - リポジトリの URL は git@bitbucket.org:siemplifyproserv/connectors.git です

      gitsync2

  3. ユーザー/パス認証またはトークン認証 - リポジトリの URL は https://bitbucket.org/siemplifyproserv/connectors.git です。(ユーザー名は無視できます)

    gitsync3

  4. 現在のブランチ(下の画像の master)を確認します。

    gitsync4

サンプル使用量

GitSync のすべてのジョブには、次のパラメータが含まれています。


Name

説明

ジョブ固有 - コネクタ名、統合 ID、ハンドブックの許可リストなど

これらのパラメータは、リポジトリに push または pull するものを指定するためのものです。GitSync では、アセットは識別子で参照されます。この値では大文字と小文字が区別されます。

Repo URL と Branch

同じ認証情報を持つ複数のリポジトリのサポートを追加します。これらのパラメータを設定すると、インテグレーション インスタンスで構成されたリポジトリは無視されます。

commit メッセージ

アセットをリポジトリに push するときには、commit に対するメッセージが必要です。ここでは、アセットの修正、変更、追加内容を示すプッシュの理由を指定できます。

Readme Addon

アセットのドキュメントをプッシュ時に拡張する機能を追加します。この値では、次のものを使用できます。

  • マークダウン構文 - GitHub や Bitbucket などの Git プロバイダによる README ファイルでサポートされる

  • Jinja - アセットに関する情報を表示します。統合マネージャーの定数の例を参照してください

テンプレートはドキュメントの末尾に追加され、リポジトリのルートにあるメタデータ ファイル GitSync.json に保存されます。


アセットの取得

この例では、正しいマッピングとビジュアル ファミリーを含むコネクタをプルします。

  1. まず、アセットが構成済みのリポジトリにあることを確認します。リポジトリ ディレクトリを参照して、アセット ID(通常はディレクトリ名または README ファイルのタイトル)をコピーするだけです。
    gitsync5

    Connectors ディレクトリの Bitbucket のリポジトリの例。ディレクトリは統合名であり、その内部にはコネクタの実際の ID があります。
  2. Google SecOps IDE で適切なジョブを見つけます。この例では、ジョブ Pull Connector を使用します。

    • 注: コネクタをプルするときは、コネクタの統合もインストールされていることを確認してください。

  3. [テスト] タブをクリックして、パラメータを設定します。1 つのリポジトリを使用しており、統合インスタンスですでに構成されているため、[Repo URL] パラメータと [Branch] パラメータは空のままにして、他のパラメータを必要な値に設定します。

  4. ジョブを実行します。

  5. オペレーションのログについては、デバッグ出力を参照してください。すべてが正常に動作すると、ログにその旨が示されます。

  6. Google SecOps -> [コネクタ] に移動して、コネクタを構成します。


アセットのプッシュ

この例では、プレイブックとブロックをリポジトリに push します。

  1. プッシュするハンドブックを特定します。ここでは、Failed Login という新しいブロックと、Malicious Activity という更新されたハンドブックを push します。

    gitsync7

  2. Google SecOps IDE で適切なジョブを見つけます。この例では、ジョブ Push Playbook を使用します。

  3. [テスト] タブをクリックして、パラメータを構成します。

  4. 両方とも同じフォルダ(Default)にあるため、フォルダの許可リストを使用することもできます。
  5. ジョブを実行します。

  6. オペレーションのログについては、デバッグ出力を参照してください。すべてが正常に完了すると、ログにその旨が示されます。

  7. リポジトリに最新バージョンのプレイブックが含まれていることを検証します。


新しいリポジトリの作成

新しいリポジトリを作成する際に重要なのは、GitSync で構成する前に、リポジトリに 1 つのファイルを含めることです。リポジトリの作成時にリポジトリのルートに README ファイルを含めることで迅速に行うことができます。
Bitbucket

gitsync8

GitHub

gitsync9

既知の問題と制限事項

  • リポジトリが初めて設定されると、事前定義されたディレクトリ構造を使用して、各アセットの場所を把握します。カスタム commit やリポジトリの変更でディレクトリ構造に従わないと、統合が正しく機能しません。リポジトリのディレクトリ構造のスキーマは、このドキュメントの最後にあります。

  • この統合を公開リポジトリで使用する場合は注意が必要です。Google SecOps アセットは、アプリケーション ID、クライアント ID、ユーザー名、その他の機密情報を保持するパラメータを使用します。GitSync はパラメータが機密情報かどうかを判断できないため、タイプが「Password」以外のすべてのパラメータがリポジトリにアップロードされます。また、Google SecOps インスタンスを push(Push Environment ジョブ)するときに、パスワードを commit するオプションがあります。このオプションは、統合構成からすべてのパスワード パラメータを試してエクスポートするように GitSync に指示します。リポジトリが公開されている場合は、この値を true に設定しないでください。すべての認証情報がオンラインで漏洩します。

  • Google SecOps インスタンスを pull(Pull Environm ジョブ)する場合、すべての統合のインストールに 5 分以上かかり、ジョブがタイムアウトで失敗します。問題を回避するために、Google Security Operations Marketplace からすべての商用インテグレーションを手動で事前にインストールすることをおすすめします。ただし、タイムアウトでジョブが失敗した場合は、ジョブを再実行することもできます。

  • 商用統合とカスタム統合は処理方法が異なります。カスタム統合は、インポート/エクスポート オペレーションのため、統合の ZIP エクスポート全体として push されます。商用インテグレーションはカスタムコードのみでプッシュされます。プルされると、GitSync は Google SecOps Marketplace から統合の最新バージョンをインストールし、カスタムコードを公式の統合に保存します。

  • マッピングを pull する際、イベントはまだインデックスに登録されていないため、イベントが実際に Google SecOps に取り込まれるまで、[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 する

  1. ソースシステムで次の操作を行います。
    1. GitSync と同期するプレイブックに移動します。
    2. プレイブックの権限設定を開きます。
    3. Administrator SOC ロールが、編集権限を持つエンティティのリストに追加されていることを確認します。
  2. ソースシステムの権限を調整したら、GitSync で [Push Playbook] アクションを実行して、Git リポジトリをハンドブックとその権限で更新します。
  3. 移行先システムで、GitSync の Pull Playbook アクションを実行します。

GitSync で使用する SSH 認証鍵を作成する

  1. まず、鍵ペアを生成します。パスフレーズの入力を求められたら、Enter キーを押します: ssh-keygen -b 2048 -t rsa -f ./id_rsa

    id_rsa(秘密鍵)と id_rsa.pub(公開鍵)の 2 つのファイルが作成されます。秘密鍵は安全な場所に保管してください。

  2. リポジトリに公開鍵を設定します。たとえば、Bitbucket でリポジトリの設定を入力し、[Access Keys] をクリックします。[Add Key] をクリックし、id_rsa.pub の内容を Key パラメータに貼り付けます。

  3. 秘密鍵を統合構成に追加する前に、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')))))
  4. 出力された値を統合プロパティ Passord/Token/SSH Key にコピーし、統合接続をテストします。

GitSync リポジトリのディレクトリ構造

リモート リポジトリの想定されるディレクトリ構造は次のとおりです。

* これは、サンプル リポジトリの tree コマンドの出力です。コメントは赤色で表示されます。


gitsync10

gitsync11

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