Post

Section 7-3. Authorization

udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.

Section07. Security

Authorization

  • 클러스터에 필요한 작업에 대한 접근만 제공하기 위해 Authorization을 지원하며 그 때의 인증 메커니즘은 Node, ABAC(Attribute-Based Access Control), RBAC(Role-Based Access Control), Webhook 등이 있다.

Node

  • kube-apiserver는 관리 목적으로 사용자나 kubelet에 의해 액세스되며 kubelet은 kube-apiserver에 액세스해 서비스, 포인트, 노드, 파드에 관한 정보를 읽고 노드에 대한 상태 정보를 보고한다.
  • kubelet의 요청은 node Authorizer에 의해 처리되는데 이 때 kubelet은 system:node 그룹의 일부이며 이름 앞에 system:node를 붙여 요청하면 node Authorizer가 이를 보고 승인하여 권한을 부여한다.

ABAC

  • 속성 기반 접근 제어 ABAC이란 속성과 결합한 정책의 사용을 통해 사용자에게 접근 권한을 부여하는 접근 제어 패러다임이다.
  • 즉 사용자나 사용자 그룹을 권한 모음으로 연결하는 것이다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    +===========================================+
    |  # 그룹                    # 권한          | 
    |                                           |
    | dev-user        =====> Can view Pods      |
    |                        Can create Pods    |
    |                        Can Delete Pods    |
    |                                           |
    | dev-users       =====> Can view Pods      |
    |                        Can create Pods    |
    |                        Can Delete Pods    |
    |                                           |
    | security-1      =====> Can view CSR       |
    |                        Can approve CSR    |
    +===========================================+
    
    {"kind": "Policy, "spec": {"user": "dev-user", "namespace: "*", "resource": "pods", "apiGroup": "*"}}
    {"kind": "Policy, "spec": {"user": "dev-users", "namespace: "*", "resource": "pods", "apiGroup": "*"}}
    {"kind": "Policy, "spec": {"user": " security-1", "namespace: "*", "resource": "csr", "apiGroup": "*"}}
    
    • 각각의 사용자나 그룹에 대해 인접 형식으로 정의된 Policy 파일을 생성하고 kube-api server에 이 파일을 넘겨야 한다.
    • 보안을 추가하거나 변경해야 할 때마다 Policy 파일을 수동으로 수정하고 kube-api server를 재시작해야하므로 ABAC은 관리하기 어렵다.

RBAC

  • 역할 기반 접근 제어 RBAC이란 사용자의 역할을 기반으로 컴퓨터나 네트워크 리소스에 대한 접근을 규제하는 방식이다.
  • 즉 요구되는 권한 집합으로 역할을 생성하고 해당 역할이 필요한 사용자에게 그 역할을 연결한다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    +===============================================+
    |  # 그룹                    # 권한 모음         | 
    |                        +------------------+   |
    | dev-user        =====> | Can view Pods    |   |
    |                        | Can create Pods  |   |
    | dev-users       =====> | Can Delete Pods  |   |
    |                        |                  |   |
    |                        |    Developer     |   |
    |                        +------------------+   |
    |                                               |
    |                        +------------------+   |
    | security-1      =====> | Can View Csr     |   |
    |                        | Can approve CSR  |   |
    |                        |                  |   |
    |                        |    Security      |   |
    |                        +------------------+   |
    |                                               |
    +===============================================+
    
    • 요구되는 권한 집합으로 역할을 생성하고 해당 역할이 필요한 사용자에게 그 역할을 연결한다.
    • 역할의 수정이 필요할 경우 해당 권한 모음에서 수정하면 연결된 사용자들의 변경된 역할이 반영된다.

      Webhook

  • 외부에서 권한 관리를 하고자할 경우 사용할 수 있다.
This post is licensed under CC BY 4.0 by the author.