2025-03-25Hünkar Döner
EKS İçin IAM Roles for Service Accounts (IRSA) Rehberi
SecurityIAMIRSAEKS
E
EKS İçin IAM Roles for Service Accounts (IRSA) Rehberi
EKS üzerindeki bir uygulamanın S3 bucket'ına resim yüklemesi gerekiyorsa, bu yetkiyi nasıl verirsiniz?
- Yanlış Yol: Access Key / Secret Key üretip pod içine gömmek (Güvenlik riski, rotasyon zorluğu).
- Eski Yol: Worker Node'un (EC2) IAM rolüne S3 yetkisi vermek. (O node üzerindeki tüm podlar bu yetkiye sahip olur, çok tehlikeli).
- Doğru Yol: IRSA (IAM Roles for Service Accounts).
IRSA Nedir?
IRSA, Kubernetes Service Account'larını AWS IAM Rolleri ile eşleştiren bir özelliktir. Bu sayede, sadece o Service Account'u kullanan pod, o IAM rolünün yetkilerine sahip olur. Diğer podlar erişemez.
Nasıl Kurulur?
- OIDC Provider: EKS kümenizin IAM OIDC sağlayıcısını oluşturun (Küme kurulumunda bir kez yapılır).
- IAM Policy: S3 yetkisi veren bir JSON policy oluşturun.
- IAM Role: Bu policy'yi kullanan bir rol oluşturun. Trust Relationship kısmında, EKS OIDC sağlayıcısına ve belirli bir Service Account ismine (örn:
my-app-sa) güvenmeyi şart koşun. - Service Account: Kubernetes tarafında
my-app-saisminde bir Service Account oluşturun ve role ARN'ini notasyon olarak ekleyin:metadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::123:role/my-s3-role
Kullanım
Pod'unuzu bu Service Account ile başlattığınızda, EKS otomatik olarak pod içine AWS_ROLE_ARN ve AWS_WEB_IDENTITY_TOKEN_FILE ortam değişkenlerini enjekte eder. AWS SDK'ları (Boto3, Go SDK vb.) bu değişkenleri tanır ve otomatik olarak yetki alır. Kodunuzda hiçbir değişiklik yapmanıza gerek kalmaz.