カスタム統合を構築する
このドキュメントでは、Google SecOps のカスタム統合を構築するためのワークフローについて説明します。現在のベスト プラクティスは、お好みの IDE を使用してローカルで統合を開発し、最新の GitOps ワークフローを使用して GitHub 経由で管理することです。以前の環境やクイック プロトタイプの場合は、組み込みの SOAR IDE 内で直接統合を構築することもできます。
ローカル IDE と GitHub ワークフロー(推奨)
ローカルで統合を開発し、GitHub を介して管理することをおすすめします。このアプローチは最新の GitOps プラクティスに沿っており、バージョン管理、コラボレーション、依存関係の自動管理を改善できます。
コンセプト ワークフローの概要
カスタム統合をローカルで開発する場合は、この GitOps ライフサイクルに従うことをおすすめします。これらのコマンドの正確な最新の構文については、GitHub の公式 MP CLI ドキュメントをご覧ください。
- フォークとクローン: 公式の
content-hubリポジトリをローカルの開発マシンにクローンします。 - ツールをインストールする:
mpCLI ツールとuvPython パッケージ マネージャーをインストールします。 - 認証: インスタンス URL と API キーを使用して、MP CLI 経由で Google SecOps 環境にログインします。
- ローカルで開発する: お好みの IDE(VS Code や PyCharm など)を使用して統合コードを記述し、ローカルのデバッグツールとテストツールを活用します。
- 依存関係を管理する:
uvを使用して、ローカルのpyproject.tomlファイルで依存関係(TIPCommonなど)を宣言して管理します。 - 同期:
mp pullコマンドとmp pushコマンドを使用して、テストとデプロイのためにローカルコードを Google SecOps インスタンスと同期します。
代替方法: 組み込み IDE でカスタム統合を作成する
以前の統合を維持している場合、スクリプトを迅速にテストしている場合、またはローカル開発が制限されている環境で作業している場合は、組み込みの IDE を使用できます。
ユースケース: カスタム Armis 統合を構築する
IDE でカスタム統合を作成する手順は次のとおりです。
- メインメニューで、[レスポンス] > [IDE] に移動します。
- [Create New Item] をクリックし、[Integration] を選択します。
- 名前を入力して [Create] をクリックします。
統合が 設定 設定 オプションとともに表示され、カスタム統合であることが示されます。
設定 [設定] をクリックして、アイコン、説明、Python 依存関係、統合パラメータを定義できる統合設定を表示します。
カスタム マネージャーを作成する
マネージャーは、サードパーティ製ツール API のラッパーです。必須ではありませんが、外部ツールとやり取りする統合には、これらを使用することをおすすめします。マネージャーは SDK からインポートしないでください。作成後、コネクタ、アクション、ジョブにインポートします。
カスタム マネージャーを作成する手順は次のとおりです。
- IDE で、 [Create New Item] をクリックし、[Manager] を選択します。
- [Armis] 統合を選択し、マネージャーの名前を入力します。
- 次のスクリプトを編集して実行します。
import requests
class ArmisManager:
def init(self, api_root, api_token):
self.api_root = api_root
self.api_token = api_token
self.session = requests.session()
self.session.headers = {"Accept": "application/json"}
def auth(self):
endpoint = "{}/api/vi/access_token/*"
params = {"secret_key" : self.api_token}
response = self.session.post(endpoint.format(self.api_root), params=params)
self.validate_response(response)
access_token = response.json()["data"]["access_token"]
self.session.headers.update({"Authorization": access_token})
return True
def get_device_by_ip(self, device_ip):
endpoint = "{}/api/vi/devices/"
params = {"ip": device_ip}
response = self.session.get(endpoint.format(self.api_root), params=params)
self.validate_response(response)
return response.json()["data"]["data"]
@staticmethod
def validate_response(res, error_msg="An error occurred"):
"""Validate a response
:param res: (requests. Response) 検証するレスポンス
:param error_msg: (str) 表示するエラー メッセージ
"""
try:
res.raise_for_status()
except requests.HTTPError as error:
raise Exception("(error_msg): (error) (text)".format(
error_msg=error_msg,
error=error,
text=error.response.content
))
パラメータ、Google SecOps Content Hub の構成、ping アクション
統合設定で定義されたパラメータは、Google SecOps Content Hub の構成に表示されます。パラメータは次のとおりです。
- API ルート: 接続先のサービスのベース URL。
- API Secret: サービスでアプリケーションを認証するために使用される機密キー。
- [Verify SSL] チェックボックス: 有効にすると、Armis サーバーへの接続用の SSL 証明書が有効であることを確認します。
- [リモートで実行] チェックボックス: コードまたはタスクをローカルではなくリモート サーバーで実行するかどうかを決定する設定。このオプションを有効にすると、システムは必要な指示とデータを専用サーバーに送信して処理します。
パラメータを更新する手順は次のとおりです。
- 正しい認証情報を入力してください。
- [保存] > [テスト] をクリックします。
Ping アクションがない場合、[Test] ボタンは失敗し、赤い X が表示されます。
Ping アクションを実装する
Ping アクションのロジックは、認証が成功したかのように動作します。
Ping アクションを実装する手順は次のとおりです。
- IDE で、Armis 統合に
Pingという名前の新しいアクションを作成します。 ArmisManagerauthメソッドを使用して認証を確認します。
統合を有効にする
統合を有効にする手順は次のとおりです。
- [レスポンス] > [IDE] で、[有効/無効] を [オン] に切り替えます。
- [保存] をクリックします。緑色の切り替えボタンが表示されれば成功です。Content Hub の認証情報が ArmisManager に渡されます。
authがエラーなしで完了すると、[テスト] ボタンに緑色のチェックマークが表示されます。
extract_configuration_param メソッドを使用して、統合構成からパラメータをインポートします。または、extract_action_param を使用してアクション自体にパラメータを定義します。ただし、Ping アクションでは、Content Hub でテストされるため、常に構成パラメータを使用する必要があります。
カスタム統合を表示する
Content Hub に移動し、作成したカスタム統合を検索します。初期構成時にイメージを作成しなかった場合は、デフォルトのカスタム イメージが割り当てられます。なお、Content Hub の更新によってカスタム統合がオーバーライドされたり、削除されたりすることはありません。
IDE でのエクスポートとインポート
次のいずれかの操作を行います。
- 統合をインポートする手順は次のとおりです。
- 正しいフォルダ構造の ZIP ファイルをアップロードします。統合が IDE とコンテンツ ハブに表示されます。
- [インポート] をクリックすると、統合は IDE と Content Hub の両方に表示されます。
- 定義、スクリプト、構成を含む ZIP ファイルが生成されます。Managers フォルダは自動的に含まれません。
- 統合をエクスポートする手順は次のとおりです。
- [エクスポート] をクリックしてパッケージをダウンロードします。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。