Cloud & IT Cert Prep · पाठ

सेवा खातों के लिए IAM भूमिकाएँ (IRSA)

IRSA के माध्यम से सूक्ष्म-अनुमतियों वाली IAM भूमिकाओं को Kubernetes सेवा खातों से जोड़िए, ताकि पॉड नोड-स्तरीय अनुमतियों के बिना AWS सेवाओं तक पहुँच सकें।

पाठ 4, कुल 4 में से13 चरण

सेवा खातों के लिए IAM भूमिकाएँ (IRSA), CoddyKit पर Cloud & IT Cert Prep का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Cloud & IT Cert Prep सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Cloud & IT Cert Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Pod की IAM समस्या

जब EKS में चल रहे किसी Pod को AWS API कॉल करना हो — जैसे S3 से पढ़ना या DynamoDB में लिखना — तो उसे AWS क्रेडेंशियल्स की आवश्यकता होती है। सामान्य तरीका यह है कि एक IAM उपयोगकर्ता बनाया जाए और उसकी एक्सेस कुंजियों को पर्यावरण चर के रूप में सीधे लिख दिया जाए। यह असुरक्षित है और न्यूनतम विशेषाधिकार के सिद्धांत का उल्लंघन करता है, क्योंकि एक ही नोड पर मौजूद सभी Pod समान क्रेडेंशियल्स साझा करते हैं। IAM Roles for Service Accounts (IRSA) इस समस्या को Kubernetes सेवा खातों से सूक्ष्म स्तर पर नियंत्रित IAM भूमिकाएँ सीधे जोड़कर हल करता है।

IRSA कैसे काम करता है: OIDC संघीकरण

IRSA, OpenID Connect (OIDC) संघीकरण के माध्यम से काम करता है। EKS आपके क्लस्टर के लिए एक OIDC प्रदाता बनाता है। जब कोई Pod IAM भूमिका ARN से एनोटेट किए गए सेवा खाते का संदर्भ देता है, तो EKS Pod में एक हस्ताक्षरित प्रक्षेपित सेवा खाता टोकन डालता है। Pod में मौजूद AWS SDK इस टोकन को AWS STS के AssumeRoleWithWebIdentity API का उपयोग करके अस्थायी AWS क्रेडेंशियल्स से बदल देता है — लंबे समय तक मान्य कुंजियों की आवश्यकता नहीं होती।

# 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: OIDC प्रदाता संबद्ध करें

IRSA का उपयोग करने से पहले, आपको अपने AWS खाते में EKS OIDC जारीकर्ता को विश्वसनीय पहचान प्रदाता के रूप में संबद्ध करना होगा। इससे एक IAM OIDC प्रदाता संसाधन बनता है, जिसे AWS STS पहचान सकेगा। eksctl कमांड यह काम अपने-आप कर देता है। बनाने के बाद, आप IAM कंसोल में Identity Providers के अंतर्गत इसकी पुष्टि कर सकते हैं।

# 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: IAM भूमिका बनाएँ

IRSA के लिए IAM भूमिका में ऐसी विश्वास नीति होनी चाहिए जो OIDC प्रदाता को उसे ग्रहण करने की अनुमति दे और जो किसी विशिष्ट Kubernetes नेमस्पेस तथा सेवा खाते तक सीमित हो। यह शर्त OIDC टोकन में मौजूद sub दावे का उपयोग करती है, जिसका मान system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT_NAME होता है। इससे सुनिश्चित होता है कि केवल उसी विशिष्ट सेवा खाते का उपयोग करने वाले Pod ही भूमिका ग्रहण कर सकें — क्लस्टर का कोई भी Pod नहीं।

# 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: सेवा खाते में एनोटेशन जोड़ें

लक्षित नेमस्पेस में एक Kubernetes ServiceAccount बनाएँ और उसमें IAM भूमिका ARN का एनोटेशन जोड़ें। जब कोई Pod इस सेवा खाते का संदर्भ देता है, तो EKS OIDC टोकन और दो पर्यावरण चर (AWS_WEB_IDENTITY_TOKEN_FILE और AWS_ROLE_ARN) अपने-आप डाल देता है। AWS SDK इन्हें अपने-आप पहचानकर अस्थायी क्रेडेंशियल्स प्राप्त करने के लिए STS को कॉल करता है — आपके एप्लिकेशन में कोड बदलने की आवश्यकता नहीं होती।

# 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: Pod में सेवा खाते का संदर्भ दें

अपने Pod या परिनियोजन विनिर्देशन में serviceAccountName को एनोटेट किए गए सेवा खाते के नाम पर सेट करें। जब EKS Pod को शेड्यूल करता है, तो वह OIDC टोकन को /var/run/secrets/eks.amazonaws.com/serviceaccount/token पर अपने-आप माउंट करता है और आवश्यक पर्यावरण चर सेट करता है। Pod के भीतर की कोई भी AWS SDK कॉल बिना किसी स्पष्ट क्रेडेंशियल कॉन्फ़िगरेशन के, पारदर्शी रूप से मैप की गई IAM भूमिका के क्रेडेंशियल्स का उपयोग करेगी।

# 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 बनाम नोड IAM भूमिका: मुख्य अंतर

नोड IAM भूमिका के साथ, नोड पर मौजूद प्रत्येक Pod को समान अनुमतियाँ मिलती हैं — यदि किसी Pod से समझौता हो जाए, तो वह उन सभी AWS सेवाओं तक पहुँच सकता है जिन तक नोड को पहुँच की अनुमति है। IRSA के साथ, प्रत्येक Pod (अपने सेवा खाते के माध्यम से) केवल आवश्यक भूमिका ग्रहण करता है। यह Pod स्तर पर न्यूनतम विशेषाधिकार के सिद्धांत का पालन करता है और किसी भी सुरक्षा घटना के प्रभाव-क्षेत्र को सीमित करता है। AWS सभी नए EKS परिनियोजनों के लिए नोड-स्तरीय भूमिकाओं के बजाय IRSA की अनुशंसा करता है।

IRSA भूमिकाएँ बनाने के लिए eksctl का उपयोग

eksctl, create iamserviceaccount का उपयोग करके एक ही कमांड में OIDC संबद्धता, IAM भूमिका, विश्वास नीति और Kubernetes ServiceAccount एनोटेशन बना सकता है। विश्वास नीति का JSON स्वयं लिखे बिना IRSA स्थापित करने का यह सबसे सरल तरीका है। आपको नेमस्पेस, सेवा खाते का नाम और संलग्न की जाने वाली IAM नीति ARN निर्दिष्ट करनी होती है; बाकी काम eksctl कर देता है।

# 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 ऐड-ऑन के लिए IRSA

कई EKS ऐड-ऑन और नियंत्रकों को काम करने के लिए IRSA की आवश्यकता होती है: क्लस्टर ऑटोस्केलर को EC2 Auto Scaling API कॉल करने की अनुमति चाहिए, AWS Load Balancer नियंत्रक को ELB संसाधन बनाने और प्रबंधित करने की अनुमति चाहिए, बाहरी-DNS को Route 53 में लिखने की पहुँच चाहिए, और EBS CSI ड्राइवर को EBS वॉल्यूम बनाने और संलग्न करने की अनुमति चाहिए। इन सिस्टम घटकों के लिए हमेशा IRSA का उपयोग करें — अनुमतियाँ नोड IAM भूमिका स्तर पर कभी दें।

# 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

टोकन नवीनीकरण और क्रेडेंशियल परिवर्तन

IRSA टोकन कम समय तक मान्य होते हैं और समाप्त होने से पहले Kubernetes टोकन प्रक्षेपण नियंत्रक द्वारा अपने-आप बदले जाते हैं। डिफ़ॉल्ट टोकन ऑडियंस sts.amazonaws.com है और इसकी समाप्ति अवधि 24 घंटे है, लेकिन नियंत्रक उनके जीवनकाल का 80% पूरा होने पर उन्हें नवीनीकृत कर देता है। IRSA के माध्यम से प्राप्त AWS STS क्रेडेंशियल्स भी अस्थायी होते हैं (आमतौर पर 1 घंटे के लिए)। यह स्वचालित परिवर्तन लंबे समय तक मान्य IAM एक्सेस कुंजियों के साथ होने वाली क्रेडेंशियल बदलने की जिम्मेदारी समाप्त कर देता है।

# 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 से IRSA उपयोग का ऑडिट

जब भी कोई Pod IRSA के माध्यम से IAM भूमिका ग्रहण करता है, AWS CloudTrail एक AssumeRoleWithWebIdentity घटना दर्ज करता है। इस घटना में ग्रहण की गई भूमिका ARN, OIDC टोकन विषय (system:serviceaccount:NAMESPACE:SERVICE_ACCOUNT) और स्रोत IP शामिल होते हैं। इससे यह पूरी ऑडिट जानकारी मिलती है कि किन Pod ने किन AWS सेवाओं तक कब पहुँच बनाई — विनियमित परिवेशों में अनुपालन और घटना की जाँच के लिए यह अत्यंत महत्वपूर्ण है।

# 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

त्वरित जाँच

इस पाठ में बताए गए AWS Solutions Architect (SAA-C03) संबंधी सिद्धांतों की अपनी समझ जाँचें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: IRSA, OIDC संघीकरण का उपयोग करता है ताकि Kubernetes सेवा खाते के टोकन को अस्थायी AWS क्रेडेंशियल्स में बदला जा सके; IAM भूमिका की विश्वास नीतियाँ पहुँच को किसी विशिष्ट नेमस्पेस और सेवा खाते तक सीमित करती हैं; और IRSA प्रत्येक Pod को न्यूनतम विशेषाधिकार देता है, जो नोड-स्तरीय IAM भूमिकाओं से कहीं बेहतर है। अगले पाठ में हम आपके AWS संसाधनों की निगरानी के लिए CloudWatch Metrics, Namespaces और Dimensions का अध्ययन करेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Cloud & IT Cert Prep सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
150
पाठ
600

अक्सर पूछे जाने वाले प्रश्न

क्या “सेवा खातों के लिए IAM भूमिकाएँ (IRSA)” पाठ निःशुल्क है?

हाँ—“सेवा खातों के लिए IAM भूमिकाएँ (IRSA)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Cloud & IT Cert Prep पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Cloud & IT Cert Prep पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“सेवा खातों के लिए IAM भूमिकाएँ (IRSA)” में मैं क्या सीखूँगा?

IRSA के माध्यम से सूक्ष्म-अनुमतियों वाली IAM भूमिकाओं को Kubernetes सेवा खातों से जोड़िए, ताकि पॉड नोड-स्तरीय अनुमतियों के बिना AWS सेवाओं तक पहुँच सकें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cloud & IT Cert Prep का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Cloud & IT Cert Prep शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Cloud & IT Cert Prep शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“सेवा खातों के लिए IAM भूमिकाएँ (IRSA)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Cloud & IT Cert Prep पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Cloud & IT Cert Prep पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. EKS नियंत्रण तल और वर्कर नोड
  2. सर्वररहित पॉड के लिए फार्गेट प्रोफ़ाइल
  3. EKS नेटवर्किंग: VPC CNI और लोड संतुलन
  4. सेवा खातों के लिए IAM भूमिकाएँ (IRSA)
← Cloud & IT Cert Prep पर वापस जाएँ