- userAccount : K8S 에 있는 오브젝트들을 동작시키는 등은 K8S 시스템에서 제어한다는 의미에서 ServiceAccount 를 사용한다. 우리가 알고 싶은 일반적인 UserAccount 의 개념도 있지만, 주로 SA 를 사용하고, 만약 UserAccount 를 사용하고 싶다면, 이는 외부 인증 서버를 연결해야 한다
- ServiceAccount 축약어 : SA
- userAccount : K8S 는 일반 사용자를 나타내는 오브젝트가 없다. K8S 에서는 이 사용자에 대한 관리를 외부에서 맡기고 있다
- ServiceAccount : 주로 파드에 할당하는 계정으로, 사람이 아니라 애플리케이션이나 시스템 프로그램의 식별, 인증, 인가를 위한 계정 이다
export KUBECONFIG=/etc/kubernetes/admin.conf
root@manager:~/k8slab/pvpvclab# kubectl get svc --as system:serviceaccount:default:user1
Error from server (Forbidden): services is forbidden: User "system:serviceaccount:default:user1" cannot list resource "services" in API group "" in the namespace "default"
- user1 은 권한이 없다
root@manager:~/k8slab/0908# k describe secret default-token-229bg
Name: default-token-229bg
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: f70822af-2bb8-4fec-a2c6-a435aeab0b91
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1066 bytes
namespace: 7 bytes
token: [ 토큰 ]
root@manager:~/k8slab/pvpvclab# k --token=dldld get svc <-- 토큰 무시됨 - 토큰 입력란에 아무거나 입력시
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26h
root@manager:~/k8slab/pvpvclab# k get svc --as system:serviceaccount:default:user1 <-- 정상동작
- 해당 네임스페이스에만 제한적
- SA 와의 연결을 위해서는 RoleBinding 이 필요하다
- 네임스페이스에 제한적이지 않다
- SA 와의 연결을 위해서는 ClusterRoleBinding 이 필요하다