GitSync

다음에서 지원:

GitSync는 Google Security Operations SOAR Professional Services팀에서 빌드한 강력한 통합으로, Google Security Operations SOAR 구성요소를 Git 저장소와 동기화하도록 설계되었습니다. git의 내부 작업을 사용하여 저장소 자체에 직접 쓰므로 기본적으로 파일 저장소 서비스로 작동합니다. 다음 작업을 실행하는 메서드를 제공합니다.

  • Google Security Operations SOAR 인스턴스 간에 애셋 마이그레이션

  • Google Security Operations SOAR 애셋 백업

  • 자동 문서화

  • 애셋/지식을 공유할 '스토어'를 만듭니다.

  • 버전 제어

통합은 지원되는 모든 애셋의 푸시 및 풀 작업과 전체 Google Security Operations SOAR 인스턴스의 푸시/풀 작업 등 여러 Google Security Operations SOAR 작업으로 구성됩니다. 이러한 작업은 IDE에서 수동으로 실행되도록 빌드되었으므로 주기적으로 실행할 필요는 없지만 일반 작업으로 사용할 수 있습니다 (예: 일일 커밋 업로드). 

GitSync는 Google Security Operations SOAR API를 사용하여 통합이나 시각적 패밀리와 같은 관련 애셋을 가져오고 해당 애셋에서 사용 가능한 모든 정보를 파싱합니다. 이 정보는 나중에 저장소를 탐색할 때 일반적으로 표시되는 README.md 파일에 렌더링됩니다. 그런 다음 애셋 JSON 정의와 렌더링된 README를 로컬 저장소에 쓰고 원격 저장소로 푸시합니다.

GitSync의 또 다른 용도는 지식 공유입니다. 이 통합을 사용하면 git 저장소가 이전에 설계되었으며 Google Security Operations SOAR 권장사항을 활용하여 플랫폼을 최대한 활용하는 플레이북이나 온톨로지 설정과 같은 애셋의 '저장소' 역할을 할 수 있습니다.

기본 요건

기존 저장소 푸시/풀:

  • Git에 대한 인증 방법입니다. 지원되는 항목은 사용자 이름/비밀번호 조합 (권장하지 않음), 액세스 토큰 (권장), base64로 인코딩된 SSH 비공개 키 (권장)입니다. 마지막 두 가지를 사용하는 경우 username 매개변수는 필요하지 않습니다.

  • 로컬 Google Security Operations SOAR 사용자입니다. 애셋을 가져오는 데 사용됩니다. 이 사용자에게는 타겟 모듈을 쓸 권한이 있어야 합니다 (예: IDE에 액세스할 수 없는 사용자는 통합을 가져올 수 없음).

새 저장소 만들기

  • 앞서 기존 저장소 푸시/풀에서 언급한 모든 사항

  • 원격 저장소입니다. 저장소에 파일이 하나 이상 있는 것이 좋습니다. 대부분의 Git 서비스에서는 저장소를 만들 때 README 파일을 만드는 옵션을 제공합니다.

통합 구성

통합을 공유 인스턴스로 구성해야 합니다. Google SecOps SOAR의 기존 환경에 연결할 수 없습니다.

통합 속성

매개변수 이름

설명

저장소 URL

저장소 URL입니다. 사용자/비밀번호 인증을 사용하는 경우 이 값은 https://로 시작해야 합니다. SSH 인증을 사용하는 경우 이 값은 git@ 또는 ssh://로 시작해야 합니다. (아래의 저장소 URL 및 브랜치 구성 참고)

브랜치

동기화할 저장소의 브랜치입니다.

Git 비밀번호/토큰/SSH 키

Git에 대한 인증 방법입니다. 이 값은 Git 비밀번호/토큰/SSH 비공개 키일 수 있습니다. 비공개 키는 base64로 인코딩되어야 합니다. RSA 및 Ed25519가 지원됩니다.

Git 사용자 이름

Git 사용자 이름 SSH 인증을 사용하는 경우 이 값은 필수가 아닙니다.

커밋 작성자

필수사항이 아닙니다. 커밋 작성자를 지정할 수 있습니다. 이 값은 사용자 이름 형식이어야 합니다.

Google Security Operations SOAR SSL 확인

Google Security Operations SOAR API에 대한 SSL 확인

Git SSL 확인

타겟 Git 서비스로 SSL 확인

저장소 URL 및 브랜치 구성

이 가이드에서는 Bitbucket에서 올바른 값을 가져오는 방법을 보여줍니다. GitHub에서도 프로세스는 동일합니다.


  1. Bitbucket에서 저장소를 찾습니다.

    gitsync1

  2. 오른쪽 상단의 클론 버튼을 클릭합니다 (GitHub의 코드).

    • SSH 인증 - 저장소 URL은 git@bitbucket.org:siemplifyproserv/connectors.git입니다.

      gitsync2

  3. 사용자/비밀번호 또는 토큰 인증 - 저장소 URL은 https://bitbucket.org/siemplifyproserv/connectors.git입니다 . (사용자 이름은 무시해도 됨)

    gitsync3

  4. 현재 브랜치 (아래 이미지의 master)를 확인합니다.

    gitsync4

사용 예

GitSync의 모든 작업에는 다음 매개변수가 포함됩니다.


이름

설명

작업별 - 커넥터 이름, 통합 식별자, 플레이북 허용 목록 등

이러한 매개변수는 저장소로 푸시하거나 저장소에서 가져올 항목을 지정하는 데 사용됩니다. GitSync에서는 애셋이 식별자로 참조됩니다. 이러한 값은 대소문자를 구분합니다.

저장소 URL 및 브랜치

동일한 사용자 인증 정보로 여러 저장소를 지원합니다. 이러한 매개변수가 설정되면 통합 인스턴스에 구성된 저장소가 무시됩니다. 

커밋 메시지

저장소에 애셋을 푸시할 때는 커밋에 메시지가 필요합니다. 여기에서 푸시 이유를 지정하여 애셋에 수정, 변경 또는 추가된 항목을 나타낼 수 있습니다.

Readme 부가기능

푸시할 때 애셋의 문서를 확장하는 기능을 추가합니다. 이 값에는 다음을 사용할 수 있습니다.

  • 마크다운 구문 - GitHub, Bitbucket과 같은 Git 제공업체의 README 파일에서 지원됨

  • Jinja - 애셋에 관한 정보를 표시합니다. 통합 관리자 상수의 예 참고

템플릿이 문서 끝에 추가되고 저장소의 루트에 있는 GitSync.json 메타데이터 파일에 저장됩니다.


애셋 가져오기

이 예에서는 올바른 매핑과 시각적 계열이 있는 커넥터를 가져옵니다.

  1. 먼저 애셋이 구성된 저장소에 있는지 확인합니다. 저장소 디렉터리를 탐색하고 애셋 식별자를 복사하면 됩니다 (일반적으로 디렉터리 이름 또는 README 파일의 제목).
    gitsync5
    Bitbucket의 저장소에 있는 커넥터 디렉터리의
    예시 디렉터리는 통합 이름이며 그 안에 커넥터의 실제 식별자가 있습니다.
  2. Google Security Operations SOAR IDE에서 적합한 작업을 찾습니다. 이 예에서는 작업 풀 커넥터를 사용합니다.

    • 참고: 커넥터를 가져올 때는 커넥터 통합도 설치되어 있는지 확인하세요.

  3. 테스트 탭을 클릭하고 매개변수를 구성합니다. 하나의 저장소를 사용하고 통합 인스턴스에서 이미 구성되어 있으므로 저장소 URL 및 브랜치 매개변수를 비워 두고 다른 매개변수를 필요한 값으로 설정합니다.

  4. 작업을 실행합니다.

  5. 작업 로그는 디버그 출력을 참고하세요. 모든 것이 제대로 진행되면 로그에 표시됩니다.

  6. Google Security Operations SOAR -> 커넥터로 이동하여 커넥터를 구성합니다.


애셋 푸시

이 예에서는 플레이북과 블록을 저장소에 푸시합니다.

  1. 푸시하려는 플레이북을 식별합니다. 여기에서는 '로그인 실패'라는 새 블록과 '악성 활동'이라는 업데이트된 플레이북을 푸시합니다.

    gitsync7

  2. Google Security Operations SOAR IDE에서 적합한 작업을 찾습니다. 이 예에서는 작업 푸시 플레이북을 사용합니다.

  3. 테스트 탭을 클릭하고 매개변수를 구성합니다.

  4. 두 파일이 모두 동일한 폴더 (기본)에 있으므로 폴더 허용 목록을 대신 사용할 수도 있습니다.
  5. 작업을 실행합니다.

  6. 작업 로그는 디버그 출력을 참고하세요. 모든 것이 제대로 진행되면 로그에 표시됩니다.

  7. 저장소에 최신 버전의 플레이북이 포함되어 있는지 확인합니다.


새 저장소 만들기

새 저장소를 만들 때는 GitSync로 구성하기 전에 저장소에 단일 파일을 포함하는 것이 중요합니다. 저장소를 만들 때 저장소의 루트에 README 파일을 포함하면 빠르게 완료할 수 있습니다.
Bitbucket

gitsync8

GitHub

gitsync9

알려진 문제 및 제한사항

  • 저장소가 처음 설정된 후에는 사전 정의된 디렉터리 구조를 사용하여 각 애셋의 위치를 파악합니다. 맞춤 커밋 또는 저장소 변경사항으로 디렉터리 구조를 따르지 않으면 통합이 오작동합니다. 저장소 디렉터리 구조의 스키마는 이 문서의 끝부분에서 확인할 수 있습니다.

  • 공개 저장소와 함께 이 통합을 사용할 때는 주의하세요. Google Security Operations SOAR 애셋은 애플리케이션 ID, 클라이언트 ID, 사용자 이름, 기타 민감한 정보를 보유하는 매개변수를 사용합니다. GitSync는 매개변수가 민감한지 여부를 알 수 없으므로 'Password' 유형이 아닌 모든 매개변수가 저장소에 업로드됩니다. 또한 Google Security Operations SOAR 인스턴스를 푸시할 때 (환경 푸시 작업) 비밀번호를 커밋하는 옵션이 있습니다. 이 옵션은 GitSync에 통합 구성에서 모든 비밀번호 매개변수를 내보내도록 지시합니다. 저장소가 공개되어 있는 경우 이 값을 true로 설정하지 마세요. 모든 사용자 인증 정보가 온라인에 유출됩니다.

  • Google Security Operations SOAR 인스턴스를 가져올 때 (환경 가져오기 작업) 모든 통합을 설치하는 데 5분 이상 걸릴 수 있으며 작업이 시간 초과로 실패합니다. 문제를 방지하기 위해 Google Security Operations Marketplace에서 모든 상업용 통합을 미리 수동으로 설치하는 것이 좋습니다. 하지만 제한 시간으로 인해 작업이 실패하는 경우 작업을 다시 실행할 수도 있습니다.

  • 상용 통합과 맞춤 통합은 다르게 처리됩니다. 가져오기/내보내기 작업을 위해 맞춤 통합이 통합의 전체 ZIP 내보내기로 푸시됩니다. 상업적 통합은 맞춤 코드만 사용하여 푸시됩니다. 풀되면 GitSync가 Google SecOps Marketplace에서 최신 버전의 통합을 설치하고 공식 통합에 맞춤 코드를 저장합니다.

  • 매핑을 가져올 때 이벤트가 아직 색인화되지 않았으므로 실제로 Google Security Operations SOAR에 수집될 때까지 설정 -> 온톨로지 -> 온톨로지 상태 표에 표시되지 않습니다.

  • 로컬 저장소는 /opt/siemplify/siemplify_server/GitSyncFiles/{RepoName}에 저장됩니다. 통합은 파일을 쓰지 않고 Git 객체를 쓰기 때문에 이 폴더는 저장소를 나타내지 않으며 작업이 실행될 때마다 변경사항으로 덮어쓰여집니다. GitSync로 생성된 저장소가 아닌 다른 저장소 클론을 사용하는 것이 좋습니다.

  • 권한이 제한된 플레이북 (예: 기본 권한이 보기 가능으로 설정됨)은 GitSync를 통해 성공적으로 동기화하려면 소스 시스템에서 특정 권한 구성이 필요합니다. 자세한 내용은 플레이북 권한 작업을 참고하세요.

  • Google SecOps는 GitSync를 사용하여 SOAR 애셋을 백업하는 것을 지원합니다. 하지만 Google SecOps는 GitSync를 사용하여 시스템 간에 SOAR 애셋을 *배포* 하는 것을 지원하지 않습니다. 데이터베이스 객체가 고유하지 않을 수 있으므로 예기치 않은 결과가 발생할 수 있습니다.


플레이북 권한 작업

GitSync를 사용하여 권한이 제한된 플레이북 (예: 기본 권한이 보기 가능으로 설정되거나 기본값이 아닌 다른 설정)을 동기화하는 경우 대상 시스템에 플레이북을 수정할 권한이 없으면 오류가 발생할 수 있습니다. 이는 GitSync가 Administrator SOC 역할이 있는 내부 시스템 API 키를 사용하여 작업을 실행하기 때문입니다. 권한이 제한된 플레이북이 성공적으로 동기화되도록 하려면 해당 플레이북의 소스 시스템에 Administrator SOC 역할 수정 가능 권한을 부여하세요.

GitSync를 사용 설정하여 제한된 권한으로 플레이북 가져오기

  1. 소스 시스템에서 다음을 실행합니다.
    1. GitSync와 동기화하려는 플레이북으로 이동합니다.
    2. 플레이북의 권한 설정을 엽니다.
    3. Administrator SOC 역할수정 가능 권한이 있는 엔티티 목록에 추가되었는지 확인합니다.
  2. 소스 시스템에서 권한을 조정한 후 GitSync에서 플레이북 푸시 작업을 실행하여 플레이북과 권한으로 Git 저장소를 업데이트합니다.
  3. 대상 시스템에서 GitSync의 플레이북 가져오기 작업을 실행합니다.

GitSync와 함께 사용할 SSH 키 만들기

  1. 먼저 키 쌍을 생성합니다. 암호를 묻는 메시지가 표시되면 Enter 키를 누릅니다. ssh-keygen -b 2048 -t rsa -f ./id_rsa

    id_rsa (비공개 키)와 id_rsa.pub (공개 키)이라는 두 개의 파일이 생성됩니다. 비공개 키를 안전한 위치에 보관합니다.

  2. 저장소에 공개 키를 설정합니다. 예를 들어 Bitbucket에서 저장소의 설정을 입력하고 액세스 키를 클릭합니다. '키 추가'를 클릭하고 '키' 매개변수에 id_rsa.pub의 콘텐츠를 붙여넣습니다.

  3. 비공개 키를 통합 구성에 추가하려면 먼저 Base64로 인코딩해야 합니다.

    다음 명령어를 사용하여 파일을 인코딩합니다.

    • Linux:
      cat id_rsa | base64 -w 0
    • Windows:

      id_rsa가 있는 PowerShell을 열고 다음을 붙여넣습니다 (한 줄임).

      Write-Output [System.Text.Encoding]::ASCII.GetString([convert]::ToBase64String(([IO.File]::ReadAllBytes((Join-Path (pwd) 'id_rsa')))))
  4. 인쇄된 값을 통합 속성 비밀번호/토큰/SSH 키에 복사하고 통합 연결을 테스트합니다.

GitSync 저장소 디렉터리 구조

다음은 원격 저장소에서 예상되는 디렉터리 구조입니다.

* 다음은 예시 저장소의 tree 명령어 출력입니다. 댓글은 빨간색으로 표시됩니다.


gitsync10

gitsync11

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