0Pricing
Cloud & IT Cert Prep · Ders

Hizmet Hesapları için IAM Rolleri (IRSA)

Pod'ların düğüm düzeyinde izinler olmadan AWS hizmetlerine erişebilmesi için ayrıntılı IAM rollerini IRSA ile Kubernetes hizmet hesaplarına bağlayın.

Hizmet Hesapları için IAM Rolleri (IRSA), CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Pod IAM Sorunu

EKS üzerinde çalışan bir pod'un bir AWS API'sini çağırması gerektiğinde — örneğin S3'ten okuma veya DynamoDB'ye yazma işlemi yapmak için — AWS kimlik bilgilerine ihtiyaç duyar. Naif yaklaşım, bir IAM kullanıcısı oluşturup erişim anahtarlarını ortam değişkenleri olarak doğrudan kod içine yazmaktır. Bu yaklaşım güvenli değildir ve en az ayrıcalık ilkesiyle çelişir; çünkü aynı düğümdeki tüm pod'lar aynı kimlik bilgilerini paylaşır. IAM Roles for Service Accounts (IRSA), ayrıntılı izinlere sahip IAM rollerini doğrudan Kubernetes hizmet hesaplarına bağlayarak bu sorunu çözer.

IRSA Nasıl Çalışır: OIDC Federasyonu

IRSA, OpenID Connect (OIDC) federasyonu aracılığıyla çalışır. EKS, kümeniz için bir OIDC sağlayıcısı oluşturur. Bir pod, IAM rolü ARN'siyle açıklama eklenmiş bir hizmet hesabına başvurduğunda EKS, imzalı bir projeksiyonlu hizmet hesabı belirtecini pod'a ekler. Pod içindeki AWS SDK, bu belirteci AWS STS'nin AssumeRoleWithWebIdentity API'sini kullanarak geçici AWS kimlik bilgileriyle değiş tokuş eder — uzun süre geçerli anahtarlara gerek kalmaz.

# View the OIDC issuer URL for your cluster
aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.identity.oidc.issuer' \
  --output text

# Example output:
# https://oidc.eks.us-east-1.amazonaws.com/id/EXAMPLEIDSTRING

1. Adım: OIDC Sağlayıcısını İlişkilendirme

IRSA'yı kullanmadan önce EKS OIDC verenini AWS hesabınızda güvenilir bir kimlik sağlayıcısı olarak ilişkilendirmeniz gerekir. Bu işlem, AWS STS'nin tanıyacağı bir IAM OIDC sağlayıcısı kaynağı oluşturur. eksctl komutu bu işlemi otomatik olarak gerçekleştirir. Oluşturulduktan sonra bunu IAM konsolunda Kimlik Sağlayıcıları bölümünden doğrulayabilirsiniz.

# Associate the OIDC provider using eksctl (simplest method)
eksctl utils associate-iam-oidc-provider \
  --region us-east-1 \
  --cluster my-cluster \
  --approve

# Verify the provider was created
aws iam list-open-id-connect-providers \
  --query 'OpenIDConnectProviderList[].Arn'

2. Adım: IAM Rolünü Oluşturma

IRSA için kullanılan IAM rolü, OIDC sağlayıcısının bu rolü üstlenmesine izin veren ve belirli bir Kubernetes ad alanı ile hizmet hesabıyla sınırlanmış bir güven ilkesi içermelidir. Koşul, OIDC belirtecindeki ve system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT_NAME olarak ayarlanan sub bildirimini kullanır. Bu sayede rolü yalnızca söz konusu hizmet hesabını kullanan pod'lar üstlenebilir — kümedeki herhangi bir pod değil.

# Trust policy for the IRSA role (JSON)
# {
#   "Version": "2012-10-17",
#   "Statement": [{
#     "Effect": "Allow",
#     "Principal": {
#       "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLEID"
#     },
#     "Action": "sts:AssumeRoleWithWebIdentity",
#     "Condition": {
#       "StringEquals": {
#         "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLEID:sub":
#           "system:serviceaccount:production:s3-reader"
#       }
#     }
#   }]
# }

3. Adım: Hizmet Hesabına Açıklama Ekleme

Hedef ad alanında bir Kubernetes ServiceAccount oluşturun ve IAM rolü ARN'siyle bu hesaba açıklama ekleyin. Bir pod bu hizmet hesabına başvurduğunda EKS, OIDC belirtecini ve iki ortam değişkenini (AWS_WEB_IDENTITY_TOKEN_FILE ve AWS_ROLE_ARN) otomatik olarak ekler. AWS SDK bunları otomatik olarak algılar ve geçici kimlik bilgileri almak için STS'yi çağırır — uygulamanızda kod değişikliği yapmanız gerekmez.

# Create and annotate the Kubernetes service account
kubectl create serviceaccount s3-reader -n production

kubectl annotate serviceaccount s3-reader \
  -n production \
  eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/S3ReaderRole

# Verify the annotation
kubectl describe serviceaccount s3-reader -n production

4. Adım: Pod'larda Hizmet Hesabına Başvurma

Pod veya dağıtım belirtiminizde serviceAccountName değerini açıklama eklenmiş hizmet hesabına ayarlayın. EKS pod'u zamanladığında OIDC belirtecini otomatik olarak /var/run/secrets/eks.amazonaws.com/serviceaccount/token konumuna bağlar ve gerekli ortam değişkenlerini ayarlar. Pod içindeki tüm AWS SDK çağrıları, açık bir kimlik bilgisi yapılandırmasına gerek olmadan eşlenen IAM rolü kimlik bilgilerini şeffaf biçimde kullanır.

# Pod spec using IRSA service account
apiVersion: v1
kind: Pod
metadata:
  name: s3-app
  namespace: production
spec:
  serviceAccountName: s3-reader
  containers:
  - name: app
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:latest
    # AWS SDK auto-detects IRSA — no credential config needed
    # AWS_WEB_IDENTITY_TOKEN_FILE and AWS_ROLE_ARN are injected

IRSA ve Düğüm IAM Rolü: Temel Farklar

Düğüm IAM rolü kullanıldığında, bir düğümdeki her pod aynı izinleri devralır — güvenliği ihlal edilmiş bir pod, düğümün erişmesine izin verilen tüm AWS hizmetlerine erişebilir. IRSA ile her pod, hizmet hesabı aracılığıyla yalnızca ihtiyaç duyduğu rolü üstlenir. Bu yaklaşım, pod düzeyinde en az ayrıcalık ilkesini uygular ve herhangi bir güvenlik olayının etkisini sınırlar. AWS, tüm yeni EKS dağıtımları için düğüm düzeyindeki roller yerine IRSA'yı önerir.

IRSA Rolleri Oluşturmak için eksctl Kullanma

eksctl, create iamserviceaccount kullanarak OIDC ilişkilendirmesini, IAM rolünü, güven ilkesini ve Kubernetes ServiceAccount açıklamasını tek bir komutla oluşturabilir. Bu, güven ilkesi JSON'unu elle yazmadan IRSA'yı kurmanın en kolay yoludur. Ad alanını, hizmet hesabı adını ve eklenecek IAM ilkesi ARN'sini belirtirsiniz; geri kalanını eksctl halleder.

# Create everything needed for IRSA in one command
eksctl create iamserviceaccount \
  --name s3-reader \
  --namespace production \
  --cluster my-cluster \
  --attach-policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \
  --approve \
  --override-existing-serviceaccounts

AWS Eklentileri için IRSA

Birçok EKS eklentisinin ve denetleyicisinin çalışması için IRSA gerekir: Cluster Autoscaler, EC2 Auto Scaling API'sini çağırma iznine; AWS Load Balancer Controller, ELB kaynaklarını oluşturma ve yönetme iznine; external-dns, Route 53'e yazma erişimine; EBS CSI driver ise EBS birimlerini oluşturma ve iliştirme iznine ihtiyaç duyar. Bu sistem bileşenleri için her zaman IRSA kullanın — izinleri hiçbir zaman düğüm IAM rolü düzeyinde vermeyin.

# Create IRSA for the EBS CSI driver
eksctl create iamserviceaccount \
  --name ebs-csi-controller-sa \
  --namespace kube-system \
  --cluster my-cluster \
  --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
  --approve \
  --role-name AmazonEKS_EBS_CSI_DriverRole

Belirteç Yenileme ve Kimlik Bilgisi Döndürme

IRSA belirteçleri kısa ömürlüdür ve süreleri dolmadan önce Kubernetes belirteç projeksiyonu denetleyicisi tarafından otomatik olarak döndürülür. Varsayılan belirteç hedef kitlesi sts.amazonaws.com olup geçerlilik süresi 24 saattir; ancak denetleyici, ömürlerinin %80'ine ulaşıldığında bunları yeniler. IRSA aracılığıyla alınan AWS STS kimlik bilgileri de geçicidir (genellikle 1 saat). Bu otomatik döndürme, uzun süre geçerli IAM erişim anahtarlarının neden olduğu kimlik bilgisi döndürme yükünü ortadan kaldırır.

# Inspect the projected service account token inside a pod
kubectl exec -n production s3-app -- \
  cat /var/run/secrets/eks.amazonaws.com/serviceaccount/token

# Decode the JWT header and payload to see expiry and audience
# jwt.io or: base64 -d <<< "PAYLOAD_SECTION"

CloudTrail ile IRSA Kullanımını Denetleme

Bir pod IRSA aracılığıyla bir IAM rolünü her üstlendiğinde, AWS CloudTrail bir AssumeRoleWithWebIdentity olayı kaydeder. Olay; üstlenilen rol ARN'sini, OIDC belirteci konusunu (system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT) ve kaynak IP adresini içerir. Bu, hangi pod'ların hangi AWS hizmetlerine ne zaman eriştiğine ilişkin eksiksiz bir denetim izi sağlar — düzenlemeye tabi ortamlarda uyumluluk ve olay incelemesi için kritik bir özelliktir.

# Search CloudTrail for IRSA calls
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=EventName,AttributeValue=AssumeRoleWithWebIdentity \
  --start-time '2024-01-01T00:00:00Z' \
  --query 'Events[].{Time:EventTime,Role:CloudTrailEvent}' \
  --output table

Hızlı Kontrol

Bu derste ele alınan AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: IRSA, Kubernetes hizmet hesabı belirteçlerini geçici AWS kimlik bilgileriyle değiştirmek için OIDC federasyonunu kullanır; IAM rolü güven ilkeleri, erişimi belirli bir ad alanı ve hizmet hesabıyla sınırlar ve IRSA, düğüm düzeyindeki IAM rollerine kıyasla çok daha güçlü pod başına en az ayrıcalık sağlar. Sırada AWS kaynaklarınızı gözlemlemek için CloudWatch Metrics, Namespaces ve Dimensions konularını inceleyeceğiz.

Sıkça Sorulan Sorular

“Hizmet Hesapları için IAM Rolleri (IRSA)” dersi ücretsiz mi?

Evet — “Hizmet Hesapları için IAM Rolleri (IRSA)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Hizmet Hesapları için IAM Rolleri (IRSA)” dersinde ne öğreneceğim?

Pod'ların düğüm düzeyinde izinler olmadan AWS hizmetlerine erişebilmesi için ayrıntılı IAM rollerini IRSA ile Kubernetes hizmet hesaplarına bağlayın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Hizmet Hesapları için IAM Rolleri (IRSA)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. EKS Denetim Düzlemi ve Çalışan Düğümleri
  2. Sunucusuz Pod'lar için Fargate Profilleri
  3. EKS Ağ Yapısı: VPC CNI ve Yük Dengeleme
  4. Hizmet Hesapları için IAM Rolleri (IRSA)
← Cloud & IT Cert Prep Sayfasına Dön