Kubernetes

[k8s] 사용자 전체 권한 확인 - 2

비번변경 2023. 2. 7. 23:04

개요

2023.01.28 - [k8s] 현재 사용자 전체 권한 확인 - 1에서 쿠버네티스 사용자의 권한 목록을 확인했었다.

이 글에서는 kuectl 플러그인 중 하나인 access-matrix를 이용해 사용자의 권한 목록을 확인해 본다.

 

 

access-matrix

리소스에 대한 액세스 매트릭스를 보여주는 kubectl 플러그인이다.

kubectl auth can-i --list와 유사하게 현재 사용자의 리소스에 대한 액세스 권한을 나열하되, 사람이 읽기 편한 표 형식으로 출력해 준다. 쿠버네티스 클러스터 관리자가 아닌 일반 사용자가 수행할 수 있는 작업을 확인할 때 유용하게 사용할 수 있다.

 

 

설치

Krew 또는 소스로 설치할 수 있다.

 

Krew

kubectl krew install access-matrix

 

소스 설치 (Linux)

curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-linux.tar.gz \
  && tar xf rakkess-amd64-linux.tar.gz rakkess-amd64-linux \
  && chmod +x rakkess-amd64-linux \
  && mv -i rakkess-amd64-linux $GOPATH/bin/rakkess

 

 

사용법

현재 사용자의 클러스터 scope 권한 전체를 확인하고 싶을 때는 옵션 없이 사용한다.

kubectl access-matrix

 

특정 네임스페이스에 대한 권한을 확인할 때는 -n 옵션을 사용한다.

kubectl access-matrix -n <NAMESPACE>

 

다른 사용자 또는 ServiceAccount의 권한을 확인할 때는 --as, --sa 옵션을 사용한다.

kubectl access-matrix --as <USER_NAME>

kubectl access-matrix --sa <NAMESPACE>:<SERVICE_ACCOUNT>

 

 

특정 리소스 권한이 있는 사용자 확인

특정 리소스에 대한 권한이 있는 사용자를 확인할 때는 아래와 같이 사용한다. namespace를 지정하지 않으면 ClusterRoleBinding에 대해서만 조회한다.

kubectl access-matrix resource <RESOURCE_TYPE>

# 예시
kubectl access-matrix resource pods

namespace를 지정하면 RoleBinding, ClusterRoleBinding 모두 조회한다.

 

 

참고 문서

https://github.com/corneliusweig/rakkess

https://www.padok.fr/en/blog/kubectl-plugins#matrix