CKA 공부 16일차

Security

  • 이번 시간에는 어떤 유저가 쿠버네티스에 접근 권한을 가질 수 있는지에 대한 보안에 대해서 공부해보자.

  • 다양한 인증 방법에 대해서 배워보자, 입문자에게는 다소 어려울 수 있지만 입문자를 넘어서보자!

Security Primitives

  • kube-apiserver는 모든 클러스터 내의 오브젝트와의 상호작용을 하는 최앞단 컴포넌트이다.

  • 결국 인증은 이 kube-apiserver누가 그리고 무엇을하게 할 것인지를 결정하는 일이다.

    • Files : ID/PASSWORD, ID&TOKEN
    • Certificate, External Authentication provider - LDAP
    • Service Account
  • 그러면 인증이 완료된 이후 Authorization(인가/권한부여)는 어떻게 할까?

  • RBAC Authorization은 Role Based Access Control의 줄임말이다. 쉽게 말해 역할을 기준으로 접근을 제한할 수 있는 인가 방식이다.

  • ABAC AUthorization은 Attribute Based Access Control의 줄임말이다.

  • 또한 Node Authorization, Webhook 모드 등이 있는데 이는 이 후에 살펴보도록 하자.

  • kube-apisever를 주축으로 kubelet, ETCD Cluster, Controller-manager, kube-proxy, kube-scheduler들은 모두 kube-apiserver와의 통신에 TLS 인증서가 필요하다.

  • 이를 위해 k8s의 kube-apiserver에는 정적 파일에 유저 정보와 유저 정보+토큰을 관리하는 기능을 제공한다.

  • 이는 가장 쉬운 방법이며 csv 파일에 비밀번호,유저이름,유저ID 순으로 기록하고 kube-apiserver--basic-auth-file=user-details.csv에 저장해두면 된다.

  • 그 이후 매 요청마다 curl -v -k https://master-node-ip:6443/api/v1/pods -u "user1:password123"과 같은 식으로 인증할 수 있다.

  • 토큰의 경우 토큰,비미럽ㄴ호,유저이름,유저ID순으로 기록하며 --token-auth-file=user-details.csv에 저장하면 된다.

  • 당연히 토큰이니 헤더에 토큰 값을 포함시켜 전송하면 된다.

  • 물론 위와같이 정적 파일에 유저정보를 평문으로 저장하는 것은 당연히 안전하지않으며 추천하는 방법은 아니다.

  • 그러나 k8s의 인증 방식에 가장 쉽게 접근하고 이해할 수 있는 방법이기도 하다.





© 2022. by minkuk

Powered by minkuk