Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- hashicorp
- key/value
- 통합 풀 백업
- 시스템
- vault agent
- IAC
- secret engines
- SHR
- kv
- SSH OTP
- devops
- Role
- Vault
- 파일시스템
- 백업
- 차분 백업
- DATA 백업
- VIRT
- 커널 파라미터
- Secret Engine
- 구성관리
- REST API
- auth methods
- backend storage
- 앤서블
- 리눅스
- 유닉스
- 인프라
- 자동화
- 전체 백업
Archives
- Today
- Total
클라우드 아카이브
[vault] Namespace 개념과 특징 및 실습 본문
Cloud Native Solution/[Hashicorp] Vault
[vault] Namespace 개념과 특징 및 실습
Cloud Engineer 2022. 9. 11. 17:38반응형
0. 개요
실제 회사에서 Vault를 운영하며 조직 구조 변경 혹은 입사자/퇴사자 관리 등을 효과적으로 하기 위해서 각 조직 별 및 서비스 별로 Vault를 별도 구성 및 관리하는 니즈가 발생하게됩니다.(이른바 멀티 테넌트 방식) Vault에서는 이러한 니즈를 충족시키고자 Namespace라는 기능을 개발했으며, 본 컴포넌트를 활용하여 급변하는 비즈니스 환경에 맞춰 시스템 구성을 다변화하도록 지원해줍니다. 본 포스팅에서는 Namespace에 대한 개념 및 특징과 이를 직접 구현해보겠습니다.
1. Namespace란
"Vaults within a Vault"
단일 Vault 서버에 여러 개의 논리적인 그룹으로 나누어 서비스를 제공할 수 있도록 해주는 기능
- Vault 서버를 여러 개의 논리적인 환경으로 구성하여 운영 (멀티 테넌트 방식)
- Kubernetes의 namespace와 동일한 메커니즘
2. Namespace 특징 : Login Path, Auth Method 및 Data 등을 별도 관리
- Namespace로 별도 구성 가능한 컴포넌트는 하기와 같음
- Policies
- Auth Methods
- Secrets Engines
- Tokens
- Identity entities and groups
3. 실습
DevOps팀에 쿠버네티스 클러스터 관리 파트와 배포 파트가 나누어졌다고 가정
3-1. 구성도
3-2. 실습
3-2-1. 위 환경에 맞춰 Vault Namespace를 구성
# DevOps팀 구성
$ vault namespace create devops
# 파트 구성
$ vault namespace create -namespace=devops k8s-cluster
$ vault namespace create -namespace=devops deployment
3-2-2. 각 namespace에 적용할 policy 작성
1. 데브옵스(devops) 팀 policy 작성
- 가정 : Vault 관리자는 DevOps에 소속되어 Chlid Namespace인 k8s-cluster 및 deployment 관련 전체 권한을 보유
# vault_policy_devops.hcl
path "devops/k8s-cluster/*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "devops/deployment/*" {
capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
2. 쿠버네티스 클러스터 관리(k8s-cluster) 파트 policy 작성
- 가정 : 클러스터 관리자가 오픈스택 혹은 k8s 노드 접속 secrets 관련 전체 권한을 보유
# vault_policy_k8s-cluster.hcl
# Manage SSH OTP Access to k8s nodes
path "ssh-otp-k8s/*" {
capabilities = ["read", "list", "update"]
}
# Manage signed RSA Access to openstack nodes
path "ssh-signed-rsa-openstack/*" {
capabilities = ["read", "list", "update"]
}
3. 배포 관리(deployment) 파트 policy 작성
- 가정 : 배포 관리자는 오픈스택 혹은 k8s 노드 접속 secrets 읽기 권한만 보유
# vault_policy_deployment.hcl
# Manage SSH OTP Access to k8s nodes
path "ssh-otp-k8s/*" {
capabilities = ["read", "list"]
}
# Manage signed RSA Access to openstack nodes
path "ssh-signed-rsa-openstack/*" {
capabilities = ["read", "list"]
}
3-2-3. 각 Namespace에 policy 적용
$ vault policy write -namespace=devops devops_policy vault_policy_devops.hcl
$ vault policy write -namespace=devops/k8s-cluster k8s-cluster_policy vault_policy_k8s-cluster.hcl
$ vault policy write -namespace=devops/deployment deployment_policy vault_policy_deployment.hcl
4. 마무리
Vault의 기능인 Namespace의 개념과 특징 및 실습을 진행했습니다. 엔터프라이즈 환경에서 조직/IT 서비스 별로 Vault Namespace를 나누어 구성함으로써 운영의 효율성을 높일 수 있습니다. 다음 포스팅에서는 Vault의 Audit Device 기능을 다뤄보겠습니다.
'Cloud Native Solution > [Hashicorp] Vault' 카테고리의 다른 글
[Hashicorp][HA] Vault Raft 클러스터 구성 (0) | 2022.08.27 |
---|---|
[Vault] Vault 개념/구성/작동원리 (0) | 2022.08.23 |
[Vault][Secret Engine] SSH - OTP 구성 방식 (0) | 2022.08.19 |
Comments