FIPS 140-3 규격 Consul 서버 배포하기

FIPS 140-3 규격 Consul 서버 배포하기

이 문서에서는 FIPS 140-3 규격을 지원하는 Consul Enterprise 빌드를 배포하는 방법을 설명해 드려요. fips1403 기능 이름으로 표시된 Consul Enterprise 빌드는 FIPS 140-3 규격 준수를 위한 내장 지원을 포함합니다.

Enterprise 이 기능에는 Consul Enterprise가 필요해요. 이 기능을 사용하려면 Consul Enterprise에 대한 활성 또는 평가판 라이선스가 있어야 하며, 평가판을 시작하려면 HashiCorp 영업팀에 문의하세요.

출처: 문서

본문

FIPS 140-3 Consul Enterprise 사용하기

FIPS 140-3 빌드의 Consul Enterprise는 비-FIPS 빌드와 동일하게 동작해요. Consul 알고리즘에 대한 제한은 없으며, Consul이 FIPS 규격 준수 운영 모드로 유지되도록 하는 것은 사용자의 책임입니다. FIPS 규격 준수 운영을 유지하려면 TLS를 활성화하여 통신이 암호화되도록 해야 해요. Consul 제품은 설정이 안전하지 않은 곳에서 몇 가지 유용한 경고를 표시합니다.

Consul Enterprise에서는 암호화가 기본적으로 비활성화되어 있어요. 그 결과 Consul이 민감한 컨트롤 플레인 정보를 전송할 수 있습니다. FIPS 규격 준수 설정으로 Consul을 실행할 때는 모든 에이전트에 대해 gossip 암호화와 mTLS가 활성화되어 있는지 확인해야 해요.

HashiCorp는 NIST 인증 테스트 연구소가 아니며 FIPS 규격 준수 방식으로 Consul Enterprise를 사용하는 방법에 대한 일반적인 지침만 제공할 수 있어요. 추가 정보는 승인된 감사자와 상담하는 것을 권장합니다.

FIPS 140-3 변형 Consul은 다음 소스에서 제공되는 별도의 바이너리를 사용해요.

  • HashiCorp Releases 페이지: +ent.fips1403 접미사로 끝나는 릴리스
  • Docker Hub hashicorp/consul-enterprise-fips 컨테이너 저장소
  • AWS ECR hashicorp/consul-enterprise-fips 컨테이너 저장소
  • Red Hat Access hashicorp/consul-enterprise-fips 컨테이너 저장소

앞서 언급한 명명 규칙(바이너리 이름과 태그에 .fips1403을 추가하고 레지스트리 이름에 -fips를 추가)은 Consul Enterprise와 별도로 패키징되는 consul-k8s, consul-k8s-control-plane, consul-dataplane, consul-ecs에도 적용됩니다.

아티팩트 이름

FIPS 140-3을 지원하는 릴리스는 FIPS 140-2를 지원하는 릴리스와 다른 아티팩트 이름을 사용해요. 업그레이드 전에 FIPS 아티팩트 이름, 패키지 이름 또는 버전 문자열을 고정하는 모든 자동화를 갱신하세요.

사용 제한

Consul Enterprise를 FIPS 140-3과 함께 사용할 때는 다음과 같은 운영 제한 사항을 알아 두어야 해요.

마이그레이션 제한

버전과 관계없이 비-FIPS 빌드의 Consul에서 FIPS 빌드의 Consul로의 인플레이스(in-place) 마이그레이션은 지원하지 않아요. FIPS 140-3을 지원하려면 새 클러스터 설치가 필요합니다. FIPS 규격 준수 빌드로 직접 업그레이드할 수 없어요.

FIPS 140-2 빌드에서 FIPS 140-3 빌드로는 업그레이드할 수 있어요. 자세한 내용은 이종 클러스터 배포를 참고하세요.

TLS 제한

Consul Enterprise의 FIPS 수정에는 지원되는 TLS 암호화 스위트와 키 정보에 대한 제한이 포함되어 있어요. 다음 TLS v1.2 암호화 스위트만 허용됩니다.

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

다음 TLS v1.3 암호화 스위트만 허용됩니다.

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384

또한 TLS 신뢰 체인에는 다음 키 유형만 허용됩니다.

  • RSA 2048비트 이상
  • ECDSA P-256, P-384, P-521
  • Ed25519

FIPS 모드에서는 TLS v1.2와 TLS v1.3이 모두 지원돼요. 연결이 TLS v1.2를 사용할 때는 두 피어 모두 RFC 7627에 설명된 extended master secret 확장을 지원해야 합니다. 이 확장을 지원하지 않는 피어와의 핸드셰이크는 실패해요.

이종 클러스터 배포

동일한 클러스터 내에서 FIPS와 비-FIPS Consul 바이너리를 혼합하는 배포 시나리오는 지원하지 않아요. 시스템의 구성 요소가 FIPS 규격을 준수하지 않으므로 FIPS에서 이종 클러스터 운영을 허용하지 않습니다. 에이전트가 자신의 FIPS 상태와 일치하지 않는 클러스터에 조인을 시도하면, Cannot join FIPS and non-FIPS Consul 오류로 조인이 실패해요.

FIPS 140-2를 지원하는 에이전트와 FIPS 140-3을 지원하는 에이전트는 같은 클러스터에 조인할 수 있어요. 두 수준 모두 승인된 암호화 프리미티브를 사용하므로, 전체 클러스터를 한 번에 재시작하지 않고도 +ent.fips1402에서 +ent.fips1403으로 롤링 업그레이드를 수행할 수 있습니다.

Envoy

FIPS 규격 준수 서비스 메시를 Consul로 배포할 수 있게 하기 위해, HashiCorp는 다운로드 가능한 FIPS 규격 준수 버전의 Envoy를 제공해요. 자세한 내용은 HashiCorp 영업팀에 문의하세요.

배포 전제 조건

Consul 런타임에 따라 FIPS 140-3을 사용하기 위한 추가 요구 사항이 있어요.

VM

VM에서 Consul을 사용한다면 FIPS 규격 준수 버전의 Envoy를 사용해야 해요. FIPS 규격 준수 버전의 Envoy를 얻는 방법은 HashiCorp 영업팀에 문의하세요.

consul-k8s 및 Helm

consul-k8s 또는 Helm을 사용해 Kubernetes에 FIPS 빌드의 Consul을 배포할 때는, Helm 차트가 Consul Enterprise, Consul Dataplane, Envoy 이미지의 FIPS 빌드를 사용하도록 갱신되었는지 확인해야 해요.

기술 세부 사항

Consul의 FIPS 140-3 제품은 공식 Go 툴체인에 포함된 암호화 모듈인 Go Cryptographic Module을 사용해요. HashiCorp는 GOFIPS140=v1.0.0으로 이 제품들을 빌드하여 바이너리가 CMVP 인증서 #5247을 보유한 모듈 버전을 링크하도록 합니다. Linux와 Windows 빌드는 동일한 모듈을 사용해요.

모듈이 Go로 작성되었으므로 FIPS 140-3 바이너리는 cgo에 의존하지 않아요. FIPS 140-2 Linux 바이너리와 달리 GNU C 라이브러리(glibc) Linux 배포판이 필요하지 않습니다.

빌드의 Consul Enterprise에 FIPS 지원이 포함되어 있는지 확인하려면, 버전 명령을 실행할 때 FIPS:로 시작하는 줄이 나타나는지 확인해 보세요. 예를 들어 에이전트가 FIPS 모드로 작동할 때 다음 메시지가 나타납니다.

FIPS: FIPS 140-3 Enabled, crypto module v1.0.0

런타임 시 FIPS 모드

FIPS 빌드의 Consul은 GODEBUG 환경 변수의 기본값으로 fips140=on을 설정하므로 추가 구성 없이 FIPS 모드로 작동해요. 이 기본값은 강제 사항이 아니에요. 에이전트 환경에서 GODEBUG=fips140=off로 설정하면 바이너리가 FIPS 모드 없이 시작됩니다. 그러면 에이전트는 FIPS가 활성화되지 않았다고 보고하고, 다른 에이전트에 FIPS 상태 광고를 중단하며, FIPS 클러스터에 조인할 수 없어요. FIPS 모드로 작동해야 하는 에이전트에서는 GODEBUG의 fips140 설정을 재정의하지 마세요.

FIPS 암호화 모듈 검증

바이너리가 인증된 암호화 모듈을 링크하는지 검증하려면 바이너리에서 go version -m을 실행하고 빌드 설정을 검사하세요.

$ go version -m consul | grep -e GOFIPS140 -e DefaultGODEBUG -e tags
    build   -tags=consulent,fips,fips140v1.0
    build   DefaultGODEBUG=fips140=on
    build   GOFIPS140=v1.0.0

비-FIPS 빌드는 GOFIPS140 또는 DefaultGODEBUG=fips140=on 빌드 설정을 보고하지 않아요.

Leidos 검증

2024년에 Leidos는 다음 Consul 릴리스에 대한 FIPS 140-2 암호화 모듈 BoringCrypto Cert.#4407의 통합을 인증했어요.

  • Consul Enterprise 빌드: consul_1.16.0+ent.fips1402, consul_1.16.1+ent.fips1402
  • Consul Dataplane 빌드: consul-dataplane_1.2.0+fips1402, consul-dataplane_1.2.1+fips1402
  • Consul K8s 빌드: consul-k8s_1.2.0+fips1402, consul-k8s_1.2.1+fips1402
  • Consul K8s Control Plane 빌드: consul-k8s-control-plane_1.2.0+fips1402, consul-k8s-control-plane_1.2.1+fips1402

검증된 플랫폼 아키텍처와 확인된 기능 지원에 대한 자세한 내용은 Leidos 인증 서한을 검토하세요.

더 알아보기 (Learn more)