본문 바로가기

Computer Science/Kubernetes(CKA) 자격증 준비

Kubernetes 정리 159: Role Based Access Controls

1. Role을 어떻게 생성할까?

우리는 역할 오브젝트를 생성하여 이를 수행합니다. 그래서 우리는 API 버전이 rbac.authorization.k8s.io/v1으로 설정된 role definition 파일을 만듭니다. kind는 Role 입니다. metadata에 name을 developer로 지정합니다. 다음으로 rules를 지정합니다. 각 rule에는 apiGroups, resources, verbs 세 가지 섹션이 있습니다. 

  • apiGroups
  • resources
  • verbs

Core 그룹의 경우 API 그룹 섹션을 비워 둘 수 있습니다. 다른 그룹의 경우 그룹 이름을 입력해야 합니다

우리가 개발자에게 액세스 권한을 부여하려는 리소스는 파드입니다. 수행할 수 있는 작업(verb)은 나열, 가져오기, 생성 및 삭제입니다. 마찬가지로 개발자가 config map을 만들 수 있도록 config map을 만드는 다른 규칙을 추가합니다. 이와 같이 단일 역할에 대해 여러 규칙을 추가할 수 있습니다. kubectl create role 커맨드를 사용하여 역할을 생성합니다.

$ kubectl create -f developer-role.yaml

 

2. 사용자를 역할에 연결.

다음 단계는 사용자를 해당 역할에 연결하는 것입니다. 이를 위해 롤 바인딩이라는 또 다른 오브젝트를 만듭니다. 롤 바인딩 오브젝트는 사용자 오브젝트를 역할에 연결합니다. 우리는 그것을 devuser-developer-binding.yaml로 이름을 지정할 것입니다.

kind는 RoleBinding입니다. 두 개의 섹션이 있습니다. subjects는 사용자 세부 정보를 지정하는 곳입니다. roleRef 섹션은 우리가 생성한 롤의 세부 정보를 제공하는 곳입니다. kubectl create 커맨드를 사용하여 role binding을 만들 수 있습니다. 또한 역할 및 역할 바인딩은 네임스페이스 범위에 속합니다. 따라서 여기에서 dev-user는 default 네임스페이스 내에서 파드 및 config map에 액세스할 수 있습니다. 다른 namespace 내에서 dev-user의 액세스를 제한하려면 파일을 만드는 동안 definition 파일의 메타데이터 내에서 namespace을 지정하면 됩니다.

 

3. View RBAC

생성된 역할을 보려면 kubectl get roles 커맨드를 실행하십시오.

$ kubectl get roles

롤 바인딩을 조회하려면 kubectl get rolebindings 커맨드를 실행하십시오.

$ kubectl get rolebindings

역할에 대한 자세한 정보를 보려면 kubectl describe role 커맨드를 실행하십시오.

$ kubectl describe role developer

마찬가지로 롤 바인딩에 대한 세부 정보를 보려면 kubectl describe rolebinding 커맨드를 실행합니다.

$ kubectl describe rolebinding devuser-developer-binding

여기에서 롤 바인딩에 대한 세부 정보를 볼 수 있습니다.