במאמר הזה נסביר איך להשתמש בתגים כדי לנהל את האשכולות שלכם ב-Google Kubernetes Engine (GKE) ולהחיל מדיניות של ניהול זהויות והרשאות גישה (IAM) על צמתים באופן מותנה.
מידע על תגים
תגים הם צמדי מפתח/ערך שמאפשרים להוסיף הערות למשאבים שלכם ב-Google Cloud רמת הארגון או הפרויקט ולנהל אותם. אתם יכולים להשתמש בתגים כדי לארגן את המשאבים ולהחיל באופן מותנה כללי מדיניות כמו חומות אש או כללי מדיניות של IAM. תגיות תומכות בבקרת גישה של IAM, שמאפשרת לכם להגדיר מי יכול לצרף, ליצור, לעדכן או למחוק תגיות.
תרחישים לדוגמה לשימוש בתגים ב-GKE
אפשר להשתמש בתגים ב-GKE במצבים כמו הבאים:
- החלה מותנית של מדיניות חומת אש ברשת על צמתים ספציפיים. לדוגמה, אפשר לחסום תנועת נכנסת מהאינטרנט הציבורי לכל הצמתים באשכול בסביבות פיתוח או בדיקה. הוראות זמינות במאמר בנושא החלה סלקטיבית של מדיניות חומת אש ברשת ב-GKE.
- הקצאת תפקידים ב-IAM על סמך תגים. לדוגמה, אפשר להעניק לקבלנים באופן אוטומטי גישה לסביבות ספציפיות שבדרך כלל זמינות רק לעובדים במשרה מלאה. הוראות מפורטות מופיעות בהמשך המסמך הזה.
- בודקים ומנתחים את פרטי החיוב על סמך התגים שהוחלו ברמת הפרויקט או הארגון.
איך זה עובד
כדי לאכוף מדיניות חומת אש ברשת, יוצרים תג ומציינים במפורש שהתג מיועד לשימוש בחומת האש. לכל שאר המטרות, יוצרים תג בלי להגדיר ייעוד לחומת האש.
אחרי שיוצרים את התג, מצרפים אותו למשאבים ב-GKE כצמד מפתח/ערך. למדיניות חומת אש ברשת משתמשים ב-GKE API, ולכל שאר המטרות משתמשים ב-Tags API.
לכל מפתח אפשר לצרף ערך אחד למשאב. לדוגמה, אם צירפתם את env:dev לאשכול GKE, לא תוכלו לצרף גם את env:prod או את env:test. אפשר לצרף לכל משאב עד 50 תגים שאינם תגים של חומת אש, ועד חמישה תגים של חומת אש.
שיטות להוספת הערות למשאבים ב-GKE
ב-GKE יש כמה שיטות להוספת הערות למשאבים, כמו שמתואר בטבלה הבאה:
| סוג הערה | תיאור | דוגמה |
|---|---|---|
| תגים (לא חומת אש) |
מידע נוסף זמין במאמר סקירה כללית על תגים. |
התניית מתן תפקידים ב-IAM כדי לשלוט בגישה למשאבים עם תגים ספציפיים |
| תגים (חומת אש) |
מידע נוסף זמין במאמר החלה סלקטיבית של מדיניות חומת אש ברשת ב-GKE. |
דחייה אוטומטית של תנועת נכנסת מהאינטרנט הציבורי לכל סביבות הבמה או הבדיקה |
| תגים של רשתות |
מידע נוסף זמין במאמר בנושא שימוש בתגי רשת להחלת כללים של חומת אש על צמתים. |
דחייה אוטומטית של תנועת נכנסת מהאינטרנט הציבורי לכל סביבות הבמה או הבדיקה |
| תוויות של אשכולות GKE |
מידע נוסף זמין במאמר בנושא תוויות של אשכולות. |
להבדיל בין אשכולות שבבעלות מרכזי עלות או צוותים ספציפיים בארגון. |
| תוויות Kubernetes |
מידע נוסף זמין במאמר תוויות ובוררים ב-Kubernetes. |
הגדרת דרישה לתזמון עומסי עבודה בצמתים עם תוויות ספציפיות. |
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את ממשק Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
ודאו שיש לכם את תפקידי ה-IAM הבאים:
roles/resourcemanager.tagAdminroles/resourcemanager.tagUser
מידע על ההרשאות שניתנות על ידי התפקידים האלה מופיע במאמר ההרשאות הנדרשות.
צירוף תגים לאשכול
אם יש לכם את ההרשאות המתאימות, אתם יכולים לצרף תגים לאשכול קיים באמצעות Google Cloud CLI, מסוף Google Cloud , Tags API או Terraform.
gcloud
כדי לצרף תג למשאבי GKE באמצעות gcloud CLI, צריך ליצור את התג ולהגדיר את הערכים שלו. במאמרים יצירת תג והוספת ערכי תגים מוסבר איך יוצרים מפתחות וערכים של תגים.
כדי ליצור קשירת תגים לצירוף תג לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
-
TAG_VALUE_ID: המזהה הקבוע או השם במרחב השמות של ערך התג לצירוף. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר בנושא הגדרות ומזהים של תגים. -
CLUSTER_LOCATION: המיקום של Compute Engine. לגבי אשכולות אזוריים, צריך לציין את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
המסוף
כדי לצרף תג למשאבי GKE באמצעות מסוףGoogle Cloud , צריך ליצור את התג ולהגדיר את הערכים שלו. במאמרים יצירת תג והוספת ערכי תגים מוסבר איך יוצרים מפתחות וערכים של תגים.
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
בקטע Metadata (מטא-נתונים), לצד Tags (תגים), לוחצים על Edit tags (עריכת תגים).
אם הארגון שלכם לא מופיע בחלונית תגים, לוחצים על בחירת היקף. בוחרים את הארגון ולוחצים על פתיחה.
בחלונית Tags (תגים), לוחצים על Add tag (הוספת תג).
בוחרים מהרשימה את המקש של התג שרוצים לצרף. אפשר לסנן את הרשימה באמצעות הקלדה של מילות מפתח.
בוחרים מהרשימה את הערך של התג שרוצים לצרף. אפשר לסנן את הרשימה על ידי הקלדת מילות מפתח.
לוחצים על Save.
בתיבת הדו-שיח אישור, לוחצים על אישור כדי לצרף את התג.
תקבלו התראה שמאשרת שהתגים עודכנו.
API
כדי לצרף תג למשאב, קודם צריך ליצור ייצוג JSON של קישור תג שכולל את המזהים הקבועים של ערך התג והמשאב. בדף העזר בנושא TagBinding תוכלו לקרוא על הפורמטים של קשירת תגים.
משתמשים בשיטה tagBindings.create עם נקודת הקצה האזורית או האזורית שבה נמצא האשכול.
POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
מחליפים את LOCATION באזור או בתחום שבו נמצא האשכול.
גוף בקשת JSON:
{
"parent": "RESOURCE_ID",
"tagValue": "TAG_VALUE_ID"
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
TAG_VALUE_ID: המזהה הקבוע או השם במרחב השמות של ערך התג לצירוף. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר בנושא הגדרות ומזהים של תגים.
הפלט אמור להיראות כך:
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
"name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
}
Terraform
כדי ליצור תג, להגדיר את הערכים שלו ולצרף תג למשאב באמצעות Terraform, אפשר לעיין בדוגמה הבאה:
מידע נוסף על שימוש ב-Terraform זמין במאמר תמיכה ב-Terraform ב-GKE.
הצגת רשימת התגים שמצורפים לאשכול
אפשר להציג את רשימת התגים שמצורפים לאשכול באמצעות gcloud CLI, Google Cloud המסוף או Tags API.
gcloud
כדי לקבל רשימה של קישורי תגים שמצורפים לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
CLUSTER_LOCATION: באשכולות אזוריים, מציינים את אזור המחשוב. במקרה של אשכולות אזוריים, מציינים את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
CLUSTER_NAME: השם של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לראות.
בקטע Metadata (מטא נתונים), לצד Tags (תגים), מחפשים את ערכי התגים המצורפים.
API
כדי לקבל רשימה של התאמות תגים לאשכול, משתמשים בשיטה tagBindings.list עם נקודת הקצה האזורית או האזורית שבה האשכול ממוקם.
GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
גוף בקשת JSON:
{
"parent": RESOURCE_ID,
}
מחליפים את מה שכתוב בשדות הבאים:
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CLUSTER_NAME: השם של האשכול.
-
הפלט אמור להיראות כך:
"tagBindings": [
{
"name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2LOCATION%2Fclusters%2Ftestcluster/tagValues/758072120217",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
]
ניתוק תגים מאשכול
כדי לבטל את הקישור של תג לאשכול, צריך למחוק את משאב הקישור של התג שמצורף לאשכול באמצעות gcloud CLI, Google Cloud המסוף או Tags API. אם אתם צריכים למחוק תג, קודם צריך לבטל את הצירוף שלו מכל המשאבים שהוא מצורף אליהם.
gcloud
כדי לנתק את הקישור של תג שמצורף לאשכול, מריצים את הפקודה הבאה:
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
מחליפים את מה שכתוב בשדות הבאים:
TAG_VALUE_ID: המזהה הקבוע או השם ממרחב השמות של ערך התג לניתוק. לדוגמה,tagValues/4567890123. פרטים על מזהי תגים זמינים במאמר הגדרות ומזהים של תגים.
CLUSTER_LOCATION: באשכולות אזוריים, מציינים את אזור המחשוב. לגבי אשכולות אזוריים, מציינים את אזור החישוב.
RESOURCE_ID: שם המשאב המלא של האשכול, למשל//container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME.במזהה המשאב:
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
CLUSTER_NAME: השם של האשכול.
המסוף
נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .
ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.
בקטע Metadata (מטא-נתונים), לצד Tags (תגים), לוחצים על Edit tags (עריכת תגים).
בחלונית תגים, לצד התג שרוצים לבטל את הקישור שלו, לוחצים על מחיקת הפריט.
לוחצים על Save.
בתיבת הדו-שיח אישור, לוחצים על אישור כדי לבטל את הצירוף של התג.
תקבלו התראה שמאשרת שהתגים עודכנו.
API
כדי למחוק קשרי תגים באשכול, משתמשים בשיטה tagBindings.delete עם נקודת הקצה האזורית או האזורית שבה האשכול ממוקם.
DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME
מחליפים את TAG_BINDING_NAME בשם המשאב המלא של האובייקט tagBinding שרוצים לנתק. לדוגמה, tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID.
מחיקת מפתחות תגים וערכי תגים
לפני שמוחקים מפתחות וערכים של תגים, צריך לוודא שהתגים לא מוצמדים למשאבים. אחר כך, קוראים את המאמר בנושא מחיקת תגים כדי למחוק את המפתחות והערכים.
תנאים ותגים בניהול זהויות והרשאות גישה (IAM)
אתם יכולים להשתמש בתגים ובתנאים של IAM כדי להעניק קישורי תפקידים למשתמשים בהיררכיית הפרויקט באופן מותנה. כשמשנים או מוחקים את התג שמצורף לאשכול, GKE יכול להסיר את גישת המשתמש לאשכול הזה אם הוחלה מדיניות הרשאה של IAM עם קישורי תפקידים מותנים. אפשר להשתמש במדיניות דחייה של IAM עם תגים כדי להשיג יעדים כמו הגנה על אשכולות קריטיים מפני מחיקה.
ההרשאה להציג רשימה של אשכולות GKE וליצור אותם נבדקת ברמת הפרויקט, ולא ברמת האשכול. אם אתם משתמשים בקשירת תפקידי IAM מותנית עם תגים ברמת האשכול כדי להגביל את הגישה לאשכולות ספציפיים, יכול להיות שהמשתמשים האלה ייתקלו בשגיאות כשהם ינסו לרשום או ליצור אשכולות בפרויקט. כדי להימנע מהשגיאות האלה, צריך לצרף תג לפרויקט האב ולהשתמש בקשירת תפקיד מותנית כדי להעניק גישה לרשימה או ליצור אותה. במאמר חומר עזר בנושא תפקידים ב-IAM מוסבר על תפקידים והרשאות.
המאמרים הבאים
- איך מגדירים מדיניות ארגונית באמצעות תגים
- איך מנהלים את התגים ומצרפים אותם למשאבים
- כאן מפורטים שירותים אחרים שתומכים בתגים.
- איך משתמשים בתגים עם IAM