Vault Agent를 API 프록시로 사용하기
Vault Agent를 API 프록시로 사용하기
이 페이지에서는 Vault Agent의 API를 Vault API의 프록시로 사용하는 Vault Agent의 API 프록시 기능에 대해 설명합니다. 다만 이 기능은 폐기(deprecated)되었으므로, 새 작업에는 Vault Proxy를 사용하시길 권합니다.
출처: 문서
본문
폐기 공지
폐기된 기능은 동작하지만 결국 제거·교체될 예정입니다. 마이그레이션 세부 사항과 폐기 프로세스 정보는 폐기 공지 페이지를 참조하세요.
Vault Agent의 API 프록시 기능을 사용하면 Vault Agent의 API를 Vault API의 프록시로 사용할 수 있습니다.
Vault Proxy 사용하기
정적 시크릿 캐싱(KVv1 및 KVv2)과 API 프록시를 함께 쓰면 Vault로 전달되는 요청 수를 최소화할 수 있습니다. Vault Agent는 API 프록시와 함께 정적 시크릿 캐싱을 지원하지 않습니다. API 프록시 워크플로우에는 Vault Proxy를 사용하시길 권합니다.
기능 (Functionality)
Vault Agent의 listener 스탠자는 Vault Agent용 리스너를 구성합니다. 그 role이 metrics_only로 설정되지 않으면, Vault Agent의 vault 스탠자에 구성된 Vault 서버의 프록시 역할을 합니다. 이를 통해 Agent API에서 Vault API에 접근할 수 있고, 아래 설명처럼 이 요청들에 대해 auto-auth 토큰의 자동 사용을 선택적으로 허용하거나 강제할 수 있습니다.
listener가 cache 스탠자와 함께 구성되면 API 프록시는 요청을 Vault로 전달하기 전에 먼저 해당 요청에 적합한 경우 캐시 하위 시스템을 활용하려고 시도합니다. 캐싱에 대한 자세한 내용은 캐싱 문서를 참조하세요.
auto-auth 토큰 사용하기
Vault Agent는 auto-auth를 사용해 다양한 환경에서 Vault에 쉽게 인증할 수 있게 해 줍니다. use_auto_auth_token(아래 참조) 구성을 설정하면 클라이언트는 Agent에 보내는 요청에 Vault 토큰을 제공할 필요가 없습니다. 이 구성이 설정되면 요청에 이미 토큰이 없을 때 auto-auth 토큰을 사용해 요청을 Vault 서버로 전달합니다. 이 구성은 요청에 이미 토큰이 붙어 있으면 덮어써지며, 이 경우 요청에 있는 토큰을 사용해 요청을 Vault 서버로 전달합니다.
auto-auth 토큰 강제하기
Vault Agent는 use_auto_auth_token 옵션에 force 값을 사용해 auto-auth 토큰 사용을 강제하도록 구성할 수 있습니다. 이 구성은 위 auto-auth 토큰 사용하기에서 설명한 기본 동작을 덮어쓰고, 요청의 기존 Vault 토큰은 무시하고 auto-auth 토큰을 사용합니다.
구성 (api_proxy)
최상위 api_proxy 블록에는 다음과 같은 구성 항목이 있습니다.
use_auto_auth_token(bool/string: false)— 설정하면 Vault 토큰 없이 Agent에 보내진 요청이 auto-auth 토큰을 붙여 Vault 서버로 전달됩니다. 요청에 이미 토큰이 있으면 이 구성은 덮어써지고 요청의 토큰이 사용되어 Vault 서버로 전달됩니다."force"로 설정하면 Agent는 auto-auth 토큰을 사용하며, 붙어 있는 Vault 토큰이 있으면 덮어씁니다.
다음 두 api_proxy 옵션은 Vault Enterprise 클러스터에 요청을 보낼 때만 유용하며, 그 Eventual Consistency 페이지의 일부로 문서화되어 있습니다.
enforce_consistency(string: "never")—"always"또는"never"중 하나로 설정합니다.when_inconsistent(string: optional)—"fail","retry","forward"중 하나로 설정합니다.
예시 구성
auto_auth 토큰 사용을 강제하고 일관성을 보장하도록 api_proxy 구성과 함께 listener 구성을 예시로 든 것입니다.
# Other Vault agent configuration blocks
# ...
api_proxy {
use_auto_auth_token = "force"
enforce_consistency = "always"
}
listener "tcp" {
address = "127.0.0.1:8100"
tls_disable = true
}