CKA 공부 16일차
in Devops on Kubernetes
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의 인증 방식에 가장 쉽게 접근하고 이해할 수 있는 방법이기도 하다.