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)
- index aws-parameter-store 명령어 — AWS Parameter Store 인덱스를 만드는 방법을 확인해요.
- govern vault 명령어 — Vault에서 발견된 위험을 관리하는 방법을 확인해요.
- CLI 시작하기 — 주요 명령어 목록을 둘러봐요.