Kubernetes 보안 설정 (2)

woogi·2024년 1월 19일
0
post-thumbnail

--authorization-mode

Kubernetes는 kube-apiserver를 통해 정책에 따라 요청에 대한 승인을 한다.
다양한 사용자 또는 그룹, 서비스 계정이 kube-apiserver에 접근하여 요청을 할때, 보안을 강화하기 위하여 여러가지 인증 모드를 통해 최소한의 권한을 부여한다.
kube-apiserver 구성 요소의 플래그이다.


인증 모드(Authorization Mode)

  • Node
    노드의 kubelet이 kube-apiserver에게 요청을 승인하는데 사용되는 권한 부여 모드이며,
    작업을 수행하는 데 필요한 권한이 있는지 확인한다.(사용자 인증을 위한 것이 아니라 kubelet이 권한이 있는지 확인 하는것임)
    쉽게 말하면, 승인된 노드만 kube-apiserver와 통신 할 수 있도록 하는 보안기능이다. 승인되지 않은 외부 노드를 방지해서 보안을 유지한다.

  • ABAC(Attribute-Based Access Control)
    아래와 같은 정책 파일을 생성하여 apiserver에 적용하는데(--authorization-policy-file=SOME_FILENAME), 보안을 추가하거나 변경해야 할때마다 이 정책 파일을 수동으로 수정하고 kube-apiserver를 재기동 해야하기 때문에 관리가 어렵다.
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user": "alice", "namespace": "*", "resource": "*", "apiGroup": "*"}}

  • RBAC(Role-Base Access Control)
    사용자, 그룹 또는 서비스 계정에 대한
    규칙을 만들고 User, Group 또는 ServiceAccount에 맵핑해주는 방식이다.
    세분화된 권한을 정의하여 클러스터 내에서 누가 무엇을 할 수 있는지를 세밀하게 제어할 수 있다.
    일반적으로 사용되는 인증모드이다.

  • Webhook
    클러스터 내부가 아닌 외부에서 권한을 관리하고 사용자의 허용 여부를 결정한다.
    그 응답에 근거하여 사용자는 액세스 권한을 부여받는다.(인증을 위한 서드파티 제품들 Keycloak, Okta, Dex..)

  • AlwaysDeny
    모든 요청을 차단한다. 테스트에만 사용한다.

  • AlwaysAllow
    모든 요청을 허용한다. API 요청에 대한 인가가 필요하지 않은 경우에만 사용한다.

권고 보안 설정

여러 인증 모드들 중 권고하는 설정을 적용하여 보안을 강화한다.

  • 권한 검증 부재
    --authorization-mode=AlwaysAllow 값 존재할 경우 제거

  • Node 권한 사용
    --authorization-mode=Node 값 설정

  • 역할 기반 액세스 제어(RBAC)를 사용
    --authorization-mode=RBAC 값 설정

권고 설정대로 진행시 kube-apiserver manifest내 플래그가 아래와 같다.
인증 모드는 ','를 기준으로 나열이 가능하며 지정한 순서대로 인증이 진행된다.(Node -> RBAC)

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

https://kubernetes.io/ko/docs/reference/access-authn-authz/authorization/

https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/23096066#overview

0개의 댓글

관련 채용 정보