Vault에 저장된 스냅샷 에이전트 구성 사용

Vault에 저장된 스냅샷 에이전트 구성 사용

이 주제에서는 Consul Helm chart가 Vault에 저장된 스냅샷 에이전트 구성을 사용하도록 구성하는 방법을 설명해요. Vault에 시크릿과 정책을 저장하고, 인증 역할을 만든 뒤 Helm chart를 업데이트하는 과정을 거쳐요.

출처: 문서

본문

이 주제에서는 Consul Helm chart가 Vault에 저장된 스냅샷 에이전트 구성을 사용하도록 구성하는 방법을 설명합니다.

개요 (Overview)

Vault에 저장된 스냅샷 에이전트 구성을 사용하려면 Data Integration 섹션에 설명된 단계를 따르세요.

다음 단계를 한 번 완료하세요.

  1. 시크릿을 Vault에 저장합니다.
  2. 시크릿에 원하는 수준의 액세스를 승인하는 Vault 정책을 만듭니다.

클러스터의 각 데이터센터에 대해 다음 단계를 반복합니다.

  1. 정책을 액세스가 필요한 각 Consul on Kubernetes 서비스 계정에 연결하는 Vault Kubernetes 인증 역할을 만듭니다.
  2. Consul on Kubernetes Helm chart를 업데이트합니다.

사전 요구 사항 (Prerequisites)

Vault와 Consul on Kubernetes 사이의 데이터 통합을 설정하기 전에 다음 사전 요구 사항을 완료하세요.

  1. Vault as a Secrets Backend 문서의 Systems Integration 섹션의 단계를 읽고 완료합니다.
  2. Vault as a Secrets Backend 문서의 Data Integration Overview 섹션을 읽습니다.

Vault에 시크릿 저장

먼저 스냅샷 에이전트 구성을 Vault에 저장합니다.

$ vault kv put secret/consul/snapshot-agent-config key="<snapshot agent JSON config>"

Vault 정책 생성

다음으로 이 시크릿에 읽기 액세스를 허용하는 정책을 만들어야 합니다.

path 리소스에서 참조하는 시크릿 경로는 client.snapshotAgent.configSecret.secretName Helm 구성에서 구성할 값과 동일합니다(Update Consul on Kubernetes Helm chart 참조).

snapshot-agent-config-policy.hcl

path "secret/data/consul/snapshot-agent-config" {
  capabilities = ["read"]
}

vault policy write CLI 명령을 실행하여 Vault 정책을 적용합니다.

$ vault policy write snapshot-agent-config-policy snapshot-agent-config-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=snapshot-agent-config-policy \
    ttl=1h

예시에 없는 다른 정책이 Consul 서버 서비스 계정과 연결되어 있다면 그 정책들도 포함해야 합니다.

Consul 스냅샷 에이전트의 서비스 계정 이름을 찾으려면 Consul on Kubernetes values 파일로 다음 helm template 명령을 실행할 수 있습니다.

$ helm template --release-name ${RELEASE_NAME} -s templates/server-serviceaccount.yaml hashicorp/consul -f values.yaml

Consul on Kubernetes Helm chart 업데이트

이제 Vault를 구성했으니 Consul Helm chart가 Vault의 스냅샷 에이전트 구성을 사용하도록 구성할 수 있습니다.

values.yaml

global:
  secretsBackend:
    vault:
      enabled: true
      consulServerRole: consul-server
client:
  snapshotAgent:
    configSecret:
      secretName: secret/data/consul/snapshot-agent-config
      secretKey: key

client.snapshotAgent.configSecret.secretName은 Vault에 있는 시크릿의 경로입니다. Vault 정책에 포함한 경로와 동일해야 합니다. client.snapshotAgent.configSecret.secretKey는 시크릿 데이터 안의 키입니다. Vault에서 스냅샷 에이전트 구성 시크릿을 만들 때 전달한 키와 동일해야 합니다.

더 알아보기 (Learn more)