권한 부여(Authorization)는 클러스터 관리자가 특정 사용자나 애플리케이션이 어떤 작업을 수행할 수 있는지를 정의하는 과정입니다.
Kubernetes 클러스터는 다양한 사용자 그룹과 애플리케이션이 함께 동작하며, 각각의 역할과 책임이 다릅니다. 예를 들어, 개발자는 주로 포드 생성과 같은 작업을 수행하지만, 클러스터 관리자는 노드와 같은 인프라 설정을 변경할 수 있습니다. 이러한 다양한 권한 필요에 따라 Kubernetes는 여러 권한 부여 메커니즘을 제공합니다.
노드 권한 부여 (Node Authorizer): kubelet과 같은 시스템 구성 요소들은 노드 그룹에 속한 사용자로부터 오는 요청을 승인합니다. 이는 클러스터의 안전성을 유지하기 위한 필수적인 접근 제어입니다.
속성 기반 접근 제어 (ABAC): 사용자나 그룹에 일련의 권한을 할당하는 방식입니다. 예를 들어, 개발자 그룹은 포드를 관리할 수 있는 권한을 가질 수 있습니다. 정책은 정의 파일에 명시되며, 변경 시 kube-apiserver를 다시 시작해야 합니다.
역할 기반 접근 제어 (RBAC): 역할을 정의하고, 해당 역할에 사용자를 매핑함으로써 접근 권한을 부여합니다. 역할 기반 접근 제어는 관리가 용이하며, 클러스터 내에서 접근을 표준화하는 데 큰 도움이 됩니다.
외부 도구 연동: Open Policy Agent와 같은 제3자 도구를 사용하여 클러스터 외부에서 접근 제어를 관리할 수 있습니다. 이는 보다 유연한 접근 제어 메커니즘을 제공하며, API 호출을 기반으로 사용자의 권한을 동적으로 관리할 수 있습니다.
마지막으로, Kubernetes는 '항상 허용'과 '항상 거부' 모드를 설정할 수 있습니다. 이는 모든 요청을 무조건 허용하거나 거부하는 방식으로 동작하며, 특정한 보안 정책을 적용하는 데 사용될 수 있습니다.
이러한 권한 부여 메커니즘들은 Kubernetes 클러스터의 보안성을 높이고, 다양한 사용자와 애플리케이션의 요구사항을 충족시키는 데 중요한 역할을 합니다. 다음 글에서는 역할 기반 접근 제어(RBAC)에 대해 더 자세히 살펴보겠습니다. Stay tuned!