Vault에 저장된 ACL 부트스트랩 토큰 사용
Vault에 저장된 ACL 부트스트랩 토큰 사용 (Bootstrap Token)
Vault에 저장된 ACL 부트스트랩 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 설명하는 문서예요.
출처: 문서
본문
이 주제는 Vault에 저장된 ACL 부트스트랩 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 설명해요.
개요 (Overview)
Vault에 저장된 ACL 부트스트랩 토큰을 사용하려면 데이터 통합(Data Integration) 섹션에 설명된 단계를 따르세요.
다음 단계를 한 번 완료해요:
- 시크릿을 Vault에 저장한다.
- 시크릿에 원하는 접근 수준을 인가하는 Vault 정책을 만든다.
클러스터의 각 데이터센터에 대해 다음 단계를 반복해요:
- 정책을 접근이 필요한 각 Consul on Kubernetes 서비스 어카운트와 연결하는 Vault Kubernetes auth 역할을 만든다.
- Consul on Kubernetes Helm 차트를 업데이트한다.
사전 요구 사항 (Prerequisites)
Vault와 Consul on Kubernetes 사이의 데이터 통합을 설정하기 전에 다음이 필요해요:
- 시크릿 백엔드로서의 Vault의 시스템 통합(Systems Integration) 섹션의 단계를 읽고 완료한다.
- 시크릿 백엔드로서의 Vault의 데이터 통합 개요(Data Integration Overview) 섹션을 읽는다.
Vault에 시크릿 저장 (Store the Secret in Vault)
먼저 ACL 부트스트랩 토큰을 생성하고 Vault에 저장해요. 이 작업은 한 번만 수행하면 돼요:
$ vault kv put secret/consul/bootstrap-token token="$(uuidgen | tr '[:upper:]' '[:lower:]')"
Vault 정책 만들기 (Create Vault policy)
다음으로 이 시크릿에 대한 읽기 접근을 허용하는 Vault 정책을 만들어야 해요.
path 리소스에서 참조되는 시크릿의 경로는 global.acls.bootstrapToken.secretName Helm 구성에서 구성할 값과 동일해요(Consul on Kubernetes Helm 차트 업데이트 참고).
bootstrap-token-policy.hcl
path "secret/data/consul/bootstrap-token" {
capabilities = ["read"]
}
vault policy write CLI 명령을 실행해 Vault 정책을 적용해요:
$ vault policy write bootstrap-token-policy bootstrap-token-policy.hcl
Consul용 Vault 인가 역할 만들기 (Create Vault Authorization Roles for Consul)
다음으로 Consul 서버 statefulset의 일부로 실행되는 Consul server-acl-init 컨테이너에 대한 Kubernetes auth 역할을 만들어요:
$ 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=bootstrap-token-policy \
ttl=1h
Consul server-acl-init 작업의 서비스 어카운트 이름(즉 Consul 서버 서비스 어카운트 이름)을 찾으려면 Consul on Kubernetes 값 파일로 다음 helm template 명령을 실행할 수 있어요:
$ helm template --release-name ${RELEASE_NAME} -s templates/server-acl-init-serviceaccount.yaml hashicorp/consul -f values.yaml
Consul on Kubernetes 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:
bootstrapToken:
secretName: secret/data/consul/bootstrap-token
secretKey: token
global.acls.bootstrapToken.secretName이 Vault의 시크릿 경로라는 점을 참고하세요. 이것은 Vault 정책에 포함한 경로와 동일해야 해요. global.acls.bootstrapToken.secretKey는 시크릿 데이터 안의 키로, Vault에서 ACL 복제 토큰 시크릿을 만들 때 전달한 키와 동일해야 해요.