728x90
[K8s][CKS] TLS (Cipher-Suites)
쿠버네티스에서 클라이언트와 API 서버, 그리고 구성 요소간 통신은 상호 TLS를 통해 이루어진다.
🤔 TLS(Transport Layer Security)?
전송 계층 보안(TLS)은 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계되어 널리 채택된 보안 프로토콜이다.
TLS는 공개 키 암호화를 사용하여 작동하며, 새로운 암호가 발견될 때마다 적용이 되어야 한다.
쿠버네티스 보안을 목적으로하는 TLS 소프트웨어 패키지의 경우, 컨트롤 플레인의 구성요소와 etcd가 포함되며, 연결이 설정될 때 사용할 수 있는 암호를 제한하는 기능이 있다.
사용 가능한 암호를 강력한 최신 암호로 제한하면,
악용이 가능한 이전 클라이언트 암호의 사용으로 손상될 수 있는 연결을 방지 할 수 있다.
Ciphers and the Kubernetes Control Plane
모든 컨트롤 플레인 구성 요소(API server, Controller manager, kubelet, scheduler)에는 다음과 같은 인수가 있다.
- --tls-min-version : TLS의 최소 버전을 설정
- --tls-ciper-shites : 쉼표로 구분된 암호 목록을 설정 (default는 GoLang 암호화 제품군 패키지에서 제공하는 목록)
etcd 또한 api 서버 -> etcd 통신에서 특정 암호를 사용하여 보안이 가능하다.
--ciper-shites 인수를 사용하여 암호 목록을 설정할 수 있다.
Example
CKS에는 다음과 같은 문제가 나올 수도 있다.
Task
etcd와 api server간 통신이 다음 암호를 사용할 때만 (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) 통신이 될 수 있도록 제한하고, 최소 TLS 버전도 다음으로 제한한다 TLS 1.2.
해답은 다음과 같다.
1. API server의 manifest 파일에 다음과 같은 인수를 추가한다.
--tls-min-version=VersionTLS12
--tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
2. etcd의 manifest 파일에 다음과 같은 인수를 추가한다.
--cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
파드가 모두 생성될 때까지 기다린다. (1분정도 소요)
참고
반응형
'🐳 Container > K8S' 카테고리의 다른 글
[K8s][CKS] 감사(auditing) (0) | 2024.06.03 |
---|---|
[K8s][CKS] 컨테이너의 불변성 보장 (0) | 2024.05.24 |
[K8s][CKS] Kube-bench (0) | 2024.05.21 |
[K8s][CKS] 런타임 클래스 (runtime class) (0) | 2024.05.13 |
[K8s] Storage Class (0) | 2024.04.29 |