본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Calico 컴포넌트 보호를 위한 암호화와 인증 구성

원문 보기 위키 갱신

이 문서는 Calico 컴포넌트 사이, 그리고 컴포넌트와 데이터스토어 사이 통신에 TLS 암호화와 상호 인증을 적용하는 방법을 다뤄요. etcd 접속, kube-apiserver 접속, Felix-Typha 접속별로 설정 방식이 달라요. Felix-Typha 구간에는 SPIFFE 식별자를 쓰는 방법을 권장해요.

출처: 문서

본문

Calico 컴포넌트에서 etcd로 가는 연결

Tab: Operator

오퍼레이터 기반 설치는 etcd와 통신할 필요가 없으므로 이 섹션은 해당되지 않아요.

Tab: Manifest

etcd 데이터스토어를 사용한다면 다음과 같이 연결에 상호 TLS 인증을 켜는 것을 권해요.

Calico 컴포넌트에서 kube-apiserver로 가는 연결 (Kubernetes와 OpenShift)

kube-apiserver에 TLS를 켜고, 클라이언트 인증서 모듈과 JSON 웹 토큰(JWT) 인증 모듈도 함께 사용하는 것을 권해요. 그러면 Calico 컴포넌트와의 모든 통신이 TLS 위에서 이뤄져요. Calico 컴포넌트는 X.509 인증서나 JWT를 kube-apiserver에 제시해서 kube-apiserver가 신원을 검증하게 해요.

Felix에서 Typha로 가는 연결 (Kubernetes)

Tab: Operator

오퍼레이터 기반 설치는 Felix에서 Typha로 가는 연결에 상호 TLS 인증을 자동으로 구성해요.

Tab: Manifest

Felix에서 Typha로 가는 연결에 상호 TLS 인증을 켜는 것을 권해요. 그러려면 Typha에는 서버 인증서를, Felix에는 클라이언트 인증서를 준비해야 해요. 각 서비스는 자신의 인증서에 대응하는 개인 키도 필요해요. 여기에 더해 다음 중 하나를 구성해야 해요.

  • SPIFFE 식별자 (권장): Felix용 SPIFFE 식별자를 생성하고, Typha의 ClientURISAN을 Felix의 SPIFFE ID로 설정하고, Felix 인증서의 URI SAN 필드에 Felix의 SPIFFE ID를 넣어요. 마찬가지로 Typha용 SPIFFE 식별자를 생성하고, Felix의 TyphaURISAN을 Typha의 SPIFFE ID로 설정하고, Typha 인증서의 URI SAN 필드에 Typha의 SPIFFE ID를 넣어요.

  • Common Name 식별자: Typha의 ClientCN을 Felix 인증서의 Common Name 값으로 구성해요. Felix의 ClientCN을 Typha 인증서의 Common Name 값으로 구성해요.

SUCCESS: Common Name에서 SPIFFE 식별자로 마이그레이션하는 중이라면 두 값을 모두 설정할 수 있어요. 어느 한쪽이라도 일치하면 통신에 성공해요.

다음은 클러스터에서 Felix-Typha 통신을 보호하는 예시예요.

  1. 인증 기관을 고르거나 직접 준비하세요.

  2. 그 기관이 서명한 다음 리프(leaf) 인증서와 대응하는 키를 확보하거나 생성하세요.

    • Common Name이 typha-client이고 extended key usage가 ClientAuth인, Felix마다 하나의 인증서.

    • Common Name이 typha-server이고 extended key usage가 ServerAuth인, Typha마다 하나의 인증서.

  3. 각 Typha에 다음을 구성하세요.

    • 인증 기관 인증서를 가리키는 CAFile

    • 해당 Typha의 인증서를 가리키는 ServerCertFile

    • 해당 Typha의 키를 가리키는 ServerKeyFile

    • typha-client로 설정한 ClientCN

    • 설정하지 않은 ClientURISAN.

  4. 각 Felix에 다음을 구성하세요.

    • 인증 기관(CA) 인증서를 가리키는 TyphaCAFile

    • 해당 Felix의 인증서를 가리키는 TyphaCertFile

    • 해당 Felix의 키를 가리키는 TyphaKeyFile

    • typha-server로 설정한 TyphaCN

    • 설정하지 않은 TyphaURISAN.

SPIFFE 호환 배포를 만들려면 위 절차를 그대로 따르되 다음만 다르게 하면 돼요.

  1. Felix와 Typha를 나타낼 SPIFFE 신원을 정하세요.

  2. Felix와 Typha의 리프 인증서를 생성할 때, 해당 SPIFFE 신원을 URI SAN으로 인증서에 넣으세요.

  3. ClientCN과 TyphaCN은 설정하지 않고 그대로 두세요.

  4. Typha의 ClientURISAN 파라미터를, 각 Felix 인증서에 사용한 Felix용 SPIFFE 신원으로 설정하세요.

  5. Felix의 TyphaURISAN 파라미터를 Typha용 SPIFFE 신원으로 설정하세요.

이 파라미터들의 상세 레퍼런스는 다음을 참고하세요.

더 알아보기 (Learn more)

핵심은 인증 기관(CA) 하나로 Felix와 Typha 인증서를 모두 발급하고, CN 또는 SPIFFE URI SAN으로 신원을 맺어 주는 거예요. Common Name에서 SPIFFE로 넘어갈 때는 두 식별자를 함께 설정해 두면 전환이 매끄러워요. 오퍼레이터 설치라면 etcd와 Felix-Typha 구간의 TLS가 자동으로 구성된다는 점도 기억하세요.