안녕하세요, 

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제로 Kubernetes 환경에서의 "RBAC(Role-Based Access Control)"에 대해 다루고자 합니다.



RBAC


RBAC(Role Based Access Control)[1]이란 IAM과 별도로 Kubernetes 환경에서 제공하는 권한 제어 기능입니다.
클러스터 리소스에 대한 액세스를 제어하기 위해 역할과 역할 바인딩을 사용합니다.

RBAC는 IAM과 함께 작동하여 Kubernetes 클러스터에 대한 세분화된 액세스 제어를 제공합니다.[2]


RBAC를 사용하면 다음과 같은 이점이 있습니다.

  • 세분화된 액세스 제어: 사용자에게 필요한 최소 권한만 부여하여 보안을 강화합니다.
  • 유연한 권한 관리: 역할과 역할 바인딩을 사용하여 권한을 쉽게 관리하고 업데이트할 수 있습니다.
  • 감사 및 규정 준수: 누가 어떤 리소스에 액세스할 수 있는지 명확하게 정의하여 감사 및 규정 준수를 간소화합니다.


RBAC는 다음과 같은 주요 구성 요소로 이루어져 있습니다.

  • Role: 특정 네임스페이스 또는 클러스터 전체에 적용되는 권한 집합입니다. 예를 들어, "pod-reader" 역할은 Pod을 볼 수 있는 권한을 부여합니다.
  • ClusterRole: 클러스터 전체에 적용되는 권한 집합입니다. 네임스페이스에 국한되지 않고 클러스터 수준 리소스(예: 노드)에 대한 액세스를 제어하는 데 사용됩니다.
  • RoleBinding: 특정 사용자, 그룹 또는 서비스 계정에 Role을 연결합니다. 예를 들어, "dev-user"라는 사용자에게 "pod-reader" 역할을 바인딩하면 해당 사용자는 Pod을 볼 수 있습니다.
  • ClusterRoleBinding: 특정 사용자, 그룹 또는 서비스 계정에 ClusterRole을 연결합니다. 클러스터 전체에 대한 권한을 부여하는 데 사용됩니다.


IAM과 RBAC의 관계


GKE(Google Kubernetes Engine)에서 IAM과 RBAC는 함께 작동합니다. 

IAM은 클러스터 자체에 대한 액세스를 제어하고, RBAC는 클러스터 내부의 리소스에 대한 액세스를 제어합니다. 

사용자는 GKE 클러스터에 액세스하려면 먼저 IAM 권한이 있어야 하며, 그 후 RBAC를 통해 클러스터 내부 리소스에 대한 권한을 부여받습니다.



예를 들어 아래와 같이  IAM Viewer 역할을 받고 Default Namespace에 대한 cluster-admin 역할을 부여한다면, 

해당 사용자는 Default Namespace에 대하여 제한적으로 cluster-admin 역할을 수행할 수 있는 상황이 됩니다.




IAM처럼 기존에 설정되어 있는 pre-defined role 뿐만 아니라 필요한 권한만을 포함한 새로운 role을 추가하여 해당 role을 부여할 수도 있습니다.



참조 링크


[1] Kubernetes RBAC
https://kubernetes.io/docs/reference/access-authn-authz/rbac 

[2] 역할 기반 액세스 제어를 사용한 클러스터의 작업 승인

https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.