[Cluster Setup and Hardening] Kubernetes 역할 기반 접근 제어 (RBAC)

IMKUNYOUNG·2024년 7월 5일
0

CKS

목록 보기
13/70

Kubernetes는 다양한 사용자와 서비스가 공존하는 환경에서 안전하고 효율적인 자원 관리를 위해 역할 기반 접근 제어 (Role-Based Access Control, RBAC) 메커니즘을 제공합니다. 이 기능을 통해 사용자나 Service Account에게 특정 작업을 수행할 수 있는 권한을 세밀하게 할당할 수 있습니다. 이번 글에서는 Kubernetes 클러스터에서 RBAC을 설정하고 관리하는 방법에 대해 알아보겠습니다.

역할(Role) 정의하기

RBAC을 구성하기 위해 먼저 역할(Role)을 정의해야 합니다. 역할은 apiGroups, resources, verbs로 구성된 규칙들의 집합으로 이루어져 있습니다. 예를 들어, 개발자를 위한 역할을 생성할 때, 다음과 같은 방식으로 정의할 수 있습니다:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: developer
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "get", "create", "delete"]
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create"]

위의 예시에서는 developer 역할이 pods에 대해 list, get, create, delete를, configmaps에 대해 create 작업을 수행할 수 있도록 규칙이 정의되어 있습니다.

역할(Role) 생성하기

kubectl create role -f developer-role.yaml

역할 바인딩(RoleBinding) 생성하기

역할을 정의했다면, 이제 해당 역할을 사용자나 서비스 계정에 바인딩하여 권한을 부여합니다. 예를 들어, dev-user 사용자에게 developer 역할을 할당하는 RoleBinding을 생성하는 방법은 다음과 같습니다:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: devuser-developer-binding
subjects:
- kind: User
  name: dev-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: developer
  apiGroup: rbac.authorization.k8s.io

위 예시에서는 dev-user 사용자에게 developer 역할을 할당하고 있습니다. 이제 dev-userpodsconfigmaps에 대해 정의된 권한을 사용할 수 있습니다.

네임스페이스 범위 설정하기

RBAC은 기본적으로 네임스페이스 단위로 작동합니다. 따라서 역할과 역할 바인딩을 생성할 때 명시적으로 어떤 네임스페이스에서 작동할지 지정해야 합니다. 예시에서는 default 네임스페이스를 기준으로 설정하였습니다. 다른 네임스페이스에서의 접근을 제한하려면 해당 네임스페이스를 명시적으로 지정해야 합니다.

역할(Role) 및 역할 바인딩(RoleBinding) 확인하기

RBAC 설정이 제대로 되었는지 확인하기 위해 다음 명령을 사용할 수 있습니다:

kubectl get roles
kubectl get rolebindings
kubectl describe role developer
kubectl describe rolebinding devuser-developer-binding

이러한 명령어들을 통해 역할과 역할 바인딩의 상세 정보를 확인할 수 있습니다.

마무리

RBAC을 활용하여 Kubernetes 클러스터에서 역할 기반 접근 제어를 구성하고 관리하는 방법을 살펴보았습니다. 역할을 세밀하게 정의하고, 사용자에게 적절한 권한을 부여하여 보안을 강화하고 자원 관리를 효율적으로 할 수 있습니다. Kubernetes의 강력한 RBAC 기능을 활용하여 클러스터의 보안성을 높이는 데 도움이 되기를 바랍니다.

0개의 댓글