Vault 프록시를 API 프록시로 사용하기

Vault 프록시를 API 프록시로 사용하기

Vault 프록시의 API 프록시 기능을 사용하면 Vault 프록시의 API를 Vault API의 프록시로 활용할 수 있습니다.

기능

Vault 프록시의 listener 스탠자는 Vault 프록시의 리스너를 구성합니다. 이 리스너의 role이 metrics_only로 설정되어 있지 않으면, 프록시의 vault 스탠자에 구성된 Vault 서버의 프록시 역할을 하게 됩니다. 이를 통해 Vault 프록시 API에서 Vault API에 접근할 수 있으며, 아래에서 설명하듯이 이 요청에 자동 인증 토큰을 선택적으로(또는 강제로) 사용하도록 구성할 수 있습니다.

cache 스탠자와 함께 listener가 구성된 경우, API 프록시는 요청을 Vault로 전달하기 전에 먼저 자격이 되는 요청에 대해 캐시 하위 시스템을 활용하려 시도합니다. 캐싱에 대한 자세한 내용은 캐싱 문서를 참고하세요.

자동 인증 토큰 사용하기

Vault 프록시는 다양한 환경에서 자동 인증(auto-auth)을 사용해 Vault에 쉽게 인증할 수 있게 해 줍니다. 아래의 use_auto_auth_token 구성을 설정하면, 클라이언트는 프록시에 보내는 요청에 Vault 토큰을 직접 제공할 필요가 없어집니다. 이 구성을 설정하면 요청에 이미 토큰이 없는 경우, 자동 인증 토큰이 Vault 서버로의 요청 전달에 사용됩니다. 이 구성은 요청에 이미 토큰이 붙어 있다면 무시되며, 그 경우에는 요청에 포함된 토큰이 Vault 서버에 요청을 전달하는 데 사용됩니다.

자동 인증 토큰 강제하기

Vault 프록시는 use_auto_auth_token 옵션에 force 값을 사용해 자동 인증 토큰 사용을 강제하도록 구성할 수 있습니다. 이 구성은 위의 자동 인증 토큰 사용하기에 설명된 기본 동작을 대체하며, 요청에 존재하는 기존 Vault 토큰을 무시하고 자동 인증 토큰을 사용합니다.

구성 (api_proxy)

최상위 api_proxy 블록에는 다음과 같은 구성 항목이 있습니다.

  • use_auto_auth_token (bool/string: false) — 설정하면, Vault 토큰이 없는 프록시로의 요청이 자동 인증 토큰을 붙여 Vault 서버로 전달됩니다. 요청에 이미 토큰이 있다면 이 구성은 무시되고 요청의 토큰이 Vault 서버에 요청을 전달하는 데 사용됩니다. "force"로 설정하면 프록시는 자동 인증 토큰을 사용하며, 설정된 Vault 토큰이 있다면 덮어씁니다.

    팁 — use_auto_auth_token 구성으로 프록시의 자동 인증 토큰을 사용할 때는 애플리케이션당 프록시 하나를 두는 것을 강력히 권장합니다. 단일 프록시를 통해 여러 애플리케이션에서 온 요청을 Vault가 구분할 수 없기 때문입니다. 여러 애플리케이션이 프록시를 공유하는 상황에서는 use_auto_auth_token을 false(기본값)로 설정하는 것을 권장합니다.

  • prepend_configured_namespace (bool: false) — 설정하면, 프록시에 네임스페이스가 구성된 경우(예: Vault 스탠자를 통해), Vault로 프록시되는 모든 요청에 구성된 네임스페이스가 네임스페이스 헤더 앞에 붙습니다. 프록시의 네임스페이스가 ns1로 설정되고 프록시가 네임스페이스 ns2가 붙은 요청을 받으면, 그 요청은 ns1/ns2 네임스페이스로 전달됩니다. 마찬가지로 네임스페이스가 없는 요청을 받으면 ns1 네임스페이스로 전달됩니다. 본질적으로, 프록시되는 모든 요청은 구성된 네임스페이스 또는 그 하위 네임스페이스로 가야 한다는 뜻입니다.

다음 두 api_proxy 옵션은 Vault Enterprise 클러스터에 요청할 때만 유용하며, 해당 Eventual Consistency 페이지의 일부로 문서화되어 있습니다.

  • enforce_consistency (string: "never") — "always" 또는 "never" 중 하나로 설정합니다.
  • when_inconsistent (string: optional) — "fail", "retry", 또는 "forward" 중 하나로 설정합니다.

예시 구성

다음은 단일 애플리케이션 전용 프록시에 대해 use_auto_auth_token 강제와 일관성(consistency) 강제를 위해 api_proxy 구성과 함께 구성된 listener의 예시입니다.

# 다른 Vault 프록시 구성 블록
# ...

api_proxy {
  use_auto_auth_token = "force"
  enforce_consistency = "always"
}

listener "unix" {
    address = "/var/run/vault-proxy.sock"
}

출처: 문서