RBAC와 서비스 계정
클러스터 접근을 제한합니다.
RBAC와 서비스 계정은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
RBAC가 모든 것을 제어합니다
역할 기반 액세스 제어(RBAC)는 클러스터에서 어떤 신원이 어떤 리소스에 어떤 작업을 수행할 수 있는지 결정합니다. 모든 API 호출은 RBAC에 따라 권한을 확인받습니다. 잘못 구성된 RBAC는 클러스터 내부 권한 상승의 주요 원인입니다.
- 주체: 사용자, 그룹, 서비스 계정.
- 역할은 동작을 리소스에 연결합니다.
- 바인딩은 주체와 역할을 연결합니다.
역할과 ClusterRoles 비교
두 가지 범위가 있습니다.
- 역할 + RoleBinding: 네임스페이스 범위 권한.
- ClusterRole + ClusterRoleBinding: 클러스터 전체 권한.
cluster-admin에 대한 ClusterRoleBinding은 모든 권한을 제공합니다. 이를 서비스 계정에 부여하는 것은 빈번하고 위험한 실수입니다.
서비스 계정 토큰
모든 파드는 서비스 계정으로 실행되며 기본적으로 해당 토큰을 탑재합니다. 해당 토큰은 계정의 RBAC 권한을 담은 소지자 자격 증명입니다. 파드가 침해되면 토큰도 침해됩니다.
최신 클러스터는 수명이 짧고 대상이 제한된 프로젝션 토큰을 발급하지만, 오래된 장기 비밀 토큰이 여전히 남아 있습니다.
# Inspect which service account a pod uses
kubectl get pod web -o jsonpath='{.spec.serviceAccountName}'권한 열거
토큰을 확보한 후 가장 먼저 해야 할 일은 토큰으로 무엇을 할 수 있는지 파악하는 것입니다. Kubernetes는 자체 점검 API를 제공합니다.
# What can this token do?
kubectl auth can-i --list
# Specific checks
kubectl auth can-i create pods
kubectl auth can-i create clusterrolebindings위험한 권한 조합
특정 동작은 cluster-admin 없이도 권한 상승의 기본 수단이 됩니다.
create pods: 권한이 높은 또는 hostPath 파드를 배치해 탈출합니다.create pods/exec: 기존 파드에서 명령을 실행합니다.get/list secrets: 클러스터 전체의 자격 증명을 읽습니다.create rolebindings/clusterrolebindings: 자신을 관리자 역할에 바인딩합니다.escalate/bind동작: 자신이 보유하지 않은 권한을 부여합니다.- 사칭: 더 높은 권한을 가진 다른 주체로 행동합니다.
파드 생성을 통한 권한 상승
서비스 계정이 파드를 생성할 수 있다면 대개 노드를 장악할 수 있습니다. 공격자는 호스트 파일 시스템을 탑재하거나 특권 모드로 실행되는 파드를 배치한 다음, 노드 자격 증명을 읽거나 탈출합니다.
# Pod spec snippet that mounts the host root
# volumes: hostPath path: / ; container mounts it at /host
kubectl apply -f evil-pod.yaml
kubectl exec -it evil -- chroot /host bash바인딩을 통한 권한 상승
역할 바인딩 또는 클러스터 역할 바인딩을 생성할 수 있다면 서비스 계정을 클러스터 관리자 역할에 직접 바인딩할 수 있습니다. Kubernetes는 bind/escalate 동작으로 이를 보호하지만, 잘못 구성된 역할이 이를 허용하는 경우가 있습니다.
# Bind a service account to cluster-admin (if permitted)
kubectl create clusterrolebinding pwn \
--clusterrole=cluster-admin \
--serviceaccount=default:web사칭 악용
impersonate 동작을 사용하면 주체가 어떤 사용자, 그룹 또는 서비스 계정으로든 행동할 수 있습니다. 광범위한 사칭 권한을 가진 보안 주체는 사실상 클러스터의 모든 권한을 보유합니다.
# Act as a privileged user via impersonation
kubectl get secrets --as=admin-user --as-group=system:mastersRBAC 감사
방어자는 위험한 권한 부여가 있는지 RBAC를 지속적으로 검토해야 합니다.
- cluster-admin에 바인딩된 주체를 찾습니다.
- 와일드카드 동작/리소스(
*)를 표시합니다. - 관리자 계정이 아닌 계정에 부여된 비밀 정보 읽기 및 파드 생성 권한을 탐지합니다.
# Tools to audit RBAC
kubectl-who-can create pods
rbac-tool analysis
rakkess --as=system:serviceaccount:default:web서비스 계정 강화
신원에 최소 권한을 적용합니다.
- 파드에 API 액세스가 필요하지 않은 경우
automountServiceAccountToken: false로 설정합니다. - 각 워크로드에 전용 서비스 계정을 제공하고 권한 범위를 최소화합니다.
- 실제 워크로드에는
default서비스 계정을 사용하지 않습니다. - 대상이 지정된 수명이 짧은 프로젝션 토큰을 사용하고, 이를 교체하고 연결합니다.
- 워크로드를 cluster-admin에 절대 바인딩하지 않습니다.
윤리적인 RBAC 테스트
RBAC를 평가할 때는 프로덕션에서 실제로 cluster-admin 바인딩을 생성하는 것보다 비파괴적인 확인(auth can-i, 시험 실행)을 우선합니다. 권한 상승을 입증해야 한다면 테스트 네임스페이스로 범위를 제한하고 생성한 바인딩이나 파드를 모두 제거합니다.
권한 상승을 가능하게 한 정확한 역할과 바인딩을 보고하여 권한을 더 제한할 수 있게 합니다.
빠른 확인
RBAC에 대한 이해를 확인합니다.
복습
RBAC와 서비스 계정이 클러스터 액세스를 어떻게 제어하고 위협하는지 배웠습니다.
- RBAC는 주체를 리소스에 대한 동작에 연결하며, 클러스터 관리자 역할은 전체 제어 권한을 가집니다.
- 파드는 SA 토큰을 탑재하며,
auth can-i로 해당 토큰의 권한 범위를 확인할 수 있습니다. - 파드 생성, 바인딩, 비밀 정보 읽기, 사칭은 권한 상승의 기본 수단입니다.
- 최소 권한 계정과 자동 탑재 비활성화가 클러스터를 강화합니다.
다음 주제: 파드 보안 및 네트워크 정책.
자주 묻는 질문
“RBAC와 서비스 계정” 강의는 무료인가요?
네 — “RBAC와 서비스 계정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“RBAC와 서비스 계정”에서 뭘 배우나요?
클러스터 접근을 제한합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“RBAC와 서비스 계정” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Kubernetes 위협 모델
- RBAC와 서비스 계정
- Pod 보안과 네트워크 정책
- 공급망과 비밀 정보 보호