본문 바로가기
Linux/OpenShift

RHOCP) RBAC이란? (Rules, Roles 포함)

by LILO 2023. 7. 26.
반응형

INTRO

RHOCP를 처음 구축하고나면 kubeadmin을 비활성화하고 개인 혹은 조직이 사용할 계정을 만들어야합니다.

제가 공부할 때 처음으로 만난 난관은 권한부여였는데 RHOCP의 경우 RBAC(Role-based access control)을 이용하여 권한을 부여하는 것이였습니다. 

 

조직이 커지고 RHOCP 클러스터를 사용하는 사용자가 많아지면 권한 부여에 대한 생각을 할 수 밖에 없는데 아래의 RBAC에 대한 문서는 이러한 고민이 생길 때 참고해주시면 됩니다.

 

Using RBAC to define and apply permissions | Authentication and authorization | OpenShift Container Platform 4.13

When you manage a user or group’s associated roles for local role bindings using the following operations, a project may be specified with the -n flag. If it is not specified, then the current project is used. You can use the following commands for local

docs.openshift.com

 

 

 

RBAC(Role-based access control)이란?

RBAC(Role-based access control)이란 그룹(조직) 및 유저의 역할에 따라 리소스에 대한 접근 권한을 제어하는 역할 기반 접근 제어입니다.

RHOCP의 API 서버에 접근하기 위해선 권한이 부여된 사용자인지(Authorized User)인지 확인한 후 접근하는 API 리소스에 대한 권한이 부여되었는지 확인하는 절차를 가집니다.

https://kubernetes.io/docs/concepts/security/controlling-access/

- Authentication(인증):  X.509 Client Certificate(인증서), OAuth access token 등

☞ 사용자의 환경에 따라 인증 방법을 선택하여 RHOCP API Server에 접근 시도를 합니다. 

☞ 이외의 인증 방법을 선택하고 싶으실 경우 아래의 kubernetes Authenticating 문서를 참고바랍니다.

 

Authenticating

This page provides an overview of authenticating. Users in Kubernetes All Kubernetes clusters have two categories of users: service accounts managed by Kubernetes, and normal users. It is assumed that a cluster-independent service manages normal users in t

kubernetes.io

 

Understanding authentication | Authentication and authorization | OpenShift Container Platform 4.13

A user can be assigned to one or more groups, each of which represent a certain set of users. Groups are useful when managing authorization policies to grant permissions to multiple users at once, for example allowing access to objects within a project, ve

docs.openshift.com

 

- Authorzation(권한 부여): Roles, Rules, Bindings

☞ Rules: 어디서(apiGroups) 어떻게(verbs) 무엇을(resources)하는 규칙을 정의

☞ Roles: Rules의 집합

☞ Bindings: 유저/그룹과 Role을 연결하는 역할

 

Using RBAC to define and apply permissions | Authentication and authorization | OpenShift Container Platform 4.13

When you manage a user or group’s associated roles for local role bindings using the following operations, a project may be specified with the -n flag. If it is not specified, then the current project is used. You can use the following commands for local

docs.openshift.com

https://k21academy.com/docker-kubernetes/rbac-role-based-access-control/

- Admission Control(권한 부여): 허가된 사용자가 입장을 해도 되는지 유효성을 검증하고 etcd에 기록하는 단계

☞ Mutating admission: 요청된 내용에서 수정이 필요할 경우 수행하는 단계 (custom admission plugin)

☞ Validating admission: 만들어진 요청에 대해 검증하는 단계 (custom admission plugin)

 

Admission plugins | Architecture | OpenShift Container Platform 4.13

Admission plugins are used to help regulate how OpenShift Container Platform 4.13 functions. Admission plugins intercept requests to the master API to validate resource requests and ensure policies are adhered to, after the request is authenticated and aut

docs.openshift.com

https://kubernetes.io/blog/2019/03/21/a-guide-to-kubernetes-admission-controllers/

 

 

권한 부여 종류 (Authorization Level)

- Cluster RBAC: 모든 프로젝트에 적용되므로 클러스터 전체에 대한 권한을 관리할 때 사용합니다.

☞ ClusterRole: 클러스터 전체(모든 프로젝트)의 Role

☞ ClusterRoleBinding: ClusterRole만 사용 가능

- Local RBAC: 지정된 프로젝트에만 적용됩니다

☞ LocalRole: 단일 프로젝트의 Role

☞ LocalRoleBinding: ClusterRole과 Local Role 모두 사용 가능

 

Using RBAC to define and apply permissions | Authentication and authorization | OpenShift Container Platform 4.13

When you manage a user or group’s associated roles for local role bindings using the following operations, a project may be specified with the -n flag. If it is not specified, then the current project is used. You can use the following commands for local

docs.openshift.com

 

 

Default Cluster Role

Local 혹은 Cluster 전체에 사용자 혹은 그룹이 Binding할 수 있는 Role에 대한 내용입니다.

기본 클러스터 역할 설명
admin 프로젝트 관리자로 모든 리소스를 수정할 수 있는 권한있음 
cluster-admin 클러스터 관리자로 모든 리소스와 클러스터 전체에 대한 작업 및 destory 가능
basic-user 프로젝트 및 사용자에 대한 기본적인 정보를 얻을 수 있음
cluster-status 클러스터의 상태 정보를 얻을 수 있음
cluster-reader 대부분의 object를 가져오고 볼 수 있지만 수정 권한 없음
self-provisioner 프로젝트를 만들 수 있고 생성한 프로젝트 한정 admin 권한을 가짐
edit 프로젝트의 object 수정 가능하지만 Role은 보거나 수정하는 행위는 불가능함 (exec 불가)
view 프로젝트의 object를 볼 수만 있음

https://docs.openshift.com/container-platform/4.13/authentication/using-rbac.html

 

Q: admin과 cluster-admin Role의 차이는 무엇인가요?

A: admin은 클러스터 전체 관리 및 destory와 같이 클러스터 전체 영향을 주는 권한은 없는 점이 cluster-admin과는 다릅니다.  (최상위 관리자 한명을 제외한 모든 관리자는 admin role으로 부여하는 것이 좋습니다.)

 

Difference between cluster-admin and cluster-admins - Red Hat Customer Portal

I noticed that OCP cluster role binding contains some roles which are really confused me, they are"cluster-admin","cluster-admins" and "admin" What's the different between them ? Which is the better one if we want to create a new administrator for OCP ?

access.redhat.com

 

 

Rules에 정의되는 Verbs

무엇을 할 수 있는지 정의하는 verbs의 종류입니다.

더 많은 verbs들을 참고하려면 OpenShift API Document 혹은 Kubernetes API Document를 참고하시면 될 것같고 대부분이 해당 verbs를 많이 사용합니다.

Verb 설명
Create 새로운 리소스 생성
Get 개별 리소스 조회
List 여러개의 리소스 조회
Watch 개별 리소스 또는 리소스 모음을 감시 가능 (실시간)
Update 기존 리소스 내용 전체 업데이트
Patch 기존 리소스 중 일부 내용 변경
Delete 개별 리소스 삭제
Deletecollection 여러개의 리소스 삭제
 

List vs get vs watch in RBAC

Hello @06ashishrawat you can get all of the information you’d normally get out of get calls through list calls. However, having permission to list a resource doesn’t mean get calls will work. You still have to use list calls and extract the information

kodekloud.com

 

Roles

Overview Project Built-in Role Role List New Role Role Edit Overview Kubernetes Permission Menu Permission Role Delete Overview Project Administrator가 선택된 Project 전체의 역할을 관리할 수 있는 메뉴입니다. Project 생성 시 만들

support.skdt.co.kr

 

반응형