ServiceAccount
- Docker & Kubernetes kursu
- İleri seviye
- Ders 46/70
- 4 dk
ServiceAccount ile Pod kimliğini öğrenirsin.
ServiceAccount
ServiceAccount, pod'ların (insanların değil) API'ye erişim kimliğidir. Her namespace'te bir default ServiceAccount vardır ve pod belirtilmezse onu kullanır. Bir uygulama API'ye erişecekse (ör. pod listeleyen bir operator), kendine özel bir ServiceAccount ve yalnızca gereken izinler verilir:
kubectl create serviceaccount api -n dev
spec:
serviceAccountName: api
containers:
- name: api
image: api:1.0Kubernetes, pod'a kısa ömürlü bir belirteci /var/run/secrets/kubernetes.io/serviceaccount/token dosyasında otomatik bağlar.
ServiceAccount'a izin vermek
ServiceAccount, RoleBinding'de kind: ServiceAccount özne olarak bağlanır; komut satırında namespace:ad biçiminde yazılır. İzin system:serviceaccount:namespace:ad kimliğiyle sınanır:
kubectl create rolebinding api-pod-okuyucu --role=pod-okuyucu --serviceaccount=dev:api -n dev
kubectl auth can-i list pods -n dev --as system:serviceaccount:dev:api
yesUygulama Uygulamaya kimlik ver
Üç komut yaz: dev'de api ServiceAccount'unu oluştur; dev'de pod-okuyucu rolünü dev:api ServiceAccount'una veren api-pod-okuyucu RoleBinding'ini oluştur; system:serviceaccount:dev:api adına dev'de pod listeleme iznini sorgula.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl create serviceaccount api -n dev
kubectl create rolebinding api-pod-okuyucu --role=pod-okuyucu --serviceaccount=dev:api -n dev
kubectl auth can-i list pods -n dev --as system:serviceaccount:dev:apiBeklenen çıktı
serviceaccount/api created rolebinding.rbac.authorization.k8s.io/api-pod-okuyucu created yes
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 API'ye hiç erişmeyen bir uygulama için ne önerilir?
- default ServiceAccount'a edit vermek
- Hiçbir şey yapmamak
- automountServiceAccountToken: false ile belirteci bağlamamak Doğru cevap
- cluster-admin vermek
Açıklama: Kullanılmayan belirteç, pod ele geçirilirse saldırgana kapı açar.
2 Pod'un hangi ServiceAccount'u kullanacağını belirt.
spec:
____: api
spec:
serviceAccountName: api
Açıklama: serviceAccountName pod spec'indedir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
ServiceAccount |
Pod kimliği |
default |
Belirtilmezse |
dev:api |
namespace:ad |
automountServiceAccountToken |
Belirteç bağlama |