설명
RBAC는 사용자와 서비스 계정의 권한을 역할과 바인딩으로 관리합니다. 이 권한 모델을 사용하는 클러스터에서는 실제 RBAC authorizer가 활성화되어 있어야 합니다. 지원되는 버전에서는 AuthorizationConfiguration으로 구성할 수도 있습니다.
RBAC를 켜는 것만으로 최소 권한이 보장되지는 않습니다. 역할과 바인딩을 필요한 작업과 리소스로 제한하고, 다른 인가 방식이 불필요한 요청을 허용하지 않는지 확인해야 합니다.
잠재적 영향
- 사용자와 서비스 계정의 권한을 세밀하게 통제하기 어려워집니다.
- 과도한 접근 허용이 발생해 민감 리소스 노출 위험이 커질 수 있습니다.
- 권한 정책 감사와 변경 관리가 어려워질 수 있습니다.
해결 방법
--authorization-mode또는 AuthorizationConfiguration에서 RBAC를 활성화하세요.- 일반적으로
RBAC,Node조합을 사용하고 역할과 바인딩을 최소 권한으로 검토하세요. - 허용 위주의 모드가 남아 있지 않은지 정적 파드와 시작 인자를 점검하세요.
예시
API 서버 인자 발췌입니다. 이미지는 실제 클러스터 버전에 맞추세요. 노드 인증과 역할·바인딩 등 나머지 설정은 생략했습니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--authorization-mode=AlwaysAllow"]
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--authorization-mode=RBAC,Node"]
설명:
- 변경 전: AlwaysAllow는 역할 권한과 무관하게 요청을 허용합니다.
- 변경 후: RBAC를 활성화합니다. 실제 허용 범위는 역할, 바인딩과 다른 authorizer도 함께 확인해야 합니다.