Vault 시크릿 백엔드에 Consul Enterprise 라이선스 저장

Vault 시크릿 백엔드에 Consul Enterprise 라이선스 저장

Vault에 저장된 엔터프라이즈 라이선스를 사용하도록 Consul Helm 차트를 구성하는 방법을 설명해 드릴게요. Vault에 시크릿을 저장하고 정책을 만든 뒤, Kubernetes 인증 역할을 만들어 Helm 차트를 업데이트하는 흐름을 살펴보아요.

출처: 문서

본문

이 문서에서는 Vault에 저장된 엔터프라이즈 라이선스를 사용하도록 Consul Helm 차트를 구성하는 방법을 설명해요.

개요

Vault에 저장된 엔터프라이즈 라이선스를 사용하려면 데이터 통합(Data Integration) 섹션에 설명된 단계를 완료해 주세요.

다음 단계를 한 번 완료해 주세요:

  1. Vault에 시크릿을 저장해요.

  2. 시크릿에 원하는 수준의 접근을 허용하는 Vault 정책을 만들어요.

클러스터의 각 데이터센터에 대해 다음 단계를 반복해 주세요:

  1. 정책을 접근이 필요한 각 Kubernetes용 Consul 서비스 계정에 연결하는 Vault Kubernetes 인증 역할을 만들어요.

  2. Kubernetes용 Consul Helm 차트를 업데이트해요.

사전 요구 사항

Vault와 Kubernetes용 Consul 간의 데이터 통합을 설정하기 전에 다음이 필요해요:

  1. Vault를 시크릿 백엔드로 사용 문서의 시스템 통합(Systems Integration) 섹션을 읽고 단계를 완료했어요.

  2. Vault를 시크릿 백엔드로 사용 문서의 데이터 통합 개요(Data Integration Overview) 섹션을 읽었어요.

Vault에 시크릿 저장

먼저 Vault에 엔터프라이즈 라이선스를 저장해 주세요:

$ vault kv put secret/consul/license key="<enterprise license>"

Vault 정책 생성

다음으로 이 시크릿에 대한 읽기 접근을 허용하는 정책을 만들어야 해요.

path 리소스에서 참조하는 시크릿의 경로는 global.enterpriseLicense.secretName Helm 구성에서 구성할 값과 동일해요(Kubernetes용 Consul Helm 차트 업데이트 참조).

license-policy.hcl

path "secret/data/consul/license" {
  capabilities = ["read"]
}

vault policy write CLI 명령을 실행하여 Vault 정책을 적용해 주세요:

$ vault policy write license-policy license-policy.hcl

Consul용 Vault 인증 역할 생성

다음으로 Consul 서버와 클라이언트에 대한 Kubernetes 인증 역할을 생성해 주세요:

$ vault write auth/kubernetes/role/consul-server \
    bound_service_account_names=<Consul server service account> \
    bound_service_account_namespaces=<Consul installation namespace> \
    policies=license-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=license-policy \
    ttl=1h

Consul 서버와 클라이언트의 서비스 계정 이름을 찾으려면 Kubernetes용 Consul의 값 파일로 다음 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

Kubernetes용 Consul Helm 차트 업데이트

이제 Vault를 구성했으므로 Vault의 엔터프라이즈 라이선스를 사용하도록 Consul Helm 차트를 구성할 수 있어요:

values.yaml

global:
  image: hashicorp/consul-enterprise:1.12.0-ent
  secretsBackend:
    vault:
      enabled: true
      consulServerRole: consul-server
      consulClientRole: consul-client
  enterpriseLicense:
    secretName: secret/data/consul/enterpriselicense
    secretKey: key

global.enterpriseLicense.secretName은 Vault에 있는 시크릿의 경로라는 점에 주의해 주세요. 이 값은 Vault 정책에 포함한 경로와 같아야 해요. global.enterpriseLicense.secretKey는 시크릿 데이터 내부의 키예요. 이 값은 Vault에서 엔터프라이즈 라이선스 시크릿을 만들 때 전달한 키와 같아야 해요.

더 알아보기 (Learn more)