ניהול תגי פרויקט

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

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

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

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

  • כדי לקבל את ההרשאות שדרושות להקצאת הרשאות תגים למשתמשים אחרים או לבדיקת מרחבי שמות של זוגות מפתח/ערך של תגים, צריך לבקש מאדמין ה-IAM בארגון להקצות לכם את תפקיד אדמין התגים (tag-admin).

  • כדי לקבל את ההרשאות שנדרשות להצגת רשימת פרויקטים עם תג, צריך לבקש מאדמין IAM בארגון להקצות לכם את התפקיד Project Viewer (project-viewer).

החלת הרשאות על צמד מפתח/ערך של תג

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

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

  1. מזהים את שם התפקיד הרצוי ואת מרחבי השמות שבהם רוצים להחיל את התפקיד. מידע נוסף זמין במאמר בנושא שימוש בתגים.

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

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: BINDING_NAME
      namespace: NAMESPACE
    subjects:
    - kind: GROUP_SUBJECT
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: TAG_ROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    EOF
    

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

    • BINDING_NAME: השם המותאם אישית של קישור התפקידים.

    • NAMESPACE: מרחב השמות שאליו רוצים לשייך את התפקיד, למשל platform, מרחב השמות לניהול של מפתח התג או מרחב השמות של המדיניות של ערך התג.

    • GROUP_SUBJECT: סוג הנושא שעליו יחולו הרשאות התפקיד. הערך יכול להיות User, Group או ServiceAccount. מידע נוסף מופיע במאמרי העזרה בנושא הפניה לנושאים בתיעוד של Kubernetes.

    • GROUP_NAME: שם הקבוצה בהתאמה אישית.

    • TAG_ROLE_NAME: שם תפקיד התג שרוצים להחיל, כמו tag-admin או tag-KEY_NAME-admin.

    לדוגמה, כדי להעניק למשתמש את הרשאת התפקיד tag-admin לזוג מפתח-ערך של תג, פורסים את המשאבים המותאמים אישית RoleBinding הבאים במרחב השמות platform, במפתח התג managementNamespace ובערך התג policyNamespace:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-binding
      namespace: platform
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-mgmt-binding
      namespace: g-t-tag-key-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-policy-binding
      namespace: g-t-tag-value-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    EOF
    

חיפוש מרחב השמות של הניהול

מרחב שמות לניהול הוא מרחב שמות שנוצר על ידי המערכת עבור מפתח תג.

  • מוצאים את מרחב השמות לניהול של מפתח התג הספציפי:

    kubectl get tagkey TAG_KEY_NAME --namespace platform \
        -o jsonpath='{.status.managementNamespace}'
    

    מחליפים את TAG_KEY_NAME בשם של מפתח התג.

איך מוצאים את מרחב השמות של המדיניות

מרחב שמות של מדיניות הוא מרחב שמות שנוצר על ידי המערכת עבור ערך של תג.

  • מאתרים את מרחב השמות של המדיניות של ערך התג הספציפי:

    kubectl get tagvalue TAG_VALUE_NAME --namespace MANAGEMENT_NAMESPACE \
        -o jsonpath='{.status.policyNamespace}'
    

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

הצגת רשימת פרויקטים עם תג

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

  • הצגת רשימה של כל הפרויקטים שתואמים לצמד מפתח/ערך של התג:

    kubectl get project --namespace platform --label tag.resourcemanager.gdc.goog/TAG_KEY_NAME=TAG_VALUE_NAME
    

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

    • TAG_KEY_NAME: השם של מפתח התג.
    • TAG_VALUE_NAME: השם של ערך התג.

    הפלט אמור להיראות כך:

    NAME            AGE
    project-1       17d
    project-2       10d
    project-3       4d
    

המאמרים הבאים