Vault에 저장된 ACL 부트스트랩 토큰 사용

Vault에 저장된 ACL 부트스트랩 토큰 사용 (Bootstrap Token)

Vault에 저장된 ACL 부트스트랩 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 설명하는 문서예요.

출처: 문서

본문

이 주제는 Vault에 저장된 ACL 부트스트랩 토큰을 사용하도록 Consul Helm 차트를 구성하는 방법을 설명해요.

개요 (Overview)

Vault에 저장된 ACL 부트스트랩 토큰을 사용하려면 데이터 통합(Data Integration) 섹션에 설명된 단계를 따르세요.

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

  1. 시크릿을 Vault에 저장한다.
  2. 시크릿에 원하는 접근 수준을 인가하는 Vault 정책을 만든다.

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

  1. 정책을 접근이 필요한 각 Consul on Kubernetes 서비스 어카운트와 연결하는 Vault Kubernetes auth 역할을 만든다.
  2. Consul on Kubernetes Helm 차트를 업데이트한다.

사전 요구 사항 (Prerequisites)

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

  1. 시크릿 백엔드로서의 Vault의 시스템 통합(Systems Integration) 섹션의 단계를 읽고 완료한다.
  2. 시크릿 백엔드로서의 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 복제 토큰 시크릿을 만들 때 전달한 키와 동일해야 해요.

더 알아보기 (Learn more)