
Review Access - k8s 서버 리소스에 대한 액세스 매트릭스를 보여주는 kubectl 플러그인
접근 권한 검토 - 서버 리소스에 대한 접근 매트릭스를 보여주는 kubectl 플러그인
지금 사용 중인 Kubernetes 클러스터에서 어떤 접근 권한을 가지고 있는지 궁금해 본 적이 있나요?
단일 리소스에 대해서는 kubectl auth can-i list deployments를 사용할 수 있지만, 전체적인 개요를 원하시나요?
이것이 rakkess의 목적입니다.
kubectl auth can-i --list와 유사하게 현재 사용자와 모든 서버 리소스에 대한 접근 권한을 나열합니다.
또한 특정 서버 리소스와 상호 작용할 수 있는 사용자를 찾는 데 유용합니다.
rakkess resource 하위 명령을 확인해보세요. 아래를 참조하세요.

... 클러스터 범위에서
rakkess
... 특정 네임스페이스에서
rakkess --namespace default
... 동사(verbs) 지정
rakkess --verbs get,delete,watch,patch
... 다른 사용자로
rakkess --as other-user
... 다른 서비스 계정으로
rakkess --sa kube-system:namespace-controller
... 일반적인 kubectl 파라미터와 함께 사용
KUBECONFIG=otherconfig rakkess --context other-context

...모든 네임스페이스에서 전역적으로 (ClusterRoleBindings만 고려)
rakkess resource configmaps
...특정 네임스페이스에서 (RoleBindings 및 ClusterRoleBindings 고려)
rakkess resource configmaps -n default
...약식 표기법 사용
rakkess r cm # rakkess resource configmaps와 동일
.. 사용자 정의 동사(verbs) 사용
rakkess r cm --verbs get,delete,watch,patch
일부 역할은 특정 이름을 가진 리소스에만 적용됩니다.
이러한 구성을 검토하려면 추가 인수로 리소스 이름을 제공하세요.
예를 들어, ingress-nginx 네임스페이스에서 ingress-controller-leader-nginx라는 이름의 ConfigMap에 대한 접근 권한을 표시합니다 (이전 예제의 nginx-ingress-serviceaccount와 미묘한 차이점에 유의):

rakkess resource는 Role, ClusterRole 및 해당 바인딩을 쿼리해야 하므로 일반적으로 관리자 클러스터 접근이 필요합니다.
Usage도 참조하세요.
rakkess를 설치하는 방법은 여러 가지가 있습니다. 권장 설치 방법은 krew를 통한 것입니다.
Krew는 kubectl 플러그인 관리자입니다. 아직 krew를 설치하지 않았다면 https://github.com/kubernetes-sigs/krew에서 받을 수 있습니다.
그런 다음 설치가 간단합니다.
kubectl krew install access-matrix
플러그인은 kubectl access-matrix로 사용할 수 있습니다. 자세한 내용은 doc/USAGE를 참조하세요.
설치에 바이너리를 사용하는 경우 doc/USAGE도 참조하세요.
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
curl -LO https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-amd64-darwin.tar.gz \
&& tar xf rakkess-amd64-darwin.tar.gz rakkess-amd64-darwin \
&& chmod +x rakkess-amd64-darwin \
&& mv -i rakkess-amd64-darwin $GOPATH/bin/rakkess
https://github.com/corneliusweig/rakkess/releases/download/v0.5.0/rakkess-windows-amd64.zip
필수 사항:
컴파일:
export PLATFORMS=$(go env GOOS)
make all # 바이너리는 out/ 디렉토리에 위치합니다.
필수 사항:
컴파일:
mkdir rakkess && chdir rakkess
curl -Lo Dockerfile https://raw.githubusercontent.com/corneliusweig/rakkess/master/Dockerfile
docker build . -t rakkess-builder
docker run --rm -v $PWD:/go/bin/ --env PLATFORMS=$(go env GOOS) rakkess
docker rmi rakkess-builder
바이너리는 현재 디렉토리에 위치합니다.
| 다른 사람들이 rakkess에 대해 뭐라고 말하나요? |
|---|
"이거 정말 편리해 보이네요! rakkess, 사용 가능한 모든 리소스에 대한 접근 매트릭스를 보여주는 kubectl 플러그인." – @mhausenblas |
"확실히 꽤 유용합니다. rakkess --as system:serviceaccount:my-ns:my-sa -n my-ns는 네임스페이스 내 서비스 계정의 접근 매트릭스를 출력합니다." – @fakod |
| "완전 대박입니다. 정말 마음에 들어요." – @ralph_squillace |
| "오늘 하루를 만들었어요. 사실 오늘은 아니지만, 앞으로 정말 많이 사용할 것 같아요." – @Soukron |
[1]: 이 모드는 kubectl-who-can에서 영감을 받았습니다.