Vault와 상호 연관 짓기

Vault와 상호 연관 짓기

Vault Radar 에이전트가 Vault Dedicated 또는 Vault Enterprise 클러스터에 연결되면, Vault Radar는 발견 결과를 Vault에 저장된 시크릿과 상호 연관 지을 수 있어요. 이를 통해 어떤 시크릿을 순환해야 하는지 식별할 수 있어요.

출처: 문서

본문

Vault 클러스터 연결

발견 결과를 Vault와 상호 연관 짓기 전에 Radar 에이전트를 배포해야 해요. 에이전트를 배포하면 Vault를 에이전트에 구성하고 연결할 수 있어요.

사전 요구 사항

다음 Vault 인증 방법 중 하나가 필요해요.

  • Kubernetes
  • AppRole
  • Token

인증 방법은 Vault Radar 에이전트가 Vault에서 모든 KV 시크릿을 읽을 수 있게 허용하는 정책이 필요해요.

Vault 정책 만들기

Vault Radar는 다음 기능이 필요해요.

  • 토큰 검증 (self-lookup API 사용)
  • 모든 네임스페이스 나열 및 읽기
  • 각 네임스페이스의 모든 인증 방법과 마운트 나열
  • KV 시크릿 엔진 마운트의 모든 시크릿 나열
  • KV 시크릿 엔진 마운트에서 시크릿의 모든 버전 읽기

필요한 수준의 접근만 부여하는 정책은 네임스페이스와 KV 마운트를 명시적으로 지정해야 해요.

path "auth/token/lookup-self" {
    capabilities = ["read"]
}

path "sys/license/status" {
    capabilities = ["read"]
}

# Assumption: Namespaces are atmost 2 levels deep
path "sys/namespaces/*" {
    capabilities = ["read", "list"]
}

path "+/sys/namespaces/*" {
    capabilities = ["read", "list"]
}

path "+/+/sys/namespaces/*" {
    capabilities = ["read", "list"]
}

path "sys/auth" {
    capabilities = ["read"]
}

path "+/sys/auth" {
    capabilities = ["read"]
}

path "+/+/sys/auth" {
    capabilities = ["read"]
}

path "sys/mounts" {
    capabilities = ["read"]
}

path "+/sys/mounts" {
    capabilities = ["read"]
}

path "+/+/sys/mounts" {
    capabilities = ["read"]
}

# Assumption: KV secret engine mounts are atmost 2 levels deep
path "+/metadata/*" {
    capabilities = ["read", "list"]
}

path "+/+/metadata/*" {
    capabilities = ["read", "list"]
}

path "+/+/+/metadata/*" {
    capabilities = ["read", "list"]
}

path "+/+/+/+/metadata/*" {
    capabilities = ["read", "list"]
}

path "+/data/*" {
    capabilities = ["read"]
}

path "+/+/data/*" {
    capabilities = ["read"]
}

path "+/+/+/data/*" {
    capabilities = ["read"]
}

path "+/+/+/+/data/*" {
    capabilities = ["read"]
}

제약이 덜한 환경에서는 Vault Radar에 더 넓은 권한을 부여할 수 있어요.

Vault 클러스터에 광범위한 접근을 부여하는 간단한 정책.

path "*" {
    capabilities = ["read", "list"]
}

Vault를 사용한 에이전트 구성

HCP 포털의 Vault Radar 모듈에서 Vault 클러스터를 설정하고 관리하세요. Settings를 선택한 다음 Secret Managers를 선택하고 Connect new secret manager를 클릭하세요.

  • Vault와 Vault 배포 유형을 선택하세요.
  • Vault 클러스터 URL을 제공하세요.
  • 인증 방법을 선택하고 양식의 세부 정보를 채운 다음 연결을 검증하려면 Next를 선택하세요.

Kubernetes 인증 방법을 사용하면 Vault Radar가 Kubernetes 서비스 계정을 사용해 Vault에 인증할 수 있어요. 에이전트를 Kubernetes 클러스터에서 실행한다면 이 방법을 사용하세요.

  • Vault Kubernetes 인증 방법 문서를 여기에서 따르세요.
  • <your_cluster_host>와 <ca_cert>를 클러스터 세부 정보로 바꾸세요.
vault write auth/kubernetes/config \
 kubernetes_host=https://<your_cluster_host> \
 kubernetes_ca_cert=@<ca_cert> \
 disable_local_ca_jwt=true
  • Kubernetes 서비스 계정을 Vault 역할에 바인딩하세요. <role_name>, <service_account_name>, <namespace>를 설정 세부 정보로 바꾸세요.
vault write auth/kubernetes/role/<role_name> \
  bound_service_account_names=<service_account_name> \
  bound_service_account_namespaces=<namespace> \
  policies=<vault_policy>
  • Vault Radar 에이전트 구성에서 Authentication Method를 Kubernetes로 설정하고, Kubernetes 역할을 구성한 Authentication Path와 Role Name을 입력하세요.

AppRole 인증 방법은 Kubernetes에서 실행되지 않는 시스템에 적합하며 유연한 프로그래밍 방식 접근을 가능하게 해요.

Vault 클러스터에 대한 AppRole Auth Method 프로세스를 여기에서 따르세요. 설정 후 Vault에 생성된 AppRole 역할 ID와 시크릿 ID가 생겨요.

  • AppRole을 만들고 <role_name>을 설정 세부 정보로 바꾸세요.
vault write auth/approle/role/<role_name> policies=<vault_policy>
  • 역할 ID와 시크릿 ID를 검색하세요.
vault read auth/approle/role/<role_name>/role-id
vault write -f auth/approle/role/<role_name>/secret-id
  • 역할 ID와 시크릿 ID를 에이전트용 환경 변수로 저장하세요.
export VAULT_ROLE_ID=<role_id>
export VAULT_SECRET_ID=<secret_id>
  • UI에서 App Role 인증 방법을 선택하고 인증 경로와 역할 ID, 시크릿 ID 환경 변수를 입력하세요.

토큰 기반 방법은 Vault가 생성한 토큰을 인증에 사용해요. 이 방법은 비교적 간단하고 사용하기 쉬워요.

  • 여기의 단계를 따라 유효한 Vault 토큰을 생성하세요.
  • 토큰을 에이전트용 환경 변수로 설정하세요.
$export VAULT_TOKEN=<vault_token>
  • UI에서 Authentication method로 Token을 선택한 다음 방금 구성한 환경 변수를 입력하세요. (예: env://VAULT_TOKEN).

더 알아보기 (Learn more)