Vault 시크릿 백엔드에 ACL 복제 토큰 저장하기
Vault 시크릿 백엔드에 ACL 복제 토큰 저장하기 (Store ACL replication token in Vault secrets backend)
이 문서는 Vault에 저장된 ACL 복제(replication) 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 알려드릴게요. 토큰 생성부터 Vault 정책·인증 역할, Helm 차트 업데이트까지 단계별로 배울 수 있어요.
출처: 문서
본문
이 항목은 Vault에 저장된 ACL 복제 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 설명합니다.
개요 (Overview)
Vault에 저장된 ACL 복제 토큰을 사용하려면 데이터 통합(Data Integration) [/consul/docs/deploy/server/k8s/vault/data] 섹션에 설명된 단계를 따르세요.
다음 단계를 한 번 완료하세요:
- Vault에 시크릿을 저장합니다.
- 시크릿에 대한 원하는 접근 수준을 승인하는 Vault 정책을 만듭니다.
클러스터의 각 데이터센터에 대해 다음 단계를 반복하세요:
- 정책을 접근이 필요한 각 Kubernetes의 Consul 서비스 계정과 연결하는 Vault Kubernetes 인증 역할을 만듭니다.
- Kubernetes의 Consul Helm 차트를 업데이트합니다.
사전 요구 사항 (Prerequisites)
Vault와 Kubernetes의 Consul 간의 데이터 통합을 설정하기 전에 다음이 필요합니다:
- Vault를 시크릿 백엔드로 사용 [/consul/docs/deploy/server/k8s/vault] 문서의 시스템 통합(Systems Integration) [/consul/docs/deploy/server/k8s/vault/backend] 섹션을 읽고 완료했을 것.
- Vault를 시크릿 백엔드로 사용 [/consul/docs/deploy/server/k8s/vault] 문서의 데이터 통합 개요(Data Integration Overview) [/consul/docs/deploy/server/k8s/vault/data] 섹션을 읽었을 것.
Vault에 시크릿 저장 (Store the Secret in Vault)
먼저 ACL 복제 토큰을 생성하여 Vault에 저장합니다. 이 작업은 한 번만 수행하면 됩니다:
$ vault kv put secret/consul/replication-token token="$(uuidgen | tr '[:upper:]' '[:lower:]')"
Vault 정책 생성 (Create Vault policy)
다음으로 이 시크릿에 대한 읽기 접근을 허용하는 정책을 만들어야 합니다.
path 리소스에 참조된 시크릿의 경로는 global.acls.replicationToken.secretName Helm 구성에서 구성할 값과 동일합니다(Kubernetes의 Consul Helm 차트 업데이트 [/consul/docs/deploy/server/k8s/vault/data/replication-token#update-consul-on-kubernetes-helm-chart] 참조).
replication-token-policy.hcl
path "secret/data/consul/replication-token" {
capabilities = ["read"]
}
vault policy write CLI 명령을 실행하여 Vault 정책을 적용합니다:
$ vault policy write replication-token-policy replication-token-policy.hcl
Consul용 Vault 인증 역할 생성 (Create Vault Authorization Roles for Consul)
다음으로 Consul server-acl-init 작업에 대한 Kubernetes 인증 역할을 만듭니다:
$ vault write auth/kubernetes/role/consul-server-acl-init \
bound_service_account_names=<Consul server service account> \
bound_service_account_namespaces=<Consul installation namespace> \
policies=replication-token-policy \
ttl=1h
Consul 서버의 서비스 계정 이름을 알아내려면 Consul on Kubernetes values 파일로 다음 helm template 명령을 실행할 수 있습니다:
$ helm template --release-name ${RELEASE_NAME} -s templates/server-acl-init-serviceaccount.yaml hashicorp/consul
Kubernetes의 Consul Helm 차트 업데이트 (Update Consul on Kubernetes Helm chart)
이제 Vault를 구성했으므로 Vault의 ACL 복제 토큰 키를 사용하도록 Consul Helm 차트를 구성할 수 있습니다:
values.yaml
global:
secretsBackend:
vault:
enabled: true
manageSystemACLsRole: consul-server-acl-init
acls:
replicationToken:
secretName: secret/data/consul/replication-token
secretKey: token
global.acls.replicationToken.secretName은 Vault의 시크릿 경로입니다. 이 값은 Vault 정책에 포함한 경로와 동일해야 합니다. global.acls.replicationToken.secretKey는 시크릿 데이터 안의 키입니다. 이 값은 Vault에서 ACL 복제 토큰 시크릿을 만들 때 전달한 키와 동일해야 합니다.