vault-radar index vault 명령어

vault-radar index vault 명령어

index vault 명령어는 Vault에서 비밀(secrets)의 인덱스를 만드는 데 사용해요. 아직 베타(beta) 단계 기능이에요.

출처: 문서

본문

베타 기능: 이 기능은 현재 베타 릴리스로 제공돼요. 베타 기능은 안정적이지만 불완전할 수 있고 변경될 수 있어요. 프로덕션 워크플로우에서 베타 기능을 사용하는 것은 강력히 권장하지 않아요.

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

index vault 명령어는 Vault에서 비밀의 인덱스를 만드는 데 사용돼요.

인증과 권한 부여(Authentication and authorization)

vault-radar는 Vault 클러스터에 연결하기 위해 VAULT_ADDR과 VAULT_TOKEN 환경 변수가 필요해요. index vault 명령어는 전체 네임스페이스 계층을 순회해요. 각 네임스페이스 안에서 모든 AppRole과 KVv2 마운트를 스캔하려고 시도해요. 접근은 제공된 토큰에 연결된 정책(policies)으로 제한될 수 있어요. vault-radar는 다음 엔드포인트를 사용하려고 시도해요:

마운트 리소스 메서드 엔드포인트
System 네임스페이스 나열 LIST sys/namespaces
System 인증 메서드 나열 GET sys/auth
System 비밀 마운트 나열 GET sys/mounts
System 라이선스 읽기 GET sys/license/status
AppRole 역할 나열 LIST auth/:mount-path/role
AppRole 시크릿 ID 액세서 나열 LIST auth/:mount-path/role/:role_name/secret-id
AppRole 시크릿 ID 액세서 조회 POST auth/:mount-path/role/:role_name/secret-id-accessor/lookup
KVv2 KV 엔진 설정 읽기 GET :mount-path/config
KVv2 비밀 나열 LIST :mount-path/metadata/:path
KVv2 비밀 메타데이터 읽기 GET /:mount-path/metadata/:path
KVv2 비밀 버전 읽기 GET /:mount-path/data/:path?version=:version-number

예시 Vault 정책은 Vault Enterprise 통합(Integrate Vault Enterprise) 문서를 참조해 주세요.

인덱스 생성(Index generation)

index vault 명령어를 사용해 Vault에서 KVv2 비밀의 인덱스를 생성할 수 있어요:

$ vault-radar index vault --outfile </path/to/outfile.jsonl>

인덱스 출력은 JSONL 형식이에요. KVv2 비밀마다, 각 버전마다, 각 하위 키마다 엔트리가 하나씩 있어요. 예를 들어 AWS 액세스 키 ID와 시크릿 키를 포함하는 3개 버전의 비밀에 대해 6개의 엔트리가 있어요.

각 인덱스 엔트리는 다음 필드를 포함해요:

  • value_hash - 비밀 값의 해시된 버전
  • secret_key - Vault 비밀 내의 하위 키 (예: aws_secret_key)
  • secret_type - 키 및/또는 기저 값으로 결정된 비밀의 유형 (예: GitHub personal access token, AWS secret key)
  • secret_age_days - 생성 이후 경과된 일수
  • location - 비밀을 검색하는 데 사용할 수 있는 전체 URL (예: vault://127.0.0.1:8205/v1/eng/team1/app-foo/data/aws?version=1)

그런 다음 이 인덱스를 다른 스캔에서 비교 대상으로 사용할 수 있어요. 예를 들어 다음 명령어는 생성된 Vault 인덱스 파일을 사용해 Confluence 스캔을 실행하는 데 사용할 수 있어요:

$ vault-radar scan confluence --outfile=confluence.csv \
    --url="http://localhost:8090" \
    --space-key=VRD --index-file=vault.idx

소스를 스캔하기 전에 비밀 해시를 키로 하는 메모리 내 인덱스가 생성돼요. 이 인덱스는 위험이 Vault에 존재하는지 주석을 달기 위해 사용돼요.

HCP 제공 솔트를 사용한 인덱스 파일 생성

인덱스 파일은 "온라인 모드"로 생성돼요. 즉 생성되는 비밀 해시가 HCP에서 제공되는 솔트를 사용한다는 뜻이에요. 이는 HCP 업로드 페이지에 설명된 대로 시스템에 Project Service Principals가 구성되어 있어야 해요.

$ vault-radar index vault -r <REGION CODE> -o <PATH TO OUTPUT>.jsonl

HCP Vault Dedicated 관련 고려사항

HCP Vault Dedicated 클러스터에서는 루트 네임스페이스가 제한되어 있고, 사용자는 admin 네임스페이스와 그 안의 모든 하위 네임스페이스에만 접근할 수 있어요. HCP Vault Dedicated 클러스터에서 vault-radar index vault를 작동시키려면 스캔할 네임스페이스로 VAULT_PARENT_NAMESPACE 환경 변수를 설정하는 것이 필수예요.

$ export VAULT_PARENT_NAMESPACE=admin
$ vault-radar index vault --outfile index-results.jsonl

위 명령어는 admin 네임스페이스를 포함해 admin 내의 모든 네임스페이스를 스캔해요.

메모: VAULT_PARENT_NAMESPACE는 Vault Enterprise에서도 작동하지만 설정이 필수는 아니에요.

더 알아보기 (Learn more)