tls 구성 블록
tls 구성 블록 (TLS Configuration Block)
이 페이지는 Nomad 에이전트 구성의 tls 블록에서 보안 통신을 구성하는 방법에 대한 참조 정보를 제공해요. Raft 트래픽과 RPC·HTTP 엔드포인트에 TLS를 활성화해요. TLS 암호 스위트와 인증서·키 파일 경로를 추가해요. TLS 버전을 지정해요. 모든 수신 HTTPS 요청에 클라이언트 인증서를 요구하고, 모든 발신 TLS 연결에서 서버 이름을 검증해요.
출처: 문서
본문
참고 — Nomad 문서는 TLS와 mTLS 사이에서 모호할 수 있는 경우를 제외하고 이 통신을 지칭할 때 "TLS"라는 용어를 사용해요.
tls {
http = true
rpc = true
}
TLS 구성이 올바르지 않으면 Nomad 에이전트가 시작되지 않을 수 있어요.
이 문서 섹션은 tls 블록의 구성 옵션만 다뤄요. 인증서 자체를 설정하는 방법을 이해하려면 Enable TLS Encryption for Nomad 튜토리얼을 참고해요.
tls 매개변수 (Parameters)
-
ca_file(string: "")— Nomad의 TLS 통신에 사용할 CA 인증서의 경로를 지정해요. -
cert_file(string: "")— Nomad의 TLS 통신에 사용할 인증서 파일의 경로를 지정해요. -
key_file(string: "")— Nomad의 TLS 통신에 사용할 키 파일의 경로를 지정해요. -
http(bool: false)— API를 포함한 Nomad 에이전트의 HTTP 엔드포인트에 TLS를 활성화할지 지정해요. 기본적으로 이것은 비상호(mutual) TLS예요.verify_https_client=true로 설정하면 mTLS로 업그레이드할 수 있지만, 브라우저에서 mTLS를 요구하거나 Nomad UI 앞에서 프록시를 실행해야 하므로 Nomad UI 사용이 복잡해질 수 있어요. -
rpc(bool: false)— RPC 엔드포인트와 Raft 트래픽에서 mTLS를 활성화하는 옵션을 전환해요. 이 설정이 활성화되면 Nomad 서버 간, 그리고 클라이언트에서 서버로의 보호가 모두 확립되어 상호 인증을 보장해요. Nomad의 안전한 운영에는rpc=true로 설정하는 것이 필요해요. -
rpc_upgrade_mode(bool: false)— 이 옵션은 클러스터가 TLS로 업그레이드되는 동안에만 사용하고, 마이그레이션이 완료된 후에는 제거해야 해요. 이 옵션은 에이전트가 TLS와 평문 트래픽을 모두 수락할 수 있게 해줘요. -
tls_cipher_suites(string: "")— 에이전트가 사용할 TLS 암호 스위트를 쉼표로 구분된 문자열로 지정해요. 알려진 안전하지 않은 암호(3DES와 RC4)는 비활성화돼요. 기본적으로 에이전트는 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256를 사용하도록 구성돼요. Nomad는 Go 팀이 현대적 TLS 구성을 위한 널리 수용된 Mozilla Security/Server Side TLS 지침과 일치하는 특정 암호 집합을 지정했기 때문에 TLS 1.3에는 명시적 암호 스위트 구성을 허용하지 않아요.경고 — TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256 같은 안전하지 않은 암호 스위트의 사용은 이제 지원되지 않아요.
-
tls_min_version(string: "tls12")— 지원되는 최소 TLS 버전을 지정해요. 허용 값은 "tls10", "tls11", "tls12", "tls13"이에요. -
verify_https_client(bool: false)— 에이전트가 모든 수신 HTTPS 요청에 클라이언트 인증서를 요구하도록 지정해, tls.http=true를 mTLS로 효과적으로 업그레이드해요. 클라이언트 인증서는 Nomad와 같은 CA로 서명되어야 해요. 기본적으로verify_https_client는 false로 설정되며, ACL이 활성화되어 있는 한 안전해요. 클라이언트 인증서를 브라우저에 배포하는 어려움을 피하려면 Nomad 웹 UI를 사용할 때 이 옵션을 권장해요. -
verify_server_hostname(bool: false)— 발신 TLS 연결이 서버의 호스트네임을 검증해야 하는지 지정해요.
tls 예시 (Examples)
다음 예시는 tls 블록만 보여줘요. tls 블록은 위에 나열된 배치 위치에서만 유효하다는 점을 기억하세요.
TLS 활성화 (Enabling TLS)
이 예시는 TLS 구성을 활성화하는 방법을 보여줘요. 기본 시스템 CA 번들과 인증서를 사용해 모든 서버와 클라이언트 간에 mTLS 통신을 활성화해요.
tls {
http = true
rpc = true
ca_file = "/etc/certs/ca.crt"
cert_file = "/etc/certs/nomad.crt"
key_file = "/etc/certs/nomad.key"
}
tls 구성 리로드 (tls Configuration Reloads)
Nomad는 클라이언트와 서버 TLS 구성을 모두 동적으로 리로드하는 것을 지원해요. 에이전트의 TLS 구성을 리로드하려면 먼저 에이전트 구성 파일에서 TLS 블록을 업데이트한 다음 Nomad 에이전트에 SIGHUP 신호를 보내요. 참고로 이것은 TLS 구성을 포함한 구성 파일의 일부만 리로드해요.
SIGHUP을 통한 구성 리로드 중에 TLS 구성에 변경 사항이 있으면 에이전트는 모든 네트워크 연결을 리로드해요. 새로 수립된 연결은 업데이트된 구성을 사용하고, 기존의 미결 연결은 닫힐 거예요. 이 과정은 TLS로 업그레이드할 때, TLS에서 다운그레이드할 때, 그리고 인증서 롤링 때 모두 작동해요.