CodeBlanks Logo Icon CodeBlanks

ServiceAccount

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.0

Kubernetes, 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
yes

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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:api

Beklenen çı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.

Soru
    spec:
      ____: api
Cevap
    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

İleri seviye bölümündeki tüm dersler