שליטה בגישה באמצעות IAM

במאמר הזה נסביר איך לבצע את הפעולות הבאות ב-Dataform:

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

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

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

    In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Verify that billing is enabled for your Google Cloud project.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

הענקת הגישה הנדרשת ל-Dataform

בקטע הזה מוסבר איך להעניק את התפקידים לניהול זהויות והרשאות גישה (IAM) שסוכני השירות של Dataform וחשבונות שירות בהתאמה אישית צריכים כדי להריץ תהליכי עבודה ב-BigQuery.

מידע על חשבונות שירות בהתאמה אישית וסוכני שירות של Dataform

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

כשיוצרים מאגר Dataform או הגדרת תהליך עבודה, אפשר לבחור כל חשבון שירות שיש לכם הרשאות act-as לגביו. אתם צריכים להגדיר את הרשאות הפעולה הנדרשות לכל חשבונות השירות שמשויכים למשאבי Dataform.

כשיוצרים את מאגר Dataform הראשון, Dataform יוצר באופן אוטומטי סוכן שירות. ‫Dataform משתמש בסוכן השירות כדי ליצור אינטראקציה עם BigQuery בשמכם.

מזהה סוכן השירות של Dataform הוא בפורמט הבא:

service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

מחליפים את PROJECT_NUMBER במזהה המספרי שלGoogle Cloud הפרויקט. אפשר לראות את Google Cloud מזהה הפרויקט בלוח הבקרה של המסוף.Google Cloud מידע נוסף זמין במאמר איך מוצאים את השם, המספר והמזהה של הפרויקט.

תפקידים נדרשים לסוכני שירות של Dataform, לחשבונות שירות בהתאמה אישית ולחשבונות Google

סוכני שירות של Dataform, חשבונות שירות בהתאמה אישית ופרטי כניסה של משתמשים לחשבון Google (גרסת Preview) שמשמשים לאימות ב-Dataform צריכים את תפקידי ה-IAM הבאים ב-BigQuery כדי להריץ תהליכי עבודה ב-BigQuery:

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

כדי להפעיל פרסומים אוטומטיים של מאגרי מידע והרצות אוטומטיות של תהליכי עבודה, צריך להעניק לסוכן השירות של Dataform את ההרשאה iam.serviceAccounts.actAs בחשבון השירות האפקטיבי.

שיקולי אבטחה

כשמקצים את התפקידים שנדרשים ל-Dataform לסוכן שירות של Dataform, לחשבון שירות בהתאמה אישית או לחשבון Google של משתמש (גרסת Preview), צריך לקחת בחשבון את שיקולי האבטחה הבאים:

  • כל חשבון שירות בהתאמה אישית שקיבל את התפקידים הנדרשים עשוי לקבל גישה ל-BigQuery או ל-Secret Manager בפרויקט שאליו חשבון השירות משויך, ללא קשר ל-VPC Service Controls. כש-Dataform משתמש בחשבון שירות בהתאמה אישית כדי להריץ תהליכי עבודה, הבקשות של Dataform נחשבות כבקשות שמקורן בתוך גבולות הגזרה של VPC Service Controls של הפרויקט שמכיל את המאגר. לכן, VPC Service Controls לא חוסם את התקשורת בין Dataform לבין שירותים אחרים, כמו BigQuery או Secret Manager, אם המשאבים האלה נמצאים באותם גבולות גזרה לשירות.

    פרטים נוספים על ניהול גבולות האבטחה האלה זמינים במאמר בנושא הגדרת VPC Service Controls.

  • כל משתמש שיש לו הרשאת dataform.repositories.create ב-IAM יכול להריץ קוד באמצעות סוכן השירות של Dataform וכל ההרשאות שניתנו לסוכן השירות או לחשבון השירות הזה.

    מידע נוסף זמין במאמר בנושא שיקולי אבטחה לגבי הרשאות ב-Dataform.

  • כדי לשמור על מודל הרשאות מאובטח, מומלץ לבדוק באופן קבוע את הקישורים של תפקידי סוכן השירות ב-Dataform. הוראות מפורטות למעקב מופיעות במאמר מעקב אחרי הרשאות של סוכני שירות באמצעות Security Command Center.

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

כדי למנוע ממשתמשים לבצע פעולות בזמן שהם משתמשים בפרטי הכניסה של משתמש אחר לחשבון Google, נאכפות ההגבלות הבאות:

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

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

הקצאת התפקידים הנדרשים ב-BigQuery

כדי להעניק את תפקידי ה-IAM הנדרשים ב-BigQuery לסוכן השירות של Dataform, לחשבון שירות בהתאמה אישית שבו רוצים להשתמש ב-Dataform או לחשבון Google של משתמש שבו רוצים להשתמש כדי לבצע אימות ב-Dataform (גרסת Preview), פועלים לפי השלבים הבאים:

  1. נכנסים לדף Dataform במסוף Google Cloud .

    מעבר אל Dataform

  2. בוחרים מאגר או יוצרים מאגר.

  3. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  4. לוחצים על הענקת גישה.

  5. בשדה New principals, מזינים את מזהה סוכן השירות, מזהה חשבון השירות או כתובת האימייל של חשבון Google של המשתמש (תצוגה מקדימה).

  6. ברשימה Select a role בוחרים בתפקיד BigQuery Job User.

  7. לוחצים על Add another role, ואז ברשימה Select a role בוחרים בתפקיד BigQuery Data Editor.

  8. לוחצים על Add another role ובוחרים את התפקיד BigQuery Data Viewer מהרשימה Select a role.

  9. לוחצים על Save.

מתן התפקידים הנדרשים לתהליכי עבודה אוטומטיים

כדי להשתמש בחשבון שירות בהתאמה אישית ב-Dataform, לסוכן השירות של Dataform צריכה להיות גישה לחשבון השירות בהתאמה אישית. כך, Dataform יכול להריץ את תהליכי העבודה שלכם באמצעות ההרשאות שהוגדרו בחשבון השירות המותאם אישית, ולא בחשבון של סוכן השירות.

כדי להעניק את הגישה הזו, צריך להקצות לסוכן השירות של Dataform את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) כחשבון המשתמש. כך סוכן השירות של Dataform יכול להתחזות לחשבון השירות על ידי יצירת פרטי כניסה לטווח קצר שנקראים אסימונים. האסימונים האלה נדרשים כדי ש-Dataform יפעיל תהליכי עבודה באמצעות הזהות של חשבון השירות בהתאמה אישית.

צריך גם להעניק לסוכן השירות של Dataform את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser). כך סוכן השירות של Dataform יכול להתחיל הפעלות חדשות של תהליכי עבודה אוטומטיים עבור תצורות של תהליכי עבודה שמופעלים על ידי חשבון השירות המותאם אישית.

כדי להעניק לסוכן השירות של Dataform גישה לחשבון שירות בהתאמה אישית:

  1. במסוף Google Cloud , נכנסים אל IAM > Service accounts.

    כניסה לדף Service accounts

  2. בוחרים את הפרויקט שבו נמצא חשבון השירות המותאם אישית. Google Cloud

  3. בדף Service accounts for project "PROJECT_NAME", בוחרים את חשבון השירות המותאם אישית.

  4. עוברים אל Principals with access ולוחצים על Grant Access.

  5. בשדה New principals, מזינים את המזהה של סוכן השירות של Dataform.

    מזהה סוכן השירות של Dataform הוא בפורמט הבא:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. ברשימה Select a role בוחרים את התפקיד Service Account Token Creator ואת התפקיד Service Account User.

  7. לוחצים על Save.

עכשיו אפשר להגדיר את חשבון השירות המותאם אישית במאגר Dataform.

ביקורת על הגדרות של חשבונות שירות

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

כשמשתמשים בחשבון שירות בהתאמה אישית עבור מאגר או תהליך עבודה של Dataform, צריך לוודא שלסוכן השירות של Dataform יש את התפקיד Service Account User (roles/iam.serviceAccountUser) בחשבון השירות בהתאמה אישית. התפקיד הזה מעניק את ההרשאה iam.serviceAccounts.actAs, שמאפשרת להפעלות מתוזמנות שהופעלו על ידי סוכן השירות של Dataform להתחזות לחשבון השירות המותאם אישית. בנוסף, מוודאים שלסוכן השירות של Dataform יש את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) בחשבון השירות הרלוונטי.

אימות חשבונות שירות של מאגרים

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

  1. משתמשים במאגר משאבי הענן כדי להציג רשימה של כל המשאבים מסוג dataform.Repository. מידע נוסף מופיע במאמר בנושא צפייה בנכסים.

  2. לגבי כל מאגר בתוצאות של מאגר משאבי ענן, בודקים את השדה resource.data.labels כדי לראות אם הוא בהיקף. הנתיב המדויק עשוי להשתנות מעט בהתאם לפורמט הייצוא.

  3. כדי לזהות מאגרי מידע שלא נכללים בהיקף, בודקים את מפת התוויות לפי המפתח single-file-asset-type. הנוכחות של המפתח הזה מציינת שהמאגר נמצא בשימוש של תכונה ב-BigQuery. אם הערך הוא sql או data_canvas, אפשר להחריג את המאגר מבדיקות ההרשאות של חשבון השירות.

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

  4. לכל מאגר שנכלל בהיקף, בודקים את השדה resource.data.serviceAccount בפלט של מאגר משאבי הענן כדי לקבוע אם מוגדר חשבון שירות בהתאמה אישית:

    • אם השדה resource.data.serviceAccount מופיע והערך שלו שונה מכתובת האימייל של סוכן השירות של Dataform בפרויקט, המשמעות היא שהמאגר משתמש בחשבון שירות בהתאמה אישית.
    • אם השדה resource.data.serviceAccount לא מופיע, או אם הערך של השדה זהה לסוכן השירות של Dataform בפרויקט, המאגר משתמש בסוכן השירות.

  5. אם משתמשים בחשבון שירות בהתאמה אישית, צריך לוודא שלסוכן השירות של Dataform יש את התפקידים 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) ו'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator) בחשבון השירות הזה בהתאמה אישית.

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

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

כדי לאמת את השימוש בחשבון שירות ב-dataform.WorkflowConfig resources, צריך לבצע את הפעולות הבאות:

  1. אפשר להשתמש במאגר משאבי הענן כדי להציג רשימה של כל המשאבים מסוג dataform.WorkflowConfig.

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

    • אם השדה resource.data.serviceAccount מופיע, הערך שלו הוא כתובת האימייל של חשבון השירות שהוגדרה באופן מפורש בהגדרות של תהליך העבודה.
    • אם השדה resource.data.serviceAccount לא מופיע, חשבון השירות עובר בירושה מהמאגר הראשי של הגדרת תהליך העבודה. כדי למצוא את חשבון השירות האפקטיבי, צריך לבדוק את ההגדרה של מאגר האב העליון.
  3. כדי לדעת אם נעשה שימוש בחשבון שירות בהתאמה אישית, משווים את כתובת האימייל של חשבון השירות בפועל לכתובת האימייל של סוכן השירות של הפרויקט ב-Dataform. אם הם שונים, נעשה שימוש בחשבון שירות בהתאמה אישית.

  4. אם משתמשים בחשבון שירות בהתאמה אישית, צריך לוודא שסוכן השירות של Dataform קיבל את התפקידים 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) ו'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון השירות הזה.roles/iam.serviceAccountTokenCreator ההרשאות האלה מאפשרות לסוכן של שירות Dataform להתחיל הרצות של תהליכי עבודה בהתחזות לחשבון השירות המותאם אישית.

מעקב אחרי הרשאות של סוכני שירות באמצעות Security Command Center

כדי לוודא שאתם ממשיכים לפעול לפי העיקרון של הרשאות מינימליות, כדאי לעקוב באופן פעיל אחרי הפרויקט ב-Security Command Center ולחפש ממצאים שקשורים לחשבונות שירות ולסוכני שירות עם הרשאות מוגזמות.

הוראות לבדיקה וליישום של ממצאי תיקון ב-Security Command Center זמינות במאמרים ממצאי IAM Recommender ובדיקת ממצאי זהות במסוף.

כשמבצעים פעולות לתיקון ממצא SERVICE_AGENT_GRANTED_BASIC_ROLE של סוכן שירות של Dataform, מחליפים את התפקיד עם יותר מדי הרשאות בתפקיד מוגדר מראש עם ההרשאות המינימליות שנדרשות, בהיקף של המשאב הספציפי. לדוגמה, אפשר להעניק את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון שירות ספציפי.

שליטה בגישה ל-Dataform באמצעות IAM

בקטע הזה מוסבר על אפשרויות בקרת הגישה ב-Dataform ואיך צופים בתפקידים ב-Dataform ומעניקים אותם. ‫Dataform משתמש בניהול זהויות והרשאות גישה (IAM) לבקרת גישה. מידע נוסף על תפקידים והרשאות ב-IAM זמין במאמר אינדקס של תפקידים והרשאות ב-IAM.

תפקידים מוגדרים מראש ב-Dataform

בטבלה הבאה מפורטים התפקידים המוגדרים מראש שנותנים לכם גישה למשאבי Dataform:

Role Permissions

(roles/dataform.admin)

Full access to all Dataform resources.

dataform.*

  • dataform.commentThreads.create
  • dataform.commentThreads.delete
  • dataform.commentThreads.get
  • dataform.commentThreads.list
  • dataform.commentThreads.update
  • dataform.comments.create
  • dataform.comments.delete
  • dataform.comments.get
  • dataform.comments.list
  • dataform.comments.update
  • dataform.compilationResults.create
  • dataform.compilationResults.get
  • dataform.compilationResults.list
  • dataform.compilationResults.