אימות ל-GKE ב-AWS באמצעות זהויות חיצוניות

איחוד שירותי אימות הזהות של כוח עבודה מאפשר לזהויות שאינן של Google לגשת לשירותים שלGoogle Cloud . בהקשר של GKE ב-AWS, המשמעות היא שאתם יכולים להשתמש בזהויות חיצוניות קיימות כדי ליצור אשכול GKE או לגשת אליו בלי להסתמך על פרטי כניסה של Google.

היתרונות של שימוש באיחוד שירותי אימות הזהות של כוח העבודה הם:

  • אתם לא צריכים יותר חשבונות כפולים בפלטפורמות או בספקים שונים.
  • אתם מגדירים את ההרשאות רק פעם אחת, בלי שתצטרכו לבצע הגדרות בכמה פלטפורמות.
  • אתם מפשטים את הגישה של המשתמשים, כי נדרשים פחות התחברויות וסיסמאות.

לפני שמתחילים

כדי לאפשר למשתמשים חיצוניים או לקבוצות חיצוניות לגשת לאשכולות GKE, צריך לבצע את השלבים הבאים:

  1. כדי שמשתמשים או קבוצות מחוץ לארגון יוכלו להשתמש ב-GKE on AWS API, צריך להגדיר איחוד שירותי אימות הזהות של כוח עבודה.

  2. מקצים למשתמשים או לקבוצות חיצוניים את התפקיד gkemulticloud.viewer כדי שהם יוכלו לגשת לאשכולות. מקצים את התפקיד container.clusterViewer כדי להציג אשכולות במסוף Google Cloud .

    הערה: תפקידים הם אוספים של הרשאות. כשמקצים תפקיד לישות (משתמש, קבוצה או חשבון שירות), נותנים לישות הזו את כל ההרשאות שהתפקיד מכיל.

    משתמשים

    למשתמשים ספציפיים, צריך להקצות את התפקיד gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • SUBJECT_VALUE: המזהה שמזהה באופן ייחודי משתמש חיצוני. לדוגמה, המזהה יכול להיות כתובת אימייל כמו alex@cymbalgroup.com.

    קבוצות

    לקבוצות, צריך להקצות את התפקיד gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • GROUP_ID: מזהה ייחודי של קבוצה חיצונית.
  3. אופציונלי: מקצים למשתמשים או לקבוצות החיצוניים את התפקידים המתאימים בניהול הזהויות והרשאות הגישה (IAM). השלב הזה נדרש רק אם רוצים לתת למשתמשים או לקבוצות את היכולת ליצור או לעדכן אשכולות. הוא לא נדרש רק כדי לגשת לאשכול.

    משתמשים

    למשתמשים ספציפיים, צריך להקצות את התפקיד gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • SUBJECT_VALUE: המזהה שמזהה באופן ייחודי משתמש חיצוני. לדוגמה, המזהה יכול להיות כתובת אימייל כמו alex@cymbalgroup.com.

    קבוצות

    לקבוצות, צריך להקצות את התפקיד gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • GROUP_ID: מזהה ייחודי של קבוצה חיצונית.

במאמר תפקידים והרשאות ב-API מפורטות ההרשאות והתפקידים ב-API שנדרשים ל-GKE ב-AWS.

מתן גישה חיצונית לאשכולות GKE

יש שתי שיטות להגדרת איחוד שירותי אימות הזהות של כוח עבודה, כדי שמשתמשים או קבוצות חיצוניים יוכלו לגשת לאשכולות GKE שלכם.

בשיטה 1 צריך להגדיר קובץ RBAC ולהחיל אותו על האשכול. השיטה הזו מאפשרת שליטה מדויקת בהרשאות, למשל לאפשר למשתמשים גישת קריאה בלבד למשאבים בלי להעניק להם גישה רחבה יותר.

בשיטה השנייה, צריך לציין גישה לזהויות חיצוניות כשיוצרים או מעדכנים אשכול. השיטה הזו מעניקה הרשאות אדמין מלאות למשתמשים או לקבוצות שצוינו.

בוחרים את השיטה שהכי מתאימה לרמת בקרת הגישה הרצויה: שיטה מספר 1 להרשאות מפורטות יותר, או שיטה מספר 2 למתן זכויות אדמין מלאות באשכול.

שיטה 1: שימוש בקובץ RBAC

השיטה הראשונה למתן גישה חיצונית לאשכולות GKE היא באמצעות קובץ RBAC. איך לעשות את זה?

  1. מגדירים קובץ YAML של RBAC שכולל את הנושאים (משתמשים או קבוצות) ואת ההרשאות שרוצים להעניק להם באשכול GKE. הנה דוגמאות להגדרות RBAC ב-YAML למשתמשים פרטיים ולקבוצות:

    משתמשים

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    מחליפים את מה שכתוב בשדות הבאים:

    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • SUBJECT_VALUE: המזהה שמזהה באופן ייחודי משתמש חיצוני. לדוגמה, המזהה יכול להיות כתובת אימייל כמו alex@cymbalgroup.com.

    קבוצות

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    מחליפים את מה שכתוב בשדות הבאים:

    • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
    • GROUP_ID: מזהה ייחודי של קבוצה חיצונית.
  2. מזהים את אשכול GKE שרוצים להגדיר ומגדירים אותו כהקשר הפעיל באמצעות הפקודה הבאה:

      kubectl config use-context CLUSTER_CONTEXT
    

    מחליפים את CLUSTER_CONTEXT בשם ההקשר המתאים לאשכול.

  3. אחרי שמגדירים את אשכול GKE הרצוי כהקשר הפעיל, מריצים את הפקודה הבאה כדי להחיל את הגדרות ה-RBAC על האשכול:

    kubectl apply -f RBAC_PATH
    

    מחליפים את RBAC_PATH בנתיב לקובץ ה-RBAC שיצרתם או ערכתם.

    כשמריצים את הפקודה הזו, למשתמשים או לקבוצות שצוינו בהגדרת ה-RBAC יש עכשיו הרשאות גישה לאשכול GKE הממוקד ולניהול שלו, כפי שמוגדר בכללי ה-RBAC.

  4. אם צריך לבצע שינויים נוספים בהרשאות, משנים את קובץ ה-RBAC ומחילים אותו מחדש על האשכול על ידי חזרה על השלבים הקודמים.

שיטה 2: מתן גישה לזהויות חיצוניות במהלך יצירה או עדכון של אשכול

שיטה 2 מאפשרת גישה לזהויות חיצוניות במהלך תהליך יצירת האשכול או העדכון שלו.

כדי ליצור אשכול, פועלים לפי השלבים במאמר יצירת אשכול. כדי לעדכן אשכול, פועלים לפי השלבים שמפורטים במאמר עדכון אשכול.

כשמריצים את הפקודה gcloud כדי ליצור או לעדכן אשכול, מציינים את הפרמטרים admin-users ו/או admin-groups באופן הבא:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • LOCATION: האזור Google Cloud שבו האשכול מנוהל.
  • WORKFORCE_POOL_ID: המזהה שמזהה באופן ייחודי את מאגר הזהויות של כוח העבודה ב- Google Cloud. כשמגדירים את הפורמט של המזהה, חשוב לפעול לפי ההנחיות המומלצות שמופיעות במסמכי ה-IAM בקטע פרמטרים של שאילתה.
  • SUBJECT_VALUE: המזהה שמזהה באופן ייחודי משתמש חיצוני. לדוגמה, המזהה יכול להיות כתובת אימייל כמו alex@cymbalgroup.com.
  • GROUP_ID: מזהה ייחודי של קבוצה חיצונית.

סיכום של הענקת גישה למזהים חיצוניים לאשכולות GKE

אחרי שמבצעים את שיטה 1 או שיטה 2, המשתמשים החיצוניים או הקבוצות שצוינו יכולים להשתמש Google Cloud במסוף כדי להתחבר ולראות את פרטי האשכול. לחלופין, הם יכולים להשתמש ב-kubectl עם זהות מ-ה-CLI של gcloud כדי לנהל את האשכול, לבצע בו מניפולציות ולתקשר איתו.

כדי להריץ פקודות kubectl באשכולות GKE, אפשר לקרוא איך ליצור רשומה של kubeconfig.