개요
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 모두 조회한다.