CKA SimA 10 RBAC 서비스어카운트, 롤, 롤바인딩

1 개요[ | ]

k8s RBAC 생성 및 테스트
k8s ServiceAccount, Role, RoleBinding 생성 및 테스트

2 변수 설정[ | ]

  • 실습에 사용할 변수 정의
$ export NAMESPACE=project-analytics
$ export SA_NAME=data-processor
$ export ROLE_NAME=data-writer
$ export ROLEBINDING_NAME=data-writer-binding

3 ServiceAccount 생성[ | ]

  • 대상 네임스페이스가 없으면 먼저 생성
  • ServiceAccount는 Pod가 API 서버에 접근할 때 사용하는 신원
# k create ns ${NAMESPACE}
namespace/project-analytics created
# k -n ${NAMESPACE} create sa ${SA_NAME}
serviceaccount/data-processor created

4 Role 생성[ | ]

  • Role은 지정된 네임스페이스 내에서 리소스에 대한 권한을 부여
  • Secret과 ConfigMap을 생성(create)할 수 있는 권한만 허용
# k -n ${NAMESPACE} create role ${ROLE_NAME} \
    --verb=create \
    --resource=secrets \
    --resource=configmaps
role.rbac.authorization.k8s.io/data-writer created

5 RoleBinding 생성[ | ]

  • RoleBinding은 특정 Role을 하나 이상의 사용자, 그룹, 또는 ServiceAccount에 연결
  • 같은 네임스페이스 내의 Role과 ServiceAccount를 연결
# k -n ${NAMESPACE} create rolebinding ${ROLEBINDING_NAME} \
    --role=${ROLE_NAME} \
    --serviceaccount=${NAMESPACE}:${SA_NAME}
rolebinding.rbac.authorization.k8s.io/data-writer-binding created

6 권한 테스트[ | ]

  • k auth can-i 명령어를 통해 특정 액션이 허용되는지 여부 확인 가능
  • 허용되어야 할 액션
# k -n ${NAMESPACE} auth can-i create secret --as=system:serviceaccount:${NAMESPACE}:${SA_NAME}
yes
# k -n ${NAMESPACE} auth can-i create configmap --as=system:serviceaccount:${NAMESPACE}:${SA_NAME}
yes
  • 허용되지 않아야 할 액션
# k -n ${NAMESPACE} auth can-i delete secret --as=system:serviceaccount:${NAMESPACE}:${SA_NAME}
no
# k -n ${NAMESPACE} auth can-i get configmap --as=system:serviceaccount:${NAMESPACE}:${SA_NAME}
no
# k -n ${NAMESPACE} auth can-i create pod --as=system:serviceaccount:${NAMESPACE}:${SA_NAME}
no

7 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}