Consul 에이전트 구성 파일: auto_config 매개변수

Consul 에이전트 구성 파일: auto_config 매개변수

이 페이지는 Consul 에이전트 구성 파일의 auto_config 매개변수에 대한 참조 정보를 제공해요. auto_config를 활성화하면 클라이언트 에이전트가 시작 시 서버에 RPC를 보내 ACL 토큰, TLS 인증서, Gossip 암호화 키 같은 구성 설정을 요청해요.

출처: 문서

본문

이 페이지는 Consul 에이전트 구성 파일의 auto_config 매개변수에 대한 참조 정보를 제공합니다.

auto_config를 활성화하면 클라이언트 에이전트는 시작 시 구성된 서버 주소에 RPC를 보내 ACL 토큰, TLS 인증서, Gossip 암호화 키 같은 구성 설정을 요청합니다. 이러한 구성 설정은 기본값으로 병합되며, 클라이언트 에이전트에서 사용자가 제공한 구성이 이를 재정의할 수 있습니다. 초기 RPC는 intro_token, intro_token_file 또는 CONSUL_INTRO_TOKEN 환경 변수로 지정된 JWT를 사용해 요청을 승인합니다. JWT 토큰이 어떻게 검증되는지는 Consul 서버에서 사용할 수 있는 auto_config.authorizer 객체가 제어합니다.

이 옵션을 활성화하면 서비스 메시도 활성화됩니다. 이는 auto_config, 특히 서비스 메시 CA와 인증서 인프라에 필수적이기 때문입니다.

경고

auto_config 활성화는 auto_encrypt.tls 기능과 충돌합니다. 두 옵션 중 하나만 지정할 수 있습니다.

매개변수 (Parameters)

  • auto_config - 이 객체는 auto_config 기능에 대한 옵션을 설정할 수 있게 해줍니다.
    • enabled (기본값 false) - 이 옵션은 클라이언트 에이전트에서 auto_config를 활성화합니다.
    • intro_token (기본값 "") - Consul 서버에 대한 초기 auto_config RPC에 사용할 JWT를 지정합니다. 이 값은 CONSUL_INTRO_TOKEN 환경 변수로 재정의할 수 있습니다.
    • intro_token_file (기본값 "") - Consul 서버에 대한 초기 auto_config RPC에 사용할 JWT가 포함된 파일을 지정합니다. 이 파일의 토큰은 intro_token 구성과 CONSUL_INTRO_TOKEN 환경 변수가 모두 설정되지 않은 경우에만 로드됩니다.
    • server_addresses (기본값 []) - 초기 RPC에 사용할 로컬 데이터센터의 서버 주소를 지정합니다. 이 주소는 Cloud Auto-Joining을 지원하며, 아웃바운드 연결 시 사용할 포트를 선택적으로 포함할 수 있습니다. 포트가 제공되지 않으면 server_port가 사용됩니다.
    • dns_sans (기본값 []) - 클라이언트 에이전트의 TLS 인증서에 요청할 추가 DNS SAN 목록. localhost DNS SAN은 항상 요청됩니다.
    • ip_sans (기본값 []) - 클라이언트 에이전트의 TLS 인증서에 요청할 추가 IP SAN 목록. ::1과 127.0.0.1 IP SAN은 항상 요청됩니다.
    • authorization - 이 객체는 Consul 서버가 auto_config 요청을 승인하는 방법, 특히 JWT 인트로 토큰을 검증하는 방법을 제어합니다.
      • enabled (기본값 false) - 이 옵션은 서버에서 auto_config 인가 기능을 활성화합니다.
      • static - 이 객체는 Consul 구성 파일에서 정적 authorizer 설정을 구성하는 것을 제어합니다. 거의 모든 하위 키는 JWT Auth Method가 제공하는 것과 동일합니다.
        • jwt_validation_pub_keys (기본값 []) - 서명을 로컬에서 인증하는 데 사용할 PEM 인코딩 공개 키 목록. jwks_url, jwt_validation_pub_keys, oidc_discovery_url 중 정확히 하나가 필요합니다.
        • oidc_discovery_url (기본값 "") - .well-known 구성 요소(기본 경로)가 없는 OIDC Discovery URL. jwks_url, jwt_validation_pub_keys, oidc_discovery_url 중 정확히 하나가 필요합니다.
        • oidc_discovery_ca_cert (기본값 "") - OIDC Discovery URL과 통신하는 데 사용되는 TLS 클라이언트가 사용하는 PEM 인코딩 CA 인증서. 참고: 모든 줄은 줄바꿈(\n)으로 끝나야 합니다. 설정하지 않으면 시스템 인증서가 사용됩니다.
        • jwks_url (기본값 "") - 서명을 인증하는 데 사용할 JWKS URL. jwks_url, jwt_validation_pub_keys, oidc_discovery_url 중 정확히 하나가 필요합니다.
        • jwks_ca_cert (기본값 "") - JWKS URL과 통신하는 데 사용되는 TLS 클라이언트가 사용하는 PEM 인코딩 CA 인증서. 참고: 모든 줄은 줄바꿈(\n)으로 끝나야 합니다. 설정하지 않으면 시스템 인증서가 사용됩니다.
        • claim_mappings (기본값 (map[string]string)) - 메타데이터 필드(값)로 복사될 클레임(key)의 매핑. 캡처하는 클레임이 속성 같은 단일 값이면 이를 사용하세요. 매핑되면 값은 숫자, 문자열 또는 불리언 중 하나일 수 있으며 반환 시 모두 문자열화됩니다.
        • list_claim_mappings (기본값 (map[string]string)) - 메타데이터 필드(값)로 복사될 클레임(key)의 매핑. 캡처하는 클레임이 그룹 같은 목록 형태이면 이를 사용하세요. 매핑되면 각 목록의 값은 숫자, 문자열 또는 불리언 중 하나일 수 있으며 반환 시 모두 문자열화됩니다.
        • jwt_supported_algs (기본값 ["RS256"]) - JWTSupportedAlgs는 지원되는 서명 알고리즘 목록입니다.
        • bound_audiences (기본값 []) - 로그인에 유효한 aud 클레임 목록; 어떤 것이든 일치하면 충분합니다.
        • bound_issuer (기본값 "") - JWT의 iss 클레임을 일치시킬 값.
        • expiration_leeway (기본값 "0s") - 클록 스큐를 고려해 토큰 만료를 검증할 때의 여유 시간. 0s로 설정하면 기본적으로 150초(2.5분)가 되며 -1ns로 설정하면 비활성화할 수 있습니다.
        • not_before_leeway (기본값 "0s") - 클록 스큐를 고려해 토큰의 not before 값을 검증할 때의 여유 시간. 0s로 설정하면 기본적으로 150초(2.5분)가 되며 -1로 설정하면 비활성화할 수 있습니다.
        • clock_skew_leeway (기본값 "0s") - 클록 스큐를 고려해 모든 클레임을 검증할 때의 여유 시간. 0s로 설정하면 기본적으로 60초(1분)가 되며 -1ns로 설정하면 비활성화할 수 있습니다.
        • claim_assertions (기본값 []) - 들어오는 RPC 요청을 승인하는 데 필요한 매핑된 클레임에 대한 어서션 목록. 구문은 API filtering feature와 공유되는 github.com/hashicorp/go-bexpr을 사용합니다. 어서션은 HIL syntax를 사용해 RPC 요청의 일부 값을 보간하도록 가볍게 템플릿화됩니다. 보간할 수 있는 변수 목록:
          • node - 클라이언트 에이전트가 요청하는 노드 이름.
          • segment - Enterprise. 클라이언트가 요청하는 네트워크 세그먼트 이름.
          • partition - Enterprise. 클라이언트가 요청하는 관리 파티션 이름.
          • 자세한 내용은 claim assertions example을 참조하세요.

예시 (Examples)

다음 예시는 Consul 에이전트의 auto config 설정에 대한 일반적인 구성을 보여줍니다.

클레임 어서션 (Claim assertions)

결합되면 다음 구성은 JWT sub가 클라이언트가 요청한 노드 이름과 일치하도록 보장합니다.

claim_mappings {
  sub = "node_name"
}
claim_assertions = [
  "value.node_name == \"${node}\""
]

더 알아보기 (Learn more)