vault-radar scan repo 명령어

vault-radar scan repo 명령어

scan repo 명령어는 git 저장소를 스캔하는 데 사용해요.

출처: 문서

본문

메모: Vault Radar CLI 버전 0.20.0 이상이 설치되어 있어야 해요. 현재 CLI의 버전은 version 명령어로 확인할 수 있어요.

scan repo 명령어는 git 저장소를 스캔하는 데 사용돼요.

인증(Authentication)

scan repo 명령어는 기존 저장소 클론을 스캔하거나, 제공된 저장소 URL로 저장소를 자동으로 클론할 수 있어요. 기존 클론을 사용하면 인증이 필요 없어요. 저장소가 공개(public)이면 인증이 필요 없어요. 그 외의 경우 CLI가 저장소를 클론할 수 있도록 git 토큰을 제공해야 해요. CLI는 VAULT_RADAR_GIT_TOKEN 환경 변수에서 토큰을 읽어요. 이 환경 변수의 값은 git 서버 제공자에 따라 달라져요. GitHub와 GitLab의 경우 개인 액세스 토큰(PAT)이면 충분해요. Bitbucket과 Azure DevOps의 경우 <username>:<PAT> 형식이어야 해요.

메모: CLI는 내부적으로 https://를 사용해 저장소를 클론하고, 클론 URL의 HTTP username:password 부분을 VAULT_RADAR_GIT_TOKEN 값으로 설정해요. 위에서 설명한 형식이 작동하지 않는다면, https:// 인증에 사용되는 정확한 형식에 대해 여러분의 git 서버 제공자 문서를 확인해 주세요.

사용법

Usage: vault-radar scan repo [options]

명령 옵션

  • --url, -u: 지정하면 주어진 저장소를 클론하고 스캔해요.
  • --clone-dir, -c: 지정하면 주어진 기존 저장소 클론을 스캔해요.
  • --outfile, -o: 발견된 비밀 정보를 저장할 파일 지정
  • --format, -f: 출력 형식 지정. csv와 json을 지원하며 기본값은 csv
  • --baseline, -b: 이전 스캔 결과가 있는 파일 지정. 새 비밀만 보고돼요.
  • --limit, -l: 보고할 최대 비밀 수 지정. 한도에 도달하면 스캔이 중지돼요.
  • --commit-limit: 스캔할 최대 커밋 수 지정. 한도에 도달하면 스캔이 중지돼요.
  • --index-file: 어떤 위험이 Vaulted인지 판단하는 데 사용할 인덱스 파일 경로 지정
  • --disable-ui: 스캔 요약이 stdout에 기록되지 않도록 지정
  • --skip-activeness: 지정하면 활성(activeness) 검사를 건너뜀

저장소 스캔

저장소에 있는 모든 커밋을 자동으로 클론하고 스캔한 다음 결과를 HCP에 업로드해요.

$ vault-radar scan repo -u <REPO URL>

기존 클론 스캔

기존 저장소(클론)를 스캔하고 결과를 CSV 형식의 파일로 작성해요.

$ vault-radar scan repo -c <PATH TO CLONE DIR> -o <PATH TO OUTPUT>.csv

메모: 저장소를 자동으로 클론하는 것과 위 방식의 차이는, 기존 클론에서는 클론에 있는 커밋만 스캔되고 저장소의 도달 가능한(reachable) 모든 커밋이 스캔되지 않는다는 점이에요. 클론은 저장소 자체보다 훨씬 적은 커밋을 가질 수 있어요. 예를 들어 클론이 shallow 클론이거나 단일 브랜치만 클론된 경우죠. 도달 가능한 모든 커밋을 스캔하려면 -u 파라미터를 사용해 저장소를 스캔하는 것이 좋아요.

기존 클론을 스캔하고 JSON으로 출력

저장소(클론)를 스캔하고 결과를 JSON Lines 형식의 파일로 작성해요.

$ vault-radar scan repo -c <PATH TO CLONE DIR> -o <PATH TO OUTPUT>.jsonl -f json

HCP 연결 시 스캔 동작

scan 명령어는 스캔 간 일관성을 유지하기 위해 클라우드의 공유 솔트로 해시를 생성하려면 HCP 클라우드 연결이 필요해요. 필요한 HCP 연결 정보를 채우려면 HCP 업로드 페이지를 참조해 주세요.

메모: 발견된 위험을 위험이 도입된 git_reference(브랜치)에 올바르게 귀속시키려면 기본 브랜치가 체크아웃되어 있거나 클론이 bare 클론일 것으로 기대해요. 기본이 아닌 브랜치가 체크아웃되어 있으면 대부분의 위험이 그 브랜치에 귀속될 거예요.

메모: 해당 브랜치의 tip에 아직 있는 위험만 보고돼요.

베이스라인 파일을 사용한 스캔

이전 스캔의 결과를 사용해 스캔을 수행하고 새로 바뀐 내용을 출력 파일에 작성해요. -b 옵션을 사용하면 이전 스캔에서 발견되지 않았던 새로운 위험만 보고돼요.

$ vault-radar scan repo -u <REPO URL> -b <PATH TO BASELINE>.csv \
    -o <PATH TO OUTPUT>.csv

메모: 이전 스캔과 현재 스캔이 "유사"할 것으로 기대해요. 예를 들어 둘 다 클론 또는 저장소 스캔이고, 히스토리 포함 여부 등이 일치해야 해요.

Vault 인덱스 파일을 사용한 스캔

생성된 vault 인덱스를 사용해 스캔을 수행하고 결과를 HCP에 업로드해요. 이 모드에서는 위험이 이전에 Vault에서 발견된 적이 있다면 스캔 결과에 Vault 내 위치도 함께 보고돼요.

$ vault-radar scan repo -u <REPO URL> \
    --index-file <PATH TO VAULT INDEX>.jsonl

Vault 인덱스를 생성하는 방법을 확인해 보세요.

스캔 시 발견할 비밀 수 제한

정의된 비밀 수가 발견되면 저장소 스캔을 중지해요.

$ vault-radar scan repo -u <REPO URL> -l <NUM OF SECRETS>

스캔 시 커밋 수 제한

정의된 커밋 수가 스캔되면 저장소 스캔을 중지해요.

$ vault-radar scan repo -u <REPO URL> --commit-limit <NUM OF COMMITS>

더 알아보기 (Learn more)