Kubernetes 보안 설정 (3)

woogi·2024년 1월 30일
0

kube-apiserver내 TLS 인증 설정

클러스터내 정보가 노출되어 다른 공격에 이용되지 않도록 kube-apiserver와 kubelet, 사용자간의 통신 시 (SSL/TLS) 보안 통신을 한다.

--kubelet-https

플래그의 설정값이 true일 경우, kube-apiserver와 kubelet간의 HTTPS 암호화 통신을 활성화 한다.
기본값이 true이기 때문에 존재하지 않도록 하거나 --kubelet-https=true 설정을 권고한다.

--secure-port

kube-apiserver가 보안 HTTPS 통신을 수신할 포트를 지정한다.
기본값이 6443이기 때문에 값이 없어도 무방하나 0으로 설정 할 경우 https를 사용하지 않는다는 설정이기 때문에 설정을 제거 하거나 특정 1-65536 포트로 지정을 권고한다.

--kubelet-certificate-authority

해당 플래그 설정이 없으면 kube-apiserver가 kubelet의 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 유효성 검증을 하지 않기 때문에 설정을 권고한다.

--kubelet-client-certificate

kubelet와 tls 통신하기 위한 클라이언트 공개키 인증서이다.

--kubelet-client-key

kubelet와 tls 통신하기 위한 클라이언트 개인키 인증서이다.

--service-account-key-file

서비스 계정 토큰을 확인하기 위한 공개키로 클러스터내의 서비스 계정을 인증하는데 사용된다.
예를들어, kubectl create sa 와같이 서비스 계정을 생성 할때 생기는 서비스어카운트의 토큰이 정상인지의 유효성을 검증하기 위한 공개키로,
--service-account-signing-key-file 플래그의 파일로 서명하고 --service-account-key-file 플래그의 파일로 검증한다.
ex) --service-account-key-file=/etc/kubernetes/ssl/sa.pub
--service-account-signing-key-file=/etc/kubernetes/ssl/sa.key

--tls-cipher-suites

tls 통신에 사용할 지원하는 암호화 방식 리스트이다.
ex) --tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256

--tls-cert-file

kube-apiserver의 tls 공개키 인증서 파일 설정으로 tls 핸드셰이크 중 클라이언트에 제공된다.

--tls-private-key-file

kube-apiserver의 tls 개인키 인증서 파일 설정으로 tls-cert-file로 암호화된 데이터를 복호화한다.

--client-ca-file

클라이언트 인증서의 유효성을 검사하기 위해 kube-apiserver에서 사용하는 ca 파일 설정이다.

kube-apiserver 요청에 대한 로깅

audit log란?
kubernetes에서 모든 요청은 kube-apiserver를 거쳐야한다.
이때 audit로그는 kube-apiserver를 오가는 API를 로깅하는 것이다.
kubernetes 클러스터 구축시 자동으로 설정되지 않기 때문에 수동으로 설정이 필요하다.

--audit-log-path

audit log가 쌓일 경로 (ex_ /var/log/audit.log)

--audit-log-maxbackup

ex) - --audit-log-maxbackup=1000
보존할 최대 백업 로그 파일 수를 설정으로 이 값을 초과하면 새 로그 파일을 위한 공간을 확보하기 위해 오래된 로그 파일이 삭제된다.
기본값은 0으로 최대 백업 제한이 없음으로 계속적으로 쌓이기만 하기 때문에 파일수 제한을 위해 설정을 권고한다.

--audit-log-maxsize

ex) - --audit-log-maxsize=100
로그 파일의 최대 크기(MB)를 지정한다. 기본값은 100MB이며 해당 크기에 도달하면 새 로그 파일이 생성되고 이전로그 파일의 이름은 타임스탬프 접미사로 변경된다.

--audit-log-maxage

ex) - --audit-log-maxage=30
로그 파일의 최대 수명으로 설정 값보다 오래된 로그 파일은 삭제 된다.
기본값은 30이다.

--audit-policy-file

ex)- --audit-policy-file=/etc/kubernetes/pki/audit-policy-file.yaml
로그에 대한 정책을 설정하는 파일로 기록해야 하는 이벤트와 포함해야 하는 데이터에 대한 규칙을 정의한다.

참고

https://infosec.adtcaps.co.kr/liveFile/eqstinsight-file/happyFileDown.do?fileName=20190621080345E90N.pdf&orgFileName=2019

0개의 댓글

관련 채용 정보