1. 사용자 및 서비스 계정의 종류:
쿠버네티스에서는 두 종류의 계정이 있다:
- Normal users
- Service Accounts
두 계정은 인증 대상이 다르고 인증을 관리하는 주체가 다르다.
Normal Users:
- 쿠버네티스를 사용하는 외부 사람들 즉 개발자나, 관리자에 대한 인증을 말한다.
kubectl
을 통해서kube-apiserver
에 명령을 내리기 위해선 Credentials 정보가 필요하다. GKE 의 경우 GCP 에서 인증과 인가 검사가 끝나면 이 Credentials 정보를 발급해준다.- 즉 GKE 를 사용하는 사람들은 쿠버네티스를 통해서 인증을 받는 것이 아니라 Google 에서 인증을 받아야 함:
- 먼저 Google 로그인을 통해서 인증을 해야함. 이를 해주는 서비스가 Google Cloud Identity 이다.
- 인증이 끝난 후 GKE 에 대한 접근 권한이 있는지 확인해야한다. 이를 해주는 서비스가 Google Cloud IAM (Identity and Access Management) 이라고 한다.
Service Accounts:
- 쿠버네티스 내부에서 작동하고 있는 Pod 내의 프로세스에 대한 인증을 말한다. 주로 Pod 내의 프로세스가 쿠버네티스 API 를 호출하기 위해서 필요하다.
- 쿠버네티스에서 관리하는 계정이다.
2. Google Cloud Identity:
Google Cloud Identity 는 Google 에서 인증을 해주는 서비스를 말한다.
회사에서는 Google Cloud Identity 를 통해서 우리 회사의 GCP 관리를 위해서 조직원들을 추가하고 삭제하는 멤버 관리를 할 수 있다.
3. 인증 및 권한 부여
GKE 를 접근하고 제어할 수 있는 권한을 줄 수 있는 방법은 다음 두 가지가 있다.
- Google Cloud IAM
- RBAC (Role-Based Access Control)
중요한 건 이 두가지 권한은 각자의 역할과 범위가 다르다는 것이다. 이 둘을 함께 조합해서 잘 쓰는게 중요하다.
- 그리고 권한을 줄 때 중요한 건 the principle of least privilege (최소 권한의 법칙) 이다. 권한을 오버해서 주지 말고 딱 필요한 만큼만 최소한으로 주는 것.
Google Cloud IAM:
- Google Cloud Platform(GCP) 리소스에 대해서 접근 권한을 넣을 수 있는 서비스이다.
- GCP 프로젝트 수준에서 이 권한은 관리된다.
- GKE 클러스터를 생성하거나 관리하는 수준에서 사용이 가능하다.
RBAC:
- 쿠버네티스 클러스터 내부에서 쿠버네티스 오브젝트를 제어할 때 사용되는 권한이다.
- Namespace Level 과 Cluster Level 에서의 권한을 줄 수 있다.
- 예시로, 특정 네임스페이스에서만 Pod 를 삭제하고 추가할 수 있도록 하는 권한을 줄 수도 있다.
4. kube-apiserver 의 인증 방법:
kube-apiserver 는 HTTPS 로 오는 요청에 대해서 인증 검사를 수행한다.
인증은 여러가지 방법을 통해서 수행될 수 있다:
- OpenID Connect Token
- x509 Client certs
- basic Authentication using static password
OpenID Connect Token 의 인증만 사용하는 것을 권장한다고 한다. 이게 제일 보안적으로 우수하다고 함.
- x509 Client certs 는 인증서 관리를 잘 해줘야하고 basic Authentication using static password 는 비밀번호 관리를 잘해줘야함.
GKE 1.12 이상부터는 OpenID Connect Token 방식의 인증만 제공된다.
'Kubernetes' 카테고리의 다른 글
Google Kubernetes Engine: RBAC (0) | 2023.11.25 |
---|---|
Google Kubernetes Engine: Cloud IAM (0) | 2023.11.19 |
Google Kubernetes Engine: kubectl (0) | 2023.11.18 |
Google Kubernetes Engine: Secret (0) | 2023.11.17 |
Google Kubernetes Engine: ConfigMap (0) | 2023.11.17 |