Vault에 저장된 gossip 암호화 키 사용
Vault에 저장된 gossip 암호화 키 사용 (Use a gossip encryption key stored in Vault)
이 주제에서는 Vault에 저장된 gossip 암호화 키를 사용하도록 Consul Helm 차트를 구성하는 방법을 설명해요.
출처: 문서
본문
이 주제에서는 Vault에 저장된 gossip 암호화 키를 사용하도록 Consul Helm 차트를 구성하는 방법을 설명합니다.
개요 (Overview)
Vault에 저장된 gossip 암호화 키를 사용하려면 Data Integration 섹션에 설명된 단계를 완료하세요.
다음 단계는 한 번 완료하세요:
- 시크릿을 Vault에 저장합니다.
- 시크릿에 원하는 수준의 액세스를 인가하는 Vault 정책을 만듭니다.
클러스터의 각 데이터센터에 대해 다음 단계를 반복합니다:
- 정책을 액세스가 필요한 각 Consul on Kubernetes 서비스 계정에 연결하는 Vault Kubernetes auth 역할을 만듭니다.
- Consul on Kubernetes Helm 차트를 업데이트합니다.
사전 요구 사항 (Prerequisites)
Vault와 Consul on Kubernetes 간의 데이터 통합을 설정하기 전에 다음이 필요합니다:
- Vault as a Secrets Backend의 Systems Integration 섹션의 단계를 읽고 완료합니다.
- Vault as a Secrets Backend의 Data Integration Overview 섹션을 읽습니다.
Vault에 시크릿 저장 (Store the Secret in Vault)
먼저 gossip 키를 생성하여 Vault에 저장합니다. 이 작업은 한 번만 수행하면 됩니다:
$ vault kv put secret/consul/gossip key="$(consul keygen)"
Vault 정책 만들기 (Create Vault policy)
다음으로 이 시크릿에 대한 읽기 액세스를 허용하는 정책을 만듭니다.
path 리소스에 참조된 시크릿의 경로는 global.gossipEncryption.secretName Helm 구성에서 구성할 값과 동일합니다(Update Consul on Kubernetes Helm chart 참조).
gossip-policy.hcl
path "secret/data/consul/gossip" {
capabilities = ["read"]
}
vault policy write CLI 명령을 실행하여 Vault 정책을 적용합니다:
$ vault policy write gossip-policy gossip-policy.hcl
Consul을 위한 Vault 인가 역할 만들기 (Create Vault Authorization Roles for Consul)
다음으로 Consul 서버와 클라이언트에 대한 Kubernetes auth 역할을 만듭니다:
$ vault write auth/kubernetes/role/consul-server \
bound_service_account_names=<Consul server service account> \
bound_service_account_namespaces=<Consul installation namespace> \
policies=gossip-policy \
ttl=1h
$ vault write auth/kubernetes/role/consul-client \
bound_service_account_names=<Consul client service account> \
bound_service_account_namespaces=<Consul installation namespace> \
policies=gossip-policy \
ttl=1h
Consul 서버와 클라이언트의 서비스 계정 이름을 찾으려면 Consul on Kubernetes values 파일로 다음 helm template 명령을 실행할 수 있습니다:
- Consul 서버 서비스 계정 이름 생성
$ helm template --release-name ${RELEASE_NAME} -s templates/server-serviceaccount.yaml hashicorp/consul -f values.yaml
- Consul 클라이언트 서비스 계정 이름 생성
$ helm template --release-name ${RELEASE_NAME} -s templates/client-serviceaccount.yaml hashicorp/consul -f values.yaml
Consul on Kubernetes Helm 차트 업데이트 (Update Consul on Kubernetes Helm chart)
이제 Vault를 구성했으므로 Vault의 gossip 키를 사용하도록 Consul Helm 차트를 구성할 수 있습니다:
values.yaml
global:
secretsBackend:
vault:
enabled: true
consulServerRole: consul-server
consulClientRole: consul-client
gossipEncryption:
secretName: secret/data/consul/gossip
secretKey: key
global.gossipEncryption.secretName은 Vault의 시크릿 경로입니다. 이는 Vault 정책에 포함할 경로와 동일해야 합니다. global.gossipEncryption.secretKey는 시크릿 데이터 내부의 키입니다. 이는 Vault에서 gossip 시크릿을 만들 때 전달한 키와 동일해야 합니다.