Vault backend storage용 Etcd 구성

Vault backend storage용 Etcd 구성

Etcd storage backend는 Vault의 데이터를 Etcd에 영구 저장하는 데 사용됩니다. v2와 v3 Etcd API를 모두 지원하며, 버전은 Etcd 클러스터의 버전에 따라 자동으로 감지됩니다.

출처: 문서

본문

Etcd v2 API는 Etcd v3.5 출시와 함께 더 이상 사용되지 않으며 Etcd v3.6에서 제거될 예정입니다. Vault 1.10에서는 Vault에서 제거됩니다. Etcd storage backend 사용자는 Vault 1.10으로 업그레이드하기 전에 Vault storage를 Etcd v3 클러스터로 마이그레이션할 준비를 해야 합니다. 모든 storage 마이그레이션은 마이그레이션 전에 백업을 받아야 합니다.

  • 고가용성 – Etcd storage backend는 고가용성을 지원합니다. v2 API에는 HA 지원에 알려진 문제가 있으며 HA 시나리오에서 사용해서는 안 됩니다.
  • 커뮤니티 지원 – Etcd storage backend는 CoreOS가 지원합니다. HashiCorp 직원의 검토를 거쳤지만 기술에 대해 그렇게 잘 알지 못할 수 있습니다. 문제가 발생하면 원저자에게 문의하도록 안내받을 수 있습니다.
storage "etcd" {
  address  = "http://localhost:2379"
  etcd_api = "v3"
}

etcd 파라미터

  • address (string: "http://localhost:2379") – Etcd 인스턴스의 주소를 쉼표로 구분된 목록으로 지정합니다. 환경 변수 ETCD_ADDR로도 제공할 수 있습니다.

  • discovery_srv (string: "example.com") - 클러스터 엔드포인트를 설명하는 SRV 레코드를 조회할 도메인 이름을 지정합니다. 환경 변수 ETCD_DISCOVERY_SRV로도 제공할 수 있습니다.

  • discovery_srv_name (string: "vault") - 클러스터 엔드포인트를 설명하는 SRV 레코드를 조회할 때 사용할 서비스 이름을 지정합니다. 환경 변수 ETCD_DISCOVERY_SRV_NAME으로도 제공할 수 있습니다.

  • etcd_api (string: "<varies>") – 통신할 API의 버전을 지정합니다. 기본적으로 자동으로 파생됩니다. 클러스터 버전이 3.1 이상이고 v2 API로 기록된 데이터가 없다면 자동 감지 기본값은 v3입니다.

  • ha_enabled (string: "false") – 고가용성을 활성화할지 여부를 지정합니다. 환경 변수 ETCD_HA_ENABLED로도 제공할 수 있습니다.

  • path (string: "/vault/") – Vault 데이터가 저장될 Etcd의 경로를 지정합니다.

  • sync (string: "true") – 시작 시 사용 가능한 Etcd 서비스 목록을 동기화할지 여부를 지정합니다. 부울 값으로 강제 변환되는 문자열입니다. 클러스터가 프록시 서버 뒤에 있고 동기화로 Vault가 실패한다면 false로 설정하는 것이 좋을 수 있습니다.

  • username (string: "") – Etcd 서버로 인증할 때 사용할 사용자 이름을 지정합니다. 환경 변수 ETCD_USERNAME으로도 제공할 수 있습니다.

  • password (string: "") – Etcd 서버로 인증할 때 사용할 비밀번호를 지정합니다. 환경 변수 ETCD_PASSWORD로도 제공할 수 있습니다.

  • tls_ca_file (string: "") – Etcd 통신에 사용되는 CA 인증서의 경로를 지정합니다. 지정하지 않으면 시스템 번들로 기본 설정됩니다.

  • tls_cert_file (string: "") – Etcd 통신을 위한 인증서의 경로를 지정합니다.

  • tls_key_file (string: "") – Etcd 통신을 위한 개인 키의 경로를 지정합니다.

  • request_timeout (string: "5s") – etcd에 대한 요청의 타임아웃을 지정합니다. 내부 재시도가 있어도 대부분의 경우 5초로 충분합니다.

  • lock_timeout (string: "15s") – 마스터 Vault 인스턴스의 잠금 타임아웃을 지정합니다. 더 빠른 복구가 필요 없다면 더 큰 값을 설정하세요.

  • max_receive_size (int) – 클라이언트 측 응답 수신 한도를 지정합니다. "max_receive_size" >= 서버 측 기본 send/recv 한도인지 확인하세요. (etcd에 대한 "--max-request-bytes" 플래그 또는 "embed.Config.MaxRequestBytes").

  • max_send_size (int) – 클라이언트 측 요청 전송 한도(바이트)를 지정합니다. "max_send_size" < 서버 측 기본 send/recv 한도인지 확인하세요. (etcd에 대한 "--max-request-bytes" 플래그 또는 "embed.Config.MaxRequestBytes").

etcd 예시

클러스터 멤버의 DNS 검색

이 예시는 DNS Discovery protocol 문서에 설명된 대로 SRV 레코드를 통해 Etcd 클러스터 멤버를 검색하도록 Vault를 구성합니다.

storage "etcd" {
  discovery_srv = "example.com"
}

사용자 지정 인증

이 예시는 사용자 이름과 비밀번호를 사용해 Etcd 클러스터에 연결하는 방법을 보여줍니다.

storage "etcd" {
  username = "user1234"
  password = "pass5678"
}

사용자 지정 경로

이 예시는 사용자 지정 경로에 데이터를 저장하는 방법을 보여줍니다.

storage "etcd" {
  path = "my-vault-data/"
}

고가용성 활성화

이 예시는 Etcd storage backend에 대해 고가용성을 활성화하는 방법을 보여줍니다.

api_addr = "https://vault-leader.my-company.internal"

storage "etcd" {
  ha_enabled    = "true"
  ...
}

더 알아보기