쿠버네티스 RBAC 개념 및 설정

ZER0·2022년 10월 29일
1

Kubernetes

목록 보기
25/39
post-thumbnail
post-custom-banner

1. 개념

  • 쿠버네티스는 네임스페이스 단위에서의 유저 리소스 접근을 핸들링하기 위한 4가지 접근제어 방식이 존재
    • Node : 스케줄링 된 파드의 kubelet에서 접근제어
    • ABAC : 속성기반 접근제어
    • RBAC : 역할기반 접근제어
    • Webhook : POST 요청에 대한 접근제어

2. RBAC Role & RoleBinding YAML

  • Role

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
     
    metadata:
      namespace: default
      name: test-pod-reader
     
    rules:
    - apiGroups: [""] # "" means api
      resources: ["pods"]
      verbs: ["get""watch""list"]
      resourceNames: ["pod-A""pod-B"]
     
    - apiGroups: ["apps"
      resources: ["deployment"]
      verbs: ["create""list"]
    cs

    • 9번 라인 : 핸들링할 API가 포함된 그룹
    • 10번 라인 : 핸들링할 API 종류
    • 11번 라인 : 핸들링하고자 하는 액션
    • 12번 라인 : 핸들링을 허용하고자 하는 특정 리소스
  • RoleBinding

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    apiVersion: rbac.authorization.k8s.io/v1
     
    kind: RoleBinding
    metadata:
      name: read-pods
      namespace: default
     
    subjects:
    - kind: User or Group or ServiceAccount
      name: jane 
      apiGroup: rbac.authorization.k8s.io
     
    roleRef:
      kind: Role 
      name: test-pod-reader 
      apiGroup: rbac.authorization.k8s.io
    cs

    • 8 ~ 11번 라인 : 롤을 적용할 유저
    • 13 ~ 16번 라인 : 유저에게 적용할 롤

3. API 그룹

  • 리소스를 핸들링할 수 있는 API를 각 종류별로 모아놓은 그룹
  • apiVersion에 명시한 그것
  • 6가지 상위 그룹이 존재
    • /metrics
    • /healthz
    • /version
    • /api
    • /apis
    • /logs
  • /api에 포함된 api
  • /apis에 포함된 api
  • API버전(그룹)을 확인하는 방법 : kubectl api-resources

4. 적용중인 접근제어 종류 확인

  • vi /etc/kubernetes/manifests/kube-apiserver.yaml
  • authorization-mode 확인

5. RBAC 핸들링

  • 롤 목록 확인 : kubectl get role
  • 롤 상세 정보 확인 : kubectl describe role [롤_이름]
  • 롤 바인딩 목록 확인 : kubectl get rolebindings
  • 롤 바인딩 상세 정보 확인 : kubectl describe rolebindings [롤바인딩_이름]
  • 권한 가능 여부 확인 : kubectl auth can-i [액션] [리소스] --as [유저]업로드중..

참고

  1. https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
profile
Security Compliance Engineer
post-custom-banner

0개의 댓글