맞춤 통합 빌드

다음에서 지원:

이 문서에서는 상업용 통합과 동일한 구조를 사용하여 통합 개발 환경 (IDE) 내에서 맞춤 통합을 만드는 방법을 설명합니다. 다양한 환경의 콘텐츠 허브에서 맞춤 통합을 찾아 구성할 수 있습니다. 그런 다음 플레이북, 수동 작업, 원격 에이전트에서 사용할 수 있습니다. 다른 IDE 항목과 마찬가지로 가져오기 및 내보내기 기능도 지원됩니다.

IDE에서 맞춤 통합 만들기

Armis 제품의 맞춤 통합을 빌드하고 Ping 작업과 함께 관리자를 만들 수 있습니다. 이 절차에서는 Python 및 객체 지향 프로그래밍에 대한 지식이 있다고 가정합니다.

사용 사례: 맞춤 Armis 통합 빌드

IDE에서 맞춤 통합을 만들려면 다음 단계를 따르세요.

  1. 기본 메뉴에서 응답 > IDE로 이동합니다.
  2. 새 항목 만들기를 클릭하고 통합을 선택합니다.
  3. 이름을 입력하고 만들기를 클릭합니다.

이제 통합이 설정 설정 옵션과 함께 표시되어 맞춤 통합임을 나타냅니다.

설정 설정을 클릭하여 아이콘, 설명, Python 종속 항목, 통합 매개변수를 정의할 수 있는 통합 설정을 표시합니다.

종속 항목 패키지에 manylinux_2_17_x86_64 아키텍처에 사용할 수 있는 사전 컴파일된 휠 (.WHL) 파일이 없거나 특정 소스 코드 버전이 필요한 경우 소스 코드 (예: .tar.gz 파일)에 대한 직접 URL을 제공할 수 있습니다. 플랫폼의 종속 항목 리졸버인 uvpyproject.toml 파일 내의 [tool.uv.sources] 테이블에서 이러한 소스 URL을 정의하는 것을 지원합니다. 예를 들면 다음과 같습니다.

[project]
# ... other project fields ...

[tool.uv.sources]
compressed-rtf = { url = "https://files.pythonhosted.org/packages/.../compressed_rtf-1.0.6.tar.gz" }
dkimpy = { url = "https://files.pythonhosted.org/packages/.../dkimpy-1.1.8.tar.gz" }

uv를 사용하여 다양한 유형의 종속 항목을 정의하는 방법에 관한 자세한 내용은 종속 항목 관리에 관한 uv 문서를 참고하세요.

TIPCommon와 같은 복잡하거나 다층적인 외부 라이브러리가 필요한 통합의 경우 Google에서는 수동 IDE 업로드를 완전히 우회하고 마켓 CLI (mp) 도구를 사용하여 로컬로 개발하는 것이 좋습니다. 이 도구는 uv 패키지 관리자를 사용하여 중첩된 종속 항목을 자동으로 추적하고 패키징합니다.

기본 요건

  • 로컬 개발 머신에 Python 3.11 이상이 설치되어 있어야 합니다.
  • uv Python 패키지 관리자가 설치되어 있어야 합니다 (uv 설치 가이드 참고).

초기 설정

  1. 공식 콘텐츠 허브 저장소를 로컬 환경에 포크 및 클론합니다.
  2. uv를 사용하여 mp 도구를 설치합니다.
    uv tool install mp --from git+https://github.com/chronicle/content-hub.git#subdirectory=packages/mp
  3. 인스턴스 루트 URL과 기존 API 키를 사용하여 Google SecOps 환경에 로그인합니다.
    mp login --api-root https://{YOUR_INSTANCE}.siemplify-soar.com --api-key {YOUR_LEGACY_API_KEY}
  4. 로컬 루트 저장소 경로를 구성합니다.
    mp config --root-path /path/to/cloned/content-hub
  5. content-hub/content/response_integrations/custom/의 저장소 레이아웃 내에서 독점 통합을 위한 맞춤 하위 디렉터리를 만듭니다.

통합에 TIPCommon 또는 복잡한 종속 항목 추가

TIPCommon 또는 기타 다층 라이브러리가 필요한 IDE에서 생성된 통합이 있는 경우 다음 로컬 워크플로를 사용하여 종속 항목을 안전하게 관리하세요.

  1. 클론된 저장소 내의 맞춤 통합 디렉터리로 이동합니다.
    cd content-hub/content/response_integrations/custom/
  2. Google SecOps 인스턴스에서 기존 통합 구조를 가져옵니다.
    mp pull --type integration --name "{INTEGRATION_NAME}"
  3. 새로 가져온 통합 폴더로 디렉터리를 변경합니다.
    cd {INTEGRATION_NAME}
  4. uv를 사용하여 필요한 TIPCommon 휠 파일 패키지를 삽입합니다. 이렇게 하면 중첩된 하위 종속 항목 휠이 로컬 환경 패키지 구성에 자동으로 추적되고 다운로드됩니다.
    uv pip install /path/to/wheels/TIPCommon-your-version-py3-none-any.whl
  5. 완전히 컴파일된 통합과 새로 추적된 종속 항목 트리를 Google SecOps 인스턴스로 다시 푸시합니다.
    mp push --type integration --name "{INTEGRATION_NAME}"

설치 확인

종속 항목이 errorCode: 2000 루프를 발생시키지 않고 패키징되었는지 확인하려면 다음을 실행하세요.

  • IDE 내에서 맞춤 통합을 엽니다.
  • 패키지에서 모듈을 가져오는 테스트 줄을 추가합니다(예: from TIPCommon.extraction import extract_action_param).
  • 테스트/재생 버튼을 클릭하여 실행을 디버그합니다. 스크립트가 ModuleNotFoundError를 발생시키지 않고 깔끔하게 컴파일되면 중첩된 종속 항목이 올바르게 해결된 것입니다.

맞춤 관리자 만들기

관리자는 서드 파티 도구 API의 래퍼입니다. 필수는 아니지만 외부 도구와 상호작용하는 통합에 권장됩니다. 관리자는 SDK에서 가져오면 안 됩니다. 생성 후 커넥터, 작업, 작업으로 가져옵니다.

맞춤 관리자를 만들려면 다음 단계를 따르세요.

  1. IDE에서 새 항목 만들기를 클릭하고 관리자를 선택합니다.
  2. Armis 통합을 선택하고 관리자 이름을 입력합니다.
  3. 다음 스크립트를 수정하고 실행합니다.
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 콘텐츠 허브 구성에 표시됩니다. 매개변수는 다음과 같습니다.

  • API 루트: 연결하려는 서비스의 기준 URL입니다.
  • API 비밀번호: 서비스를 통해 애플리케이션을 인증하는 데 사용되는 기밀 키입니다.
  • SSL 확인 체크박스: 사용 설정하면 Armis 서버 연결에 사용되는 SSL 인증서가 유효한지 확인합니다.
  • 원격으로 실행 체크박스: 코드 또는 태스크를 로컬이 아닌 원격 서버에서 실행할지 여부를 결정하는 설정입니다. 이 옵션을 사용 설정하면 시스템에서 처리를 위해 전용 서버에 필요한 안내와 데이터를 전송합니다.

파라미터를 업데이트하려면 다음 단계를 따르세요.

  1. 올바른 사용자 인증 정보를 입력합니다.
  2. 저장 > 테스트를 클릭합니다.

작업이 누락되면 테스트 버튼이 실패하고 빨간색 X가 표시됩니다.

핑 작업 구현

Ping 작업의 논리는 성공적인 인증과 유사하게 작동합니다.

Ping 작업을 구현하려면 다음을 실행하세요.

  1. IDE에서 Armis 통합에 Ping라는 새 작업을 만듭니다.
  2. ArmisManager auth 메서드를 사용하여 인증을 확인합니다.

통합 사용 설정

통합을 사용 설정하려면 다음 단계를 따르세요.

  1. 응답 > IDE에서 사용 설정/사용 중지 전환 버튼을 클릭하여 사용으로 설정합니다.
  2. 저장을 클릭합니다. 녹색 전환 버튼은 성공을 나타냅니다. 콘텐츠 허브의 사용자 인증 정보가 ArmisManager에 전달됩니다. auth가 오류 없이 완료되면 테스트 버튼에 녹색 체크표시가 표시됩니다.

extract_configuration_param 메서드를 사용하여 통합 구성에서 매개변수를 가져옵니다. 또는 extract_action_param를 사용하여 작업 내에서 매개변수를 정의합니다. 하지만 Ping 작업은 항상 구성 매개변수를 사용해야 합니다. 콘텐츠 허브에서 테스트하기 때문입니다.

맞춤 통합 보기

콘텐츠 허브로 이동하여 생성한 맞춤 통합을 검색합니다. 초기 구성 중에 이미지를 만들지 않은 경우 기본 커스텀 이미지가 할당됩니다. 콘텐츠 허브 업데이트는 맞춤 통합을 재정의하거나 삭제하지 않습니다.

IDE에서 내보내기 및 가져오기

다음 작업 중 하나를 수행합니다.

  • 통합을 가져오려면 다음 단계를 따르세요.
    1. 올바른 폴더 구조로 ZIP 파일을 업로드합니다. 통합이 IDE 및 콘텐츠 허브에 표시됩니다.
    2. 가져오기를 클릭합니다. 통합은 IDE와 콘텐츠 허브 모두에 표시됩니다.
    3. 시스템에서 정의, 스크립트, 구성이 포함된 ZIP 파일을 생성합니다. 관리자 폴더는 자동으로 포함되지 않습니다.
  • 통합을 내보내려면 다음 단계를 따르세요.
    • 내보내기를 클릭하여 패키지를 다운로드합니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.