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?

  1. OIDC Provider: EKS kümenizin IAM OIDC sağlayıcısını oluşturun (Küme kurulumunda bir kez yapılır).
  2. IAM Policy: S3 yetkisi veren bir JSON policy oluşturun.
  3. 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.
  4. Service Account: Kubernetes tarafında my-app-sa isminde 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.