역할 기반 액세스 제어(RBAC)
RBAC 역할과 역할 바인딩을 사용하여 클러스터 내 사용자 및 서비스 계정 권한을 관리하세요.
역할 기반 액세스 제어(RBAC)은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
Kubernetes에서 RBAC란 무엇입니까?
환영합니다! 이번 레슨에서는 Kubernetes의 핵심 보안 기능인 역할 기반 액세스 제어(RBAC)를 자세히 살펴보겠습니다.
RBAC를 사용하면 클러스터에서 누가 무엇을 할 수 있는지 관리할 수 있습니다. Kubernetes 리소스에 대한 보안 담당자와 같은 역할을 하여, 권한이 부여된 사용자와 애플리케이션만 특정 작업을 수행하도록 합니다.
RBAC가 필수적인 이유
RBAC가 없으면 클러스터에 액세스할 수 있는 누구나 잠재적으로 모든 작업을 수행할 수 있어 보안 위험이나 실수로 인한 손상이 발생할 수 있습니다.
- 보안: 권한이 없는 액세스와 작업을 방지합니다.
- 규정 준수: 액세스 제어에 관한 규제 요구 사항을 충족하는 데 도움이 됩니다.
- 최소 권한: 사용자와 애플리케이션이 반드시 필요한 권한만 갖도록 합니다.
RBAC의 핵심 개념
Kubernetes의 RBAC는 몇 가지 핵심 구성 요소를 기반으로 합니다.
- 주체: '누가'에 해당합니다(사용자, 서비스 계정, 그룹).
- 역할: '무엇을'에 해당합니다(권한 집합).
- RoleBindings: '어떻게'에 해당하며, 역할을 주체에 연결합니다.
- ClusterRoles 및 ClusterRoleBindings: 역할과 RoleBindings의 클러스터 전체 버전입니다.
주체: 사용자와 ServiceAccount
Kubernetes는 작업을 요청하는 주체를 알아야 합니다. 이러한 주체를 주체라고 합니다.
- 사용자: 일반적으로 사람인 관리자나 개발자입니다. Kubernetes는 사용자를 직접 관리하지 않고 외부 인증에 의존합니다.
- ServiceAccount: Pod 내부에서 실행되는 애플리케이션이나 프로세스가 사용하는 Kubernetes 객체입니다. Pod와 API 서버 간 통신에 필수적입니다.
역할로 권한 정의하기
역할은 특정 namespace 내의 권한 집합을 정의합니다. 어떤 리소스에 어떤 작업(동사)을 수행할 수 있는지 지정합니다.
예를 들어 역할을 사용하여 'default' namespace의 Pod를 '가져오기' 및 '목록 조회'할 수 있도록 허용할 수 있습니다.
역할 예시: Pod 읽기
다음은 pod-reader라는 이름의 역할을 정의한 YAML입니다. 이 역할은 Pod를 'get', 'list', 'watch'(모니터링)할 수 있는 권한을 부여합니다.
apiGroups: [""]는 핵심 Kubernetes API 그룹을 가리킨다는 점에 유의하십시오.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: default
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]RoleBindings로 권한 부여하기
RoleBinding은 특정 역할을 특정 namespace 내의 하나 이상의 주체(사용자, 서비스 계정 또는 그룹)에 연결합니다.
즉, '이 사용자 또는 애플리케이션은 이 namespace에서 이 역할이 허용하는 작업을 수행할 수 있다'고 지정하는 연결입니다.
RoleBinding 예시: 액세스 권한 부여
이 RoleBinding은 pod-reader 역할을 default namespace의 my-app-sa라는 ServiceAccount에 연결합니다. 이제 my-app-sa는 Pod를 읽을 수 있습니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-app-sa # The service account getting permissions
namespace: default
roleRef:
kind: Role
name: pod-reader # The Role being granted
apiGroup: rbac.authorization.k8s.ioClusterRoles 및 ClusterRoleBindings
경우에 따라 하나의 namespace가 아니라 클러스터 전체에 적용되는 권한이 필요합니다. 이때 ClusterRoles와 ClusterRoleBindings를 사용합니다.
- ClusterRole: 노드나 영구 볼륨과 같은 클러스터 범위 리소스에 대한 권한 또는 모든 namespace에 걸친 작업(예: '모든 Pod 목록 조회')을 정의합니다.
- ClusterRoleBinding: ClusterRole을 주체에 연결하여 클러스터 전체 권한을 부여합니다.
RBAC 빠른 확인
개발자가 dev namespace에서만 새 애플리케이션을 배포해야 합니다. 이 특정 권한을 부여하려면 주로 어떤 두 가지 Kubernetes RBAC 리소스를 사용해야 합니까?
복습: RBAC 기초
잘하셨습니다! Kubernetes RBAC의 핵심을 배웠습니다.
- RBAC는 누가 클러스터 리소스와 상호 작용할 수 있는지 제어합니다.
- 역할은 namespace 내의 권한을 정의합니다.
- RoleBindings는 역할을 주체(사용자, 서비스 계정)에 연결합니다.
- ClusterRoles와 ClusterRoleBindings는 클러스터 전체 권한을 처리합니다.
RBAC를 숙지하는 것은 Kubernetes 환경을 보호하는 핵심입니다!
자주 묻는 질문
“역할 기반 액세스 제어(RBAC)” 강의는 무료인가요?
네 — “역할 기반 액세스 제어(RBAC)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“역할 기반 액세스 제어(RBAC)”에서 뭘 배우나요?
RBAC 역할과 역할 바인딩을 사용하여 클러스터 내 사용자 및 서비스 계정 권한을 관리하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“역할 기반 액세스 제어(RBAC)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 역할 기반 액세스 제어(RBAC)
- 격리를 위한 네트워크 정책
- 파드 보안 표준
- 서비스 계정과 워크로드 ID