הפעלת אמולטור IMDS

בדף הזה מוסבר איך להפעיל את אמולטור IMDS, שמדמה את שירות המטא-נתונים של מופעי AWS ‏ (IMDS). אפשר להריץ את האמולטור כ-sidecar כדי לאפשר לעומסי עבודה מדור קודם לפעול במאגרי צמתים של GKE ב-AWS. אם יש לכם עומסי עבודה מדור קודם שלא תומכים ישירות באיחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, תוכלו להשתמש באמולטור הזה כדי לגשת לנתוני IMDS.

מגבלות

  • האשכול צריך להשתמש ב-Kubernetes מגרסה 1.24 ואילך.
  • האמולטור לא נתמך בדור הקודם של GKE ב-AWS.
  • שרת האמולטור של IMDS משרת רק בקשות לפרטי כניסה (API_VERSION/meta-data/iam/security-credentials/). כל שאר הבקשות למטא-נתונים מחזירות שגיאת 404.
  • כדי לפרוס קונטיינר sidecar, קונטיינר האתחול צריך לכלול את NET_ADMIN וNET_RAW יכולות הקשר האבטחתי. אם אתם לא בטוחים אם מארח התגים כולל את ההקשרים האלה, כדאי להתייעץ עם צוות האבטחה שלכם.
  • הטוקן של AWS STS יכול להיות בתוקף למשך שעה. התוקף של אסימון התפקיד מהמטא-נתונים של EC2 הוא עד 24 שעות. המידע הזה לא אמור להשפיע על השימוש שלכם באמולטור, אבל יכול להיות שתצטרכו אותו במהלך ביקורת אבטחה.
  • אמולטור ה-IMDS מדמה רק תגובות של IMDSv1. אין תמיכה ב-IMDSv2.

הפעלת האמולטור

כדי להפעיל את אמולטור IMDS, מוסיפים תווית והערה למטא-נתונים של Pod. אפשר גם להפעיל את האמולטור באמצעות Deployment,‏ DaemonSet או כל משאב אחר שיוצר Pods:

  1. מוסיפים את התווית והערך הבאים ל-Pod:

    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
    

    הערך הקביל היחיד לתווית הזו הוא True. כל הערכים האחרים (כולל true עם האות t באותיות קטנות) משביתים את האמולטור.

  2. מוסיפים את ההערה הבאה ל-Pod:

    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: ARN_ROLE
    

    מחליפים את ARN_ROLE בשם משאב Amazon‏ (ARN) שמציין את התפקיד שאתם רוצים להקצות למשאב.

דוגמה

הדוגמה הבאה היא של Pod עם הפעלת אמולטור IMDS:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    gkemulticloud.googleapis.com/aws-imds-emulator-enabled: "True"
  annotations:
    gkemulticloud.googleapis.com/aws-imds-emulator-role-arn: "arn:aws:iam::123456789012:role/my-example-role"
spec:
 serviceAccountName: my-sa
 containers:
 - name: nginx
   image: nginx