ניהול הגישה לאשכולות רגילים

במאמר הזה מוסבר איך לנהל הרשאות עבור אשכולות רגילים ב-Google Distributed Cloud ‏ (GDC) עם בידוד פיזי באמצעות gdcloud CLI. קלאסטרים רגילים הם סביבות Kubernetes שמוגדרות בהיקף הפרויקט עם שירותי ברירת מחדל מינימליים, ומציעות גמישות ושליטה רבות יותר לעומסי עבודה מותאמים אישית.

מידע נוסף על אשכולות רגילים וסוגים אחרים של אשכולות זמין במאמר הגדרות של אשכול Kubernetes.

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

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

לפני שמנהלים גישה לאשכולות רגילים, צריך לוודא שיש לכם את ההרשאות הדרושות ולהכין את הסביבה.

שליחת בקשה לתפקידי IAM

פונים לאדמין של IAM בארגון ומבקשים את התפקידים הבאים בהתאם למשימות שצריך לבצע:

  • אדמין IAM של פרויקט (project-iam-admin): יצירה, עדכון ומחיקה של הקצאות תפקידים לאשכולות רגילים בפרויקט.
  • אדמין רגיל של אשכול (standard-cluster-admin): יצירה, עדכון ומחיקה של שיוכי תפקידים באשכול רגיל ספציפי.

הכנת הסביבה

הענקת הרשאות לגישה לאשכול רגיל

משתמש עם התפקיד Project IAM Admin ‏ (project-iam-admin) יכול להעניק למשתמשים אחרים את התפקידים הנדרשים לניהול גישה באשכולות רגילים:

  1. נכנסים באמצעות ספק הזהויות שהגדרתם באמצעות ה-CLI של gcloud.

  2. נותנים למשתמש את התפקיד Standard Cluster Admin ‏ (standard-cluster-admin) בפרויקט. הפקודה הזו מקשרת את המשתמש לתפקיד, ומאפשרת לו לנהל את הגישה באשכול הרגיל.

    מידע נוסף על התפקידים מופיע במאמרים תיאורים של תפקידים מוגדרים מראש והגדרות של תפקידים בפרויקטים.

    gdcloud projects add-iam-policy-binding PROJECT \
      --role=ROLE \
      --member=user:USER_ACCOUNT
    

    מחליפים את המשתנים הבאים:

    • PROJECT: השם של הפרויקט שבו קיים האשכול הרגיל.
    • ROLE: שם התפקיד שרוצים להקצות (למשל standard-cluster-admin).
    • USER_ACCOUNT: חשבון המשתמש שרוצים להקצות לו את התפקיד, כולל הקידומת של ספק הזהויות שמשויכת לארגון (למשל idpprefix-user@example.com). הקידומת הספציפית שמשמשת תלויה בהגדרת ה-IdP של הארגון. מידע נוסף זמין במאמר בנושא התחברות לספק זהויות.

    בדוגמה הבאה מוקצה התפקיד 'אדמין של אשכול רגיל' ל-user@example.com, בהנחה שהקידומת של ספק הזהויות היא fop- עבור פרויקט foo:

    gdcloud projects add-iam-policy-binding foo \
      --role=standard-cluster-admin \
      --member=user:fop-user@example.com
    

ניהול הגישה באשכול הרגיל

משתמש עם התפקיד Standard Cluster Admin ‏ (standard-cluster-admin) יכול להעניק גישה בתוך אשכול רגיל:

  1. נכנסים באמצעות ספק הזהויות שהגדרתם באמצעות ה-CLI של gcloud.

  2. כדי ליצור קובץ kubeconfig עבור אשכול רגיל, משתמשים בדגל --standard. הדגל הזה נדרש כדי לטרגט אשכול רגיל.

    export KUBECONFIG=KUBECONFIG_FILE
    gdcloud clusters get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT
    

    מחליפים את המשתנים הבאים:

    • KUBECONFIG_FILE: הנתיב לקובץ kubeconfig, לדוגמה standard-cluster-kubeconfig.yaml.
    • STANDARD_CLUSTER_NAME: השם של אשכול התקנים.
    • PROJECT: השם של הפרויקט שבו קיים האשכול הרגיל.
  3. מגדירים הרשאות באשכול הרגיל באמצעות kubectl.

    משתמשים עם הרשאות standard-cluster-admin יכולים ליצור אובייקטים של Role ושל ClusterRole בהתאמה אישית. כדי להעניק את ההרשאות האלה, הם יכולים ליצור את האובייקטים המתאימים Rolebinding ו-ClusterRoleBinding כדי לקשר את התפקידים לנושאים ספציפיים, כמו משתמשים או חשבונות שירות.

    בדוגמה הבאה נעשה שימוש ב-kubectl כדי ליצור Role בהתאמה אישית בשם test-role במרחב השמות test:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: test-role
      namespace: test
    rules:
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - get
    EOF
    

    בדוגמה הבאה נוצר RoleBinding עבור Role בשם test-role במרחב השמות test. הפקודה מעניקה הרשאות למשתמש alice@example.com עם הקידומת של ספק הזהויות fop-, וגם ל-ServiceAccount בשם my-service-account במרחב השמות default:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: test-role-binding
      namespace: test
    subjects:
    - kind: User
      name: fop-alice@example.com
      apiGroup: rbac.authorization.k8s.io
    - kind: ServiceAccount
      name: my-service-account
      namespace: default
    roleRef:
      kind: Role
      name: test-role
      apiGroup: rbac.authorization.k8s.io
    EOF