Kubernetes 보안 설정 (1)

woogi·2024년 1월 18일
0

비인증 접근차단


--anonymous-auth

kube-apiserver 구성 요소의 플래그이며, true일 경우 인가 되지 않은 익명의 사용자도 kube-apiserver에 접근이 허용되기 때문에 보안상 취약하다.
따라서, --anonymous-auth=false 설정을 권고 한다.
기본값은 true이기 때문에 추가 설정이 필요하다.

해당 설정 값에 따른 apiserver로의 접근에 대해서 살펴보자

  • anonymous-auth 값이 true일 때, kube-apiserver로의 curl 결과

위와같이 계정을 지정하지 않았음에도 anonymous 계정으로 접속이 허용된다.

상태코드: 403 Forbidden
인증은 되었으나 요청한 리소스에 접근하는데 필요한 권한이 없을때의 상태 코드

  • anonymous-auth 값이 false일 때, kube-apiserver로의 curl 결과

anonymous 사용자 접근을 막았으므로 Unauthorized 인증되지 않았다는 메시지가 나오며 접근이 되지 않는다.

상태코드 401 Unauthorized
인증이 되지 않았을 때의 상태 코드(클라이언트의 요청하는 토큰, 키 또는 로그인 세부 정보와 같은 자격증명이 없거나 유효하지 않을 때)

--insecure-port

kube-apiserver 구성 요소의 플래그이며, 플래그의 값에 Port를 설정하면 kube-apiserver가 해당 포트로 HTTPS가 아닌 HTTP 연결을 허용한다.
따라서, insecure-port=0 설정하여 HTTP 연결을 비활성화 하도록 권장한다.

다만, k8s 1.20 버전부터는 해당 설정이 지원 중단 되었다고 한다.(1.20이상 버전부터는 그냥 설정을 지워버려도 되겠다.)

해당 깃허브에 보면 insecure-port, insecure-bind-address 플래그를 더이상 사용하지 않는다고 한다.

--service-account-lookup

kube-apiserver 구성 요소의 플래그이며, false인 경우 kube-apiserver는 인증 토근이 유효한지 확인만 하고 실제로 서비스 계정 토큰이 ETCD에 존재하는지는 확인하지 않는다.
다시말해, 서비스 계정이 삭제 되었더라도 서비스 계정의 토큰을 사용 할 수 있다.
default 값은 true이기 때문에 설정값을 일부러 false로 주지 않는 한 추가 설정 할 필요는 없어보인다.

위 테스트의 순서는 이러하다.

  • kube-apiserver 내 플래그에 --service-account-lookup=false 설정
  • test-sa 서비스 계정 생성
  • 서비스 계정 토큰(sa 생성 시 자동으로 생성됨)으로 kube-apiserver에 접근 가능한지 curl
  • 상태 코드 403으로 인증은 성공함(접근 가능함)
  • test-sa 서비스 계정 삭제
  • 서비스 계정을 삭제 했음에도 해당 토큰으로 접근이 가능한지 curl 테스트 (code: 403으로 접근 됨)
  • kube-apiserver 내 플래그에 --service-account-lookup=true 변경
  • 접근 가능한지 curl 테스트 시 상태 코드 401로 접속 되지 않음
#서비스 계정 생성
kubectl create serviceaccount test-sa

# TOKEN변수에 sa 토큰 입력
TOKEN=$(kubectl get secret $(kubectl get serviceaccount test-sa -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode)

# kube-apiserver로 curl
curl -k -H "Authorization: Bearer $TOKEN" https://localhost:6443/api/v1/pods

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

0개의 댓글

관련 채용 정보