vault-radar govern vault 명령어
vault-radar govern vault 명령어
govern vault 명령어는 HashiCorp Vault Community Edition 또는 Enterprise 클러스터를 스캔하는 데 사용해요. Vault를 govern vault로 스캔하면 규정 준수(compliance) 보고와 비밀 인덱싱 기능을 제공받을 수 있어요. 아직 베타(beta) 단계 기능이에요.
출처: 문서
본문
베타 기능: 이 기능은 현재 베타 릴리스로 제공돼요. 베타 기능은 안정적이지만 불완전할 수 있고 변경될 수 있어요. 프로덕션 워크플로우에서 베타 기능을 사용하는 것은 강력히 권장하지 않아요.
메모: Vault Radar CLI 버전 0.20.0 이상이 설치되어 있어야 해요. 현재 CLI의 버전은
version명령어로 확인할 수 있어요.
govern vault 명령어는 HashiCorp Vault Community Edition 또는 Enterprise 클러스터를 스캔하는 데 사용돼요. Vault를 govern vault로 스캔하면 규정 준수 보고와 비밀 인덱싱 기능을 제공해요.
인증과 권한 부여(Authentication and authorization)
vault-radar는 Vault 클러스터에 연결하기 위해 VAULT_ADDR과 VAULT_TOKEN 환경 변수가 필요해요. govern vault 명령어는 전체 네임스페이스 계층을 순회해요. 각 네임스페이스 안에서 모든 AppRole과 KVv2 마운트를 스캔하려고 시도해요. 접근은 제공된 토큰에 연결된 정책으로 제한될 수 있어요. vault-radar는 다음 엔드포인트를 사용하려고 시도해요:
| 마운트 | 리소스 | 메서드 | 엔드포인트 |
|---|---|---|---|
| System | 네임스페이스 나열 | LIST |
sys/namespaces |
| System | 인증 메서드 나열 | GET |
sys/auth |
| System | 비밀 마운트 나열 | GET |
sys/mounts |
| 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 |
규정 준수 보고(Compliance reporting)
govern vault 명령어는 조직의 규정 준수 요구사항을 충족하기 위해 회전(rotation)이 필요한 비밀을 감지하는 데 사용할 수 있어요. 출력에는 AppRole 및 KVv2 비밀에 대한 엔트리가 포함돼요. AppRole 비밀은 시크릿 ID 액세서마다 엔트리가 하나씩 있어요. KVv2 비밀은 KVv2 비밀마다, 각 버전마다, 각 하위 키마다 엔트리가 있어요. 예를 들어 AWS 액세스 키 ID와 시크릿 키를 포함하는 3개 버전의 비밀에 대해 6개의 엔트리가 있어요. KVv2 비밀 엔트리에는 비밀 값의 해시된 버전이 포함돼요. AppRole 시크릿 ID 값은 생성 시에만 제공되므로 접근할 수 없어요. 비밀 해시는 Vault 안에서 비밀이 여러 엔트리, 마운트, 네임스페이스에 걸쳐 분산(sprawl)됐는지 감지하는 메커니즘으로 사용될 수 있어요.
다음 명령어는 90일 회전 기간으로 CSV 출력을 제공하며 Vault를 스캔해요:
$ vault-radar govern vault --outfile vault-scan.csv --rotation-period=90
90일보다 오래된 비밀은 medium 심각도를 가지며 Secret rotation period has been exceeded 경고를 제공해요. 비밀이 만료 기간(-expiry-period로 제공)을 초과할 가까이 있거나 사용 횟수(현재 AppRole에만 해당)가 0에 가까워지면 경고도 제공돼요. 여러 경고가 있는 엔트리는 high 심각도를 가져요.
스캔의 범위는 여러 방법으로 제한하고 필터링할 수 있어요. 가장 간단하게는 -limit 플래그로 스캔할 최대 비밀 수를 지정할 수 있어요. 다만 이 플래그에는 순서 보장이 없어서, 출력의 구조를 완전히 이해하기 위한 빠른 데이터 하위 집합을 잡는 데 주로 유용해요. 출력은 다음 플래그 중 하나 이상을 사용해 더 직접적으로 필터링할 수도 있어요:
-namespace: 이 네임스페이스 안의 비밀만 출력에 포함돼요. 예:vault-radar govern vault -namespace=ns1 ...-mount-type: 이 유형의 마운트 안의 비밀만 출력에 포함돼요. 이 플래그는 네임스페이스와 경로에 무관해요. 예:vault-radar govern vault -mount-type=approle ...-mount-path: 이 상대 경로의 마운트 안의 비밀만 출력에 포함돼요. 이 플래그는 네임스페이스와 마운트 유형에 무관해요. 예:vault-radar govern vault -mount-path=app1 ...
HCP 연결 시 스캔 동작
govern 명령어는 스캔 간 일관성을 유지하기 위해 클라우드의 공유 솔트로 해시를 생성하려면 HCP 클라우드 연결이 필요해요. 필요한 HCP 연결 정보를 채우려면 HCP 업로드 페이지를 참조해 주세요.
HCP Vault Dedicated 관련 고려사항
HCP Vault Dedicated 클러스터에서는 루트 네임스페이스가 제한되어 있고, 사용자는 admin 네임스페이스와 그 안의 모든 하위 네임스페이스에만 접근할 수 있어요. HCP Vault Dedicated 클러스터에서 vault-radar govern vault를 작동시키려면 스캔할 네임스페이스로 VAULT_PARENT_NAMESPACE 환경 변수를 설정하는 것이 필수예요.
$ export VAULT_PARENT_NAMESPACE=admin
$ vault-radar govern vault --outfile govern-results.csv --rotation-period=90
위 명령어는 admin 네임스페이스를 포함해 admin 내의 모든 네임스페이스를 스캔해요.
메모:
VAULT_PARENT_NAMESPACE는 Vault Enterprise에서도 작동하지만 설정이 필수는 아니에요.
더 알아보기 (Learn more)
- index vault 명령어 — Vault에서 비밀 인덱스를 만드는 방법을 확인해요.
- CLI 시작하기 — 주요 명령어 목록을 둘러봐요.
- 결과를 HCP에 업로드하기 — HCP 연결 정보를 설정하는 방법을 살펴봐요.