EKS İçin IAM Rol Yapılandırması ve RBAC Karşılaştırması
EKS İçin IAM Rol Yapılandırması ve RBAC
Amazon EKS güvenliğinin en kafa karıştırıcı kısımlarından biri, kimlik doğrulama (Authentication) ve yetkilendirme (Authorization) mekanizmalarının nasıl çalıştığıdır. Çünkü EKS, iki farklı dünyanın kesişim noktasındadır: AWS IAM ve Kubernetes RBAC.
Bu yazıda, bu iki sistemin nasıl entegre çalıştığını ve güvenli bir erişim mimarisinin nasıl kurulacağını inceleyeceğiz.
AWS IAM vs Kubernetes RBAC: Fark Nedir?
- AWS IAM (Identity and Access Management): "KİM" sorusuna cevap verir. (Authentication). AWS hesabınıza giriş yapan kullanıcının veya servisin kim olduğunu doğrular.
- Kubernetes RBAC (Role-Based Access Control): "NE YAPABİLİR" sorusuna cevap verir. (Authorization). Kümeye giren kullanıcının hangi podları görebileceğini, hangilerini silebileceğini belirler.
EKS'te süreç şöyle işler:
- Kullanıcı
kubectlkomutu çalıştırır. - AWS IAM, kullanıcının kimliğini doğrular ve bir token verir.
- EKS, bu kimliği alır ve RBAC kurallarına bakarak "Bu kullanıcı podları listeleyebilir mi?" diye kontrol eder.
EKS Erişim Yönetimi Nasıl Yapılandırılır?
1. Kümeye Erişim (Cluster Access)
Eskiden aws-auth isimli bir ConfigMap dosyasını manuel düzenlemek gerekirdi. Bu hataya çok açıktı.
Artık EKS Access Entries API'si ile IAM kullanıcılarını veya rollerini doğrudan EKS konsolundan veya Terraform ile kümeye tanımlayabilirsiniz.
Örnek Senaryo:
- Admin Rolü: Tam yetki.
cluster-adminRBAC grubuna eşlenir. - Developer Rolü: Sadece kendi namespace'ini görebilir.
editveya özel bir RBAC rolüne eşlenir. - Viewer Rolü: Sadece okuma yapabilir.
viewrolüne eşlenir.
2. Podların AWS Erişimleri (IRSA)
Pod'larınızın S3'ten dosya okuması veya DynamoDB'ye yazması gerekiyorsa, asla Node'lara (EC2) IAM rolü atamayın! Bunun yerine IAM Roles for Service Accounts (IRSA) kullanın.
IRSA Nasıl Çalışır?
- AWS'te bir IAM Rolü oluşturun (Örn:
S3ReadOnly). - Kubernetes'te bir Service Account oluşturun ve bu rolün ARN'ini
eks.amazonaws.com/role-arnnotasyonu (annotation) ile ekleyin. - Pod'unuzu bu Service Account ile başlatın.
- Pod, AWS SDK'sını kullanarak geçici kimlik bilgileriyle (STS) S3'e güvenli bir şekilde erişir.
Bu yöntem, "En Az Yetki" (Least Privilege) prensibinin temelidir ve AWS Danışmanlığı projelerimizde standart olarak uygulanır.
Özet
EKS güvenliği için IAM ve RBAC'ı bir bütün olarak düşünmelisiniz. Kimlik doğrulama için IAM, küme içi yetkilendirme için RBAC, pod yetkilendirmesi için ise IRSA kullanmak en doğru stratejidir.