Kubernetes kümenizde güvenliği sağlamanın en temel yollarından biri, doğru yapılandırılmış bir Rol Tabanlı Erişim Kontrolü (RBAC) sistemidir. RBAC, kullanıcıların ve uygulamaların yalnızca ihtiyaç duydukları kaynaklara erişmesini sağlayarak yetkisiz işlemleri engeller. Bu kılavuzda RBAC’in temel bileşenlerini, adım adım yapılandırmayı ve en iyi uygulamaları bulacaksınız.
RBAC Nedir ve Neden Önemlidir?
RBAC, Kubernetes API'sine yapılan istekleri yetkilendirmek için kullanılan bir mekanizmadır. Roller ve bağlamalar aracılığıyla, belirli bir kullanıcı, grup veya ServiceAccount'un hangi kaynaklar üzerinde hangi işlemleri (get, list, create, delete vb.) yapabileceğini tanımlar. RBAC olmadan, kümenizdeki herkes veya her pod cluster-admin yetkisine sahip olabilir, bu da büyük bir güvenlik riskidir. Özellikle Zero Trust Network Access (ZTNA) prensipleriyle uyumlu bir yapı kurmak istiyorsanız, RBAC vazgeçilmezdir.
RBAC Bileşenleri: Roller, ClusterRoller ve Bağlamalar
RBAC dört temel kaynak türüyle çalışır: Role, ClusterRole, RoleBinding ve ClusterRoleBinding. Role, belirli bir namespace içinde geçerliyken, ClusterRole küme genelinde kaynaklara (düğümler, persistent volumler gibi) veya namespaceler arası işlemlere izin verir. Bağlamalar ise bu rolleri kullanıcılara, gruplara veya ServiceAccount'lara atar.
| Bileşen | Kapsam | Kullanım Örneği |
|---|---|---|
| Role | Namespace | Bir namespace içindeki pod'ları yönetme |
| ClusterRole | Küme geneli | Düğümleri listeleme, persistent volume oluşturma |
| RoleBinding | Namespace | Bir kullanıcıyı namespace içinde Role'a bağlama |
| ClusterRoleBinding | Küme geneli | Bir kullanıcıyı küme genelinde ClusterRole'a bağlama |
Adım Adım RBAC Yapılandırması
1. Kullanıcı veya ServiceAccount Oluşturma
RBAC politikalarını uygulamak için önce bir kimlik belirlemeniz gerekir. Genellikle kubectl create serviceaccount komutuyla bir ServiceAccount oluşturulur. Örneğin:
kubectl create serviceaccount monitoring-sa -n monitoring
2. Rol veya ClusterRole Tanımlama
Bir YAML dosyasıyla izinleri belirtin. Örneğin, pod'ları listeleme ve izleme yetkisi veren bir Role:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: monitoring
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
3. Rol ile ServiceAccount'u Bağlama
RoleBinding oluşturarak ServiceAccount'u Role'a bağlayın:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: monitoring-sa-binding
namespace: monitoring
subjects:
- kind: ServiceAccount
name: monitoring-sa
namespace: monitoring
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
4. ClusterRole Kullanarak Küme Genelinde Erişim
ClusterRole ve ClusterRoleBinding ile tüm namespace'lerde pod'ları okumak için benzer bir yapı kurabilirsiniz. Bu, özellikle SIEM/SOAR araçları gibi küme genelinde izleme yapan sistemler için idealdir.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
- ClusterRoleBinding'i yanlışlıkla namespace'e bağlama: ClusterRoleBinding küme genelindedir, namespace spesifik değildir.
- Gereğinden fazla yetki verme: Her role en az ayrıcalık prensibine göre tasarlanmalıdır. Örneğin, sadece pod'ları okumak için create yetkisi vermeyin.
- ServiceAccount'ları izlememek: Her pod bir ServiceAccount ile çalışır; varsayılan ServiceAccount'u kullanmak yerine her uygulama için özel ServiceAccount oluşturun.
- RBAC değişikliklerini test etmemek:
kubectl auth can-ikomutu ile yetkileri doğrulayın.
En İyi Uygulamalar
- Namespace tabanlı izolasyon: Farklı takımlar veya projeler için ayrı namespace'ler kullanın ve her birine özel roller atayın.
- Group bazlı yetkilendirme: Kullanıcıları LDAP/OIDC gruplarına ekleyerek toplu yetkilendirme yapın.
- Audit loglarını etkinleştirin: RBAC ihlallerini tespit etmek için API sunucu audit loglarını izleyin. Bu, Olay Müdahale Planınızın bir parçası olmalıdır.
- Yedekli rol tanımlamalarından kaçının: Birden fazla yerde aynı izinleri tanımlamak kafa karışıklığına yol açar; merkezi bir yönetim düşünün.
RBAC ile Multi-Cloud ve Hibrit Bulut Stratejileri
Kubernetes RBAC, birden fazla bulut sağlayıcısında (AWS, Azure, GCP) veya hibrit ortamlarda tutarlı bir güvenlik politikası uygulamanızı sağlar. Her küme kendi RBAC yapılandırmasına sahip olsa da, multi-cloud stratejilerinde merkezi bir kimlik yönetimi (örneğin, OIDC) ile RBAC entegre edilebilir. Bu sayede farklı bulutlardaki kümelerde aynı kullanıcı grupları aynı yetkilere sahip olur.
RBAC, Kubernetes güvenliğinin temel taşlarından biridir. Doğru yapılandırıldığında, hem operasyonel verimliliği artırır hem de yetkisiz erişim riskini minimize eder. Bu kılavuzdaki adımları izleyerek kümenizi güvence altına alabilir ve en iyi uygulamalarla sürdürülebilir bir erişim yönetimi kurabilirsiniz.
Sık Sorulan Sorular
RBAC ile kimlik doğrulama arasındaki fark nedir?
Kimlik doğrulama (authentication) kullanıcının kim olduğunu doğrularken, RBAC (yetkilendirme) kullanıcının hangi işlemleri yapabileceğini belirler. Kubernetes'te kimlik doğrulama için sertifikalar, tokenlar veya OIDC kullanılırken, RBAC bu kimliklere izin atar.
Bir ServiceAccount için RBAC nasıl yapılandırılır?
Önce ServiceAccount oluşturun, ardından bir Role veya ClusterRole tanımlayın ve son olarak bir RoleBinding veya ClusterRoleBinding ile ServiceAccount'u role bağlayın. YAML dosyalarını kubectl apply ile uygulayın.
ClusterRole ve Role arasındaki temel fark nedir?
Role yalnızca bir namespace içinde geçerliyken, ClusterRole küme genelinde (tüm namespace'lerde veya küme kaynaklarında) geçerlidir. ClusterRole, namespace bağımsız kaynaklara (node, persistent volume) erişim için kullanılır.
RBAC değişikliklerini test etmek için hangi komut kullanılır?
kubectl auth can-i komutu, belirli bir kullanıcı veya ServiceAccount'un bir işlemi yapıp yapamayacağını kontrol eder. Örneğin: kubectl auth can-i list pods --as=system:serviceaccount:monitoring:monitoring-sa
Varsayılan ServiceAccount'u kullanmak neden risklidir?
Varsayılan ServiceAccount genellikle gereğinden fazla yetkiye sahip olabilir ve her pod aynı kimlikle çalışır. Bu, ayrıcalık yükseltme saldırılarına yol açabilir. Her uygulama için özel ServiceAccount oluşturmak en iyi uygulamadır.






