네임스페이스 관리하기
네임스페이스 관리하기
Vault Enterprise와 HCP Vault Dedicated 클러스터는 Vault 리소스를 보호하기 위한 추가 격리 수준을 제공하는 네임스페이스를 만들 수 있게 해 줘요. 이를 통해 Vault 관리자는 각 네임스페이스가 그룹, 조직, 애플리케이션 같은 개별 테넌트에 전용되는 Vault-as-a-Service 모델을 구현할 수 있어요.
출처: 문서
본문
Vault Enterprise와 HCP Vault Dedicated 클러스터는 Vault 리소스를 보호하기 위한 추가 격리 수준을 제공하는 네임스페이스를 만들 수 있게 해 줘요. 이를 통해 Vault 관리자는 각 네임스페이스가 그룹, 조직, 애플리케이션 같은 개별 테넌트에 전용되는 Vault-as-a-Service 모델을 구현할 수 있어요.
다음 Vault 리소스는 생성된 네임스페이스에 연결돼요.
- 정책 (Policies)
- 인증 방법 (Auth methods)
- 시크릿 엔진 (Secrets engines)
- 토큰 (Tokens)
- 아이덴티티 엔티티와 그룹 (Identity entities and groups)
HCP Vault Dedicated에서 작업할 때 최상위 네임스페이스는 admin이라고 불러요. admin 네임스페이스는 HCP Vault Dedicated 클러스터 배포 중에 생성되며, 중첩 네임스페이스를 활용하는 Vault Enterprise 클러스터와 유사한 경험을 제공해요.
HCP Vault Dedicated 클러스터에서는 HashiCorp가 플랫폼 운영을 수행하도록 root 네임스페이스가 예약돼 있어요. 자세한 내용은 HCP Vault Dedicated 제약 및 알려진 문제 페이지를 방문해 주세요.
네임스페이스 만들기
namespace 명령에 create 옵션을 사용해 네임스페이스를 만들 수 있어요.
$ vault namespace create namespaceA
Key Value
--- -----
id rXVUH
path admin/namespaceA/
네임스페이스는 admin 네임스페이스 아래에 만들어져요.
네임스페이스 나열
namespace 명령에 list 옵션을 사용해 모든 네임스페이스를 나열할 수 있어요.
$ vault namespace list
Keys
----
namespaceA/
네임스페이스에서 플러그인 활성화
인증 방법이나 시크릿 엔진 같은 플러그인을 활성화하면, 그 플러그인은 명령 플래그로 지정된 네임스페이스 또는 설정된 환경 변수에 활성화돼요.
-namespace 플래그를 전달해 플러그인이 활성화될 네임스페이스를 지정해 주세요. 네임스페이스의 전체 경로를 사용해야 해요.
$ vault auth enable -namespace=admin/namespaceA userpass
Success! Enabled userpass auth method at: userpass/
네임스페이스용 정책 작성
모든 네임스페이스는 Vault 클러스터에 대한 제한된 접근(예: 토큰 cubbyhole 접근 활성화)을 제공하는 default 정책으로 시작해요.
기본적으로 정책은 생성된 네임스페이스로 제한돼요. 즉, 두 개의 독립된 네임스페이스 namespaceA와 namespaceB가 있다면, namespaceA에서 만든 정책은 namespaceB에 대한 접근을 허용할 수 없어요. 다만 namespaceB가 namespaceA의 하위 네임스페이스라면 namespaceA에서 namespaceB에 대한 접근을 허용하는 정책을 작성할 수 있어요.
네임스페이스 정책 예시
이 정책은 어떤 네임스페이스에서든 만들 수 있지만, 생성된 네임스페이스에만 접근을 제공해요. 예를 들어 다음 정책을 namespaceA에 만들면 namespaceA에서 만든 리소스에만 접근을 허용해요.
# Admin policy
path "*" {
capabilities = ["sudo","read","create","update","delete","list","patch"]
}
특정 네임스페이스를 위해 그 네임스페이스에서 만든 정책은 추가 파라미터가 필요하지 않아요. 부모 네임스페이스(admin)에 정책을 작성하고 하위 네임스페이스(namespaceB)에 접근을 제공하려면 정책의 경로에 네임스페이스를 지정해야 해요.
부모/하위 네임스페이스 정책 예시
이 정책은 HCP Vault Dedicated 클러스터의 admin 네임스페이스에 만들어야 하며 namespaceB에 접근을 제공해요.
# Admin policy
path "namespaceB/*" {
capabilities = ["sudo","read","create","update","delete","list","patch"]
}
독립 네임스페이스와 부모/하위 네임스페이스에서 정책을 다루는 자세한 연습은 HCP Vault Dedicated 네임스페이스 고려 사항 튜토리얼을 참고해 주세요.
팁
독립 네임스페이스가 여러 개 있는 환경(예: 부모/하위 네임스페이스가 아닌 경우)에서는 여러 독립 네임스페이스 간의 시크릿 공유를 허용하는
group_policy_application_mode플래그를 활성화할 수도 있어요.
네임스페이스 간 시크릿 공유 활성화에 대한 자세한 연습은 계층 관계 없는 네임스페이스 간 시크릿 관리 튜토리얼을 참고해 주세요.
튜토리얼
자세히 알아보려면 다음 단계별 튜토리얼을 참고해 주세요.
- 네임스페이스로 멀티테넌시 (Multi-tenancy with namespaces)
- HCP Vault Dedicated 네임스페이스 고려 사항
- 계층 관계 없는 네임스페이스 간 시크릿 관리
더 알아보기 (Learn more)
- 제약 및 제한 사항 문서에서 root 네임스페이스 예약에 대해 확인해 보세요.
- HCP Vault Dedicated 소개 페이지에서
admin최상위 네임스페이스에 대해 살펴볼 수 있어요. - Vault Enterprise 네임스페이스 문서에서 네임스페이스 개념을 배워 보세요.