IAM-Rollen für Servicekonten (IRSA)
Verknüpfen Sie mit IRSA fein abgestufte IAM-Rollen mit Kubernetes-Servicekonten, damit Pods auf AWS-Services zugreifen können, ohne Berechtigungen auf Node-Ebene zu benötigen.
IAM-Rollen für Servicekonten (IRSA) ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Das IAM-Problem von Pods
Wenn ein in EKS ausgeführter Pod eine AWS-API aufrufen muss – beispielsweise um aus S3 zu lesen oder in DynamoDB zu schreiben –, benötigt er AWS-Anmeldedaten. Der naheliegende Ansatz besteht darin, einen IAM-Benutzer zu erstellen und dessen Zugriffsschlüssel als Umgebungsvariablen fest zu hinterlegen. Das ist unsicher und verstößt gegen das Prinzip der geringsten Berechtigungen, da alle Pods auf demselben Knoten dieselben Anmeldedaten verwenden. IAM Roles for Service Accounts (IRSA) löst dieses Problem, indem detailliert berechtigte IAM-Rollen direkt an Kubernetes-ServiceAccounts gebunden werden.
Funktionsweise von IRSA: OIDC-Föderation
IRSA funktioniert über die OpenID-Connect-(OIDC-)Föderation. EKS erstellt einen OIDC-Provider für Ihren Cluster. Wenn ein Pod auf einen ServiceAccount verweist, der mit einer IAM-Rollen-ARN annotiert ist, injiziert EKS ein signiertes projiziertes ServiceAccount-Token in den Pod. Das AWS SDK im Pod tauscht dieses Token über die API AssumeRoleWithWebIdentity von AWS STS gegen temporäre AWS-Anmeldedaten ein – langlebige Schlüssel sind nicht erforderlich.
# 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/EXAMPLEIDSTRINGSchritt 1: OIDC-Provider verknüpfen
Bevor Sie IRSA verwenden, müssen Sie den OIDC-Aussteller von EKS in Ihrem AWS-Konto als vertrauenswürdigen Identitätsanbieter verknüpfen. Dadurch wird eine IAM-OIDC-Provider-Ressource erstellt, die von AWS STS erkannt wird. Der Befehl eksctl übernimmt dies automatisch. Nach der Erstellung können Sie die Ressource in der IAM-Konsole unter „Identity Providers“ überprüfen.
# 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'Schritt 2: IAM-Rolle erstellen
Die IAM-Rolle für IRSA muss über eine Vertrauensrichtlinie verfügen, die es dem OIDC-Provider erlaubt, die Rolle zu übernehmen, wobei sie auf einen bestimmten Kubernetes-Namespace und ServiceAccount beschränkt wird. Die Bedingung verwendet den sub-Claim im OIDC-Token. Dieser ist auf system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT_NAME gesetzt. Dadurch wird sichergestellt, dass nur Pods, die diesen bestimmten ServiceAccount verwenden, die Rolle übernehmen können – nicht jeder Pod im Cluster.
# 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"
# }
# }
# }]
# }Schritt 3: ServiceAccount annotieren
Erstellen Sie im Ziel-Namespace einen Kubernetes-ServiceAccount und annotieren Sie ihn mit der IAM-Rollen-ARN. Wenn ein Pod auf diesen ServiceAccount verweist, injiziert EKS automatisch das OIDC-Token und zwei Umgebungsvariablen (AWS_WEB_IDENTITY_TOKEN_FILE und AWS_ROLE_ARN). Das AWS SDK erkennt diese automatisch und ruft STS auf, um temporäre Anmeldedaten abzurufen – an Ihrer Anwendung sind keine Codeänderungen erforderlich.
# 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 productionSchritt 4: ServiceAccount in Pods referenzieren
Setzen Sie in der Pod- oder Deployment-Spezifikation serviceAccountName auf den annotierten ServiceAccount. Wenn EKS den Pod einplant, bindet es das OIDC-Token automatisch unter /var/run/secrets/eks.amazonaws.com/serviceaccount/token ein und setzt die erforderlichen Umgebungsvariablen. Jeder Aufruf eines AWS SDK im Pod verwendet transparent die Anmeldedaten der zugeordneten IAM-Rolle, ohne dass Anmeldedaten explizit konfiguriert werden müssen.
# 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 injectedIRSA vs. IAM-Rolle des Knotens: Die wichtigsten Unterschiede
Bei einer IAM-Rolle des Knotens erbt jeder Pod auf einem Knoten dieselben Berechtigungen – ein kompromittierter Pod kann auf alle AWS-Services zugreifen, für die der Knoten berechtigt ist. Bei IRSA übernimmt jeder Pod über seinen ServiceAccount nur die Rolle, die er benötigt. Dadurch wird das Prinzip der geringsten Berechtigungen auf Pod-Ebene umgesetzt und der Schadensradius eines Sicherheitsvorfalls begrenzt. AWS empfiehlt IRSA für alle neuen EKS-Bereitstellungen gegenüber Rollen auf Knotenebene.
IRSA-Rollen mit eksctl erstellen
eksctl kann die OIDC-Verknüpfung, die IAM-Rolle, die Vertrauensrichtlinie und die Annotation des Kubernetes-ServiceAccounts mit einem einzigen Befehl unter Verwendung von create iamserviceaccount erstellen. Dies ist die einfachste Möglichkeit, IRSA einzurichten, ohne die JSON-Datei der Vertrauensrichtlinie manuell zu schreiben. Sie geben den Namespace, den Namen des ServiceAccounts und die anzuhängende IAM-Policy-ARN an; eksctl übernimmt den Rest.
# 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-serviceaccountsIRSA für AWS-Add-ons
Viele EKS-Add-ons und -Controller benötigen IRSA, um zu funktionieren: Cluster Autoscaler benötigt die Berechtigung zum Aufrufen der EC2 Auto Scaling API, der AWS Load Balancer Controller benötigt die Berechtigung zum Erstellen und Verwalten von ELB-Ressourcen, external-dns benötigt Schreibzugriff auf Route 53 und der EBS CSI driver benötigt die Berechtigung zum Erstellen und Anbinden von EBS-Volumes. Verwenden Sie für diese Systemkomponenten immer IRSA – erteilen Sie die Berechtigungen niemals auf Ebene der IAM-Rolle des Knotens.
# 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_DriverRoleToken-Aktualisierung und Rotation von Anmeldedaten
IRSA-Token sind kurzlebig und werden vom Kubernetes-Controller für die Token-Projektion vor ihrem Ablauf automatisch rotiert. Die Standard-Audience des Tokens ist sts.amazonaws.com und seine Gültigkeit beträgt 24 Stunden. Der Controller aktualisiert es jedoch nach 80 % seiner Gültigkeitsdauer. Auch die über IRSA bezogenen AWS-STS-Anmeldedaten sind temporär und gelten normalerweise 1 Stunde. Diese automatische Rotation beseitigt den Aufwand für die Rotation von Anmeldedaten, der bei langlebigen IAM-Zugriffsschlüsseln entsteht.
# 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"IRSA-Nutzung mit CloudTrail überwachen
Jedes Mal, wenn ein Pod über IRSA eine IAM-Rolle übernimmt, zeichnet AWS CloudTrail ein AssumeRoleWithWebIdentity-Ereignis auf. Das Ereignis enthält die ARN der übernommenen Rolle, das Subjekt des OIDC-Tokens (system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT) und die Quell-IP-Adresse. Dadurch erhalten Sie einen vollständigen Prüfpfad darüber, welche Pods wann auf welche AWS-Services zugegriffen haben – entscheidend für Compliance und die Untersuchung von Sicherheitsvorfällen in regulierten Umgebungen.
# 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 tableSchnelltest
Testen Sie Ihr Verständnis der Konzepte aus dieser Lektion für AWS Solutions Architect (SAA-C03).
Lektionszusammenfassung
In dieser Lektion haben Sie gelernt: IRSA verwendet OIDC-Föderation, um Kubernetes-ServiceAccount-Token gegen temporäre AWS-Anmeldedaten einzutauschen; Vertrauensrichtlinien von IAM-Rollen beschränken den Zugriff auf einen bestimmten Namespace und ServiceAccount; und IRSA ermöglicht eine geringste Rechtevergabe pro Pod, die Rollen auf Knotenebene deutlich überlegen ist. Als Nächstes sehen wir uns CloudWatch-Metriken, Namespaces und Dimensionen zur Überwachung Ihrer AWS-Ressourcen an.
Häufig gestellte Fragen
Ist die Lektion „IAM-Rollen für Servicekonten (IRSA)“ kostenlos?
Ja — der vollständige Text von „IAM-Rollen für Servicekonten (IRSA)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „IAM-Rollen für Servicekonten (IRSA)“?
Verknüpfen Sie mit IRSA fein abgestufte IAM-Rollen mit Kubernetes-Servicekonten, damit Pods auf AWS-Services zugreifen können, ohne Berechtigungen auf Node-Ebene zu benötigen. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?
Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „IAM-Rollen für Servicekonten (IRSA)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?
Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- EKS-Control-Plane und Worker-Nodes
- Fargate-Profile für serverlose Pods
- EKS-Netzwerk: VPC CNI und Load Balancing
- IAM-Rollen für Servicekonten (IRSA)