בדף הזה מוסבר איך מתחילים להשתמש בבקרת גישה מבוססת-תפקידים (RBAC) במופעים של Cloud Data Fusion. ה-RBAC זמין במופעים של Cloud Data Fusion שפועלים בגרסה 6.5 ואילך.
מידע נוסף זמין במאמר סקירה כללית על בקרת גישה מבוססת-תפקידים (RBAC).
מומלץ: אלא אם נדרש לצורך אוטומציה, כדאי להשתמש במסוף Google Cloud כדי לבצע את המשימות של RBAC.
הפעלת RBAC במופע קיים
אפשר להפעיל RBAC במופע קיים של Cloud Data Fusion שפועל בגרסה 6.5 ומעלה.
המסוף
כדי להפעיל RBAC במופע קיים של Cloud Data Fusion:
- עוברים לפרטי המופע:
במסוף Google Cloud , נכנסים לדף Cloud Data Fusion.
לוחצים על Instances (מכונות), ואז לוחצים על שם המכונה כדי לעבור לדף Instance details (פרטי המכונה).
- מוודאים שהמופע שודרג לגרסה 6.5 ואילך. אם הגרסה של המכונה קודמת ל-6.5, צריך לשדרג את המכונה לגרסה 6.5 או לגרסה מאוחרת יותר.
- לוחצים על הפעלת RBAC.
- לוחצים על Save.
- ממתינים לסיום פעולת העדכון של המופע.
gcloud
כדי להפעיל RBAC במופע קיים של Cloud Data Fusion, מריצים את הפקודה הבאה:
gcloud beta data-fusion instances update --enable_rbac --location=REGION INSTANCE_ID
API בארכיטקטורת REST
מפעילים RBAC במכונה קיימת באמצעות Cloud Data Fusion patch API. מגדירים את הדגל enableRbac לערך true ומשתמשים בפרמטר השאילתה updateMask באמצעות פקודת הדוגמה הבאה:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "true"}'
השבתת RBAC במופע קיים
אם יש לכם מופע קיים עם RBAC מופעל, אתם יכולים להשבית את ה-RBAC אם צריך. השבתת RBAC לא משפיעה על צינורות או הגדרות קיימים במופע. היא פשוט משביתה את בידוד האבטחה במרחבי השמות.
המסוף
כדי להשבית את בקרת הגישה מבוססת-התפקידים במכונת Cloud Data Fusion קיימת:
עוברים לפרטי המופע:
במסוף Google Cloud , נכנסים לדף Cloud Data Fusion.
לוחצים על Instances (מכונות), ואז לוחצים על שם המכונה כדי לעבור לדף Instance details (פרטי המכונה).
לוחצים על השבתת RBAC.
לוחצים על Save.
ממתינים לסיום פעולת העדכון של המופע.
gcloud
כדי להשבית את RBAC במופע קיים, משתמשים בארגומנט --no-enable_rbac במקום --enable-rbac.
gcloud beta data-fusion instances update --no-enable_rbac --location=REGION INSTANCE_ID
דוגמה לשימוש:
gcloud beta data-fusion instances update --no-enable_rbac --location=us-east1 cdf-test-instance
API בארכיטקטורת REST
משביתים את RBAC במכונה קיימת באמצעות Cloud Data Fusion patch API. מגדירים את הדגל enableRbac לערך false ומשתמשים בפרמטר השאילתה updateMask באמצעות פקודת הדוגמה הבאה:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
gcurl https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances/$INSTANCE?updateMask=enable_rbac -X PATCH -d '{"enable_rbac": "false"}'
יצירת מופע חדש עם RBAC
המסוף
כדי ליצור מכונת Cloud Data Fusion חדשה עם RBAC מופעל:
עוברים לדף Instances ב-Cloud Data Fusion.
לוחצים על Instances (מופעים).
לוחצים על Create an instance ומזינים את פרטי המופע.
בוחרים באפשרות מהדורת Enterprise. תמיכה ב-RBAC קיימת רק במהדורת Enterprise.
בקטע Advanced options (אפשרויות מתקדמות), בוחרים באפשרות Enable Granular Role-Based Access Control (הפעלה של בקרת גישה פרטנית לפי תפקידים).
התכונה הזו זמינה רק במופעים שמשתמשים ב-Cloud Data Fusion בגרסה 6.5 ואילך.
לוחצים על יצירה.
gcloud
כדי ליצור מופע חדש עם RBAC, מריצים את הפקודה הבאה:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=REGION INSTANCE_ID \
--version=6.5.0
דוגמה לשימוש:
gcloud beta data-fusion instances create --edition=enterprise \
--enable_rbac \
--location=us-east1 \
--version=6.5.0
API בארכיטקטורת REST
כדי ליצור מכונה עם RBAC באמצעות API בארכיטקטורת REST, מעבירים את הדגל enableRbac שמוגדר ל-true באפשרויות המכונה, כמו שמוצג בפקודות הבאות:
export PROJECT=PROJECT_ID
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1beta1/projects/$PROJECT/locations/$LOCATION/instances?instanceId=$INSTANCE -X POST -d '{"description": "RBAC CDF instance created through REST", "type": "ENTERPRISE", "enableRbac": "true"}'
הקצאת תפקידים מוגדרים מראש ב-Cloud Data Fusion למשתמשים (נדרש)
אחרי שמפעילים את RBAC, מקצים תפקידים לחשבונות משתמשים כדי לאפשר להם לבצע פעולות ספציפיות במופע או במרחב שמות. כדי להחליט אילו תפקידים הכי מתאימים לדרישות שלכם, אפשר לעיין במאמרים תפקידים מוגדרים מראש ב-Cloud Data Fusion והמלצות בנושא אבטחה.
המסוף
כדי להעניק תפקידים מוגדרים מראש ב-Cloud Data Fusion לחשבונות משתמשים:
עוברים לדף Permissions ב-Cloud Data Fusion.
לוחצים על הוספה .
תיפתח תיבת הדו-שיח הוספת גישה למשתמשים.
בשדה New members, מזינים רשימה של חשבונות (משתמשים, קבוצות או כתובות אימייל של חשבונות שירות) שרוצים להקצות להם תפקידים.
מסמנים את התיבה לצד כל מופע שרוצים להעניק לו את ההרשאות האלה.

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

אם מעניקים הרשאות ברמת מרחב השמות, לוחצים על בחירה.
נפתחת תיבת הדו-שיח הוספת הרשאות גישה.
בוחרים מרחב שמות ואת התפקיד המוגדר מראש ב-Cloud Data Fusion שרוצים להקצות למרחב השמות.
לוחצים על בחירה כדי לשמור את ההגדרות החדשות.
אופציונלי: כדי להעניק הרשאות למרחב שמות למופעים אחרים, חוזרים על שלב 5.
לוחצים על Save.
כדי לוודא אילו תפקידים הוקצו, אפשר לעיין במאמר בנושא אימות תפקידים במסוף Google Cloud .
gcloud
אפשר להשתמש ב-Google Cloud CLI כדי לשלוט בגישה באופן פרוגרמטי.
כדי להקצות תפקיד באמצעות ה-CLI של gcloud, משתמשים ברשימה של מזהי משתמשים שמופרדים באמצעות פסיקים בפורמט הבא:
[user|group|serviceAccount][email_address]
מספקים את הערכים הבאים:
user:useremail@example.comgroup:groupemail@example.comserviceAccount:serviceaccount@project.iam.gserviceaccount.com
דוגמאות נוספות מופיעות במאמר בנושא הקצאת תפקיד.
מתן התפקיד Instance Accessor (חובה)
קודם צריך לתת למשתמש גישה למופע על ידי הקצאת תפקיד Accessor במופע:
מייצאים את המשתנים הבאים באמצעות הפקודה הבאה, ומחליפים את המשתנים בערכים משלכם:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL export USER_TYPE=USER_TYPEמחליפים את המשתנים הבאים בערכים משלכם:
- PROJECT_ID: שם הפרויקט.
- INSTANCE_ID: השם של המופע.
- REGION: האזור שהפרויקט שייך אליו.
- EMAIL: כתובת האימייל של חשבון המשתמש.
- USER_TYPE: סוג המשתמש יכול להיות אחד מהבאים: user, group או serviceAccount.
מריצים את הפקודה הבאה כדי להקצות את התפקיד:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --member="${USER_TYPE}:${USER_ID}" --role="roles/datafusion.accessor"
הקצאת תפקידים למרחב שמות (תלוי בתרחיש השימוש)
בהתאם לתרחיש השימוש, מקצים תפקידים באמצעות הפקודות הבאות:
מייצאים את המשתנים הבאים באמצעות הפקודה הבאה, ומחליפים את המשתנים בערכים משלכם:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPEמחליפים את המשתנים הבאים בערכים משלכם:
- PROJECT_ID: שם הפרויקט.
- INSTANCE_ID: השם של המופע.
- REGION: האזור שהפרויקט שייך אליו.
- NAMESPACE: שם מרחב השמות.
- EMAIL: כתובת האימייל של חשבון המשתמש.
- USER_TYPE: סוג המשתמש יכול להיות אחד מהבאים: user, group או serviceAccount.
מריצים את הפקודה הבאה כדי להקצות תפקיד לחשבון משתמש במרחב שמות נתון:
gcloud beta data-fusion add-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="roles/ROLE_NAME"מחליפים את ROLE_NAME באחד מהערכים הבאים:
- למשתמשים עם הרשאת עריכה במרחב שמות, משתמשים ב-
datafusion.editor - לתפקיד אופרטור במרחב שמות, משתמשים ב-
datafusion.operator - לתפקיד Developer (מפתח) במרחב שמות, משתמשים ב-
datafusion.developer - לתפקיד Viewer (צפייה) במרחב שמות, משתמשים ב-
datafusion.viewer
- למשתמשים עם הרשאת עריכה במרחב שמות, משתמשים ב-
אופציונלי: ביטול תפקידים במרחב שמות
כדי לבטל את התפקיד שהוענק למשתמש במרחב שמות מסוים, משתמשים בפקודה הבאה:
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
export USER_ID=EMAIL
# User type can be one of: user, group, or serviceAccount.
export USER_TYPE=USER_TYPE
export ROLE=ROLE_NAME
gcloud beta data-fusion remove-iam-policy-binding ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE} --member="${USER_TYPE}:${USER_ID}" --role="${ROLE}"
אופציונלי: הצגת רשימת התפקידים שהוענקו במרחב שמות נתון
כדי לראות את כל התפקידים שניתנו במרחב שמות מסוים, משתמשים בפקודה הבאה כדי לאחזר את מדיניות ה-IAM:
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
API בארכיטקטורת REST
מתן התפקיד Instance Accessor (חובה)
קודם צריך לתת למשתמש גישה למופע על ידי הקצאת תפקיד Accessor במופע.
מומלץ מאוד: משתמשים ב-CLI של gcloud כדי להעניק את תפקיד הגישה.
הקצאת תפקיד למשתמש עם גישה למופע:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export USER_ID=EMAIL # User type can be one of: user, group, or serviceAccount. export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'מאחזרים את מדיניות IAM הנוכחית ושומרים אותה בקובץ:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy > iam_policy.jsonמוסיפים קישור לתפקיד ולמשתמש במדיניות. לדוגמה:
{ "policy": { "bindings": [ { "role": "roles/datafusion.accessor", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }מעדכנים את מדיניות ה-IAM של המכונה:
gcurl \ -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:setIamPolicy
הקצאת תפקידים למרחב שמות (תלוי בתרחיש השימוש)
בהתאם לתרחיש השימוש, מקצים תפקידים באמצעות הפקודות הבאות:
מייצאים את המשתנים הבאים באמצעות הפקודה הבאה, ומחליפים את המשתנים בערכים משלכם:
export PROJECT=PROJECT_ID export INSTANCE=INSTANCE_ID export REGION=REGION export NAMESPACE=NAMESPACE export USER_ID=EMAIL export USER_TYPE=USER_TYPE alias gcurl='curl --header "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'מחליפים את המשתנים הבאים בערכים משלכם:
- PROJECT_ID: שם הפרויקט.
- INSTANCE_ID: השם של המופע.
- REGION: האזור שהפרויקט שייך אליו.
- NAMESPACE: שם מרחב השמות.
- EMAIL: כתובת האימייל של חשבון המשתמש.
- USER_TYPE: סוג המשתמש יכול להיות אחד מהבאים: user, group או serviceAccount.
מאחזרים את מדיניות IAM הנוכחית ושומרים אותה בקובץ:
gcurl https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:getIamPolicy > iam_policy.jsonמחליפים את iam_policy.json בשם הקובץ שלכם.
מוסיפים קישור לתפקיד ולמשתמש בקובץ המדיניות. לדוגמה, קובץ המדיניות יכול להיראות כך:
{ "policy": { "bindings": [ { "role": "roles/ROLE_NAME", "members": [ "${USER_TYPE}:${USER_ID}" ] } ] } }אפשר לציין כמה קישורי תפקידים למדיניות מסוימת, ואפשר לציין כמה חשבונות משתמשים ברשימה members לקישור תפקיד מסוים. עבור חשבון ראשי נתון, מחליפים את ROLE_NAME באחד מהערכים הבאים:
- למשתמשים עם הרשאת עריכה במרחב שמות, משתמשים ב-
datafusion.editor - לתפקיד אופרטור במרחב שמות, משתמשים ב-
datafusion.operator - לתפקיד Developer (מפתח) במרחב שמות, משתמשים ב-
datafusion.developer - לתפקיד Viewer (צפייה) במרחב שמות, משתמשים ב-
datafusion.viewer
- למשתמשים עם הרשאת עריכה במרחב שמות, משתמשים ב-
מריצים את הפקודה הבאה כדי לעדכן את קובץ המדיניות:
gcurl -d @iam_policy.json \ https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/{NAMESPACE}:setIamPolicyמחליפים את iam_policy.json בשם הקובץ שלכם.
אימות תפקידים במסוף Google Cloud
אפשר לעיין בתפקידים קיימים ולערוך אותם בדף הרשאות ב-Cloud Data Fusion.
אימות התפקידים באמצעות קובץ המדיניות
מוודאים שהתפקידים הוקצו למשתמשים הנכונים בקובץ Policy של IAM באמצעות ה-CLI של gcloud או API בארכיטקטורת REST.
בדוגמה הבאה של קובץ מדיניות IAM, למשתמש alice@example.com יש את התפקיד Data Fusion Developer:
bindings:
- members:
- user:alice@example.com
role: roles/datafusion.developer
- members:
- user:bob@example.com
- serviceAccount:myserviceaccount@myproject.iam.gserviceaccount.com
role: roles/datafusion.operator
- members:
- user:james@example.com
- user:mike@example.com
- group:mygroup@googlegroups.com
role: roles/datafusion.editor
etag: BwXA8BAHYmw=
קבלת מדיניות IAM לגבי מכונה
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}:getIamPolicy
קבלת מדיניות IAM למרחב שמות
gcloud
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export REGION=REGION
export NAMESPACE=NAMESPACE
gcloud beta data-fusion get-iam-policy ${INSTANCE} --project ${PROJECT} --location=${REGION} --namespace=${NAMESPACE}
cURL
export PROJECT=PROJECT_ID
export INSTANCE=INSTANCE_ID
export NAMESPACE=NAMESPACE
export REGION=REGION
curl -H "Authorization: Bearer "$(gcloud auth print-access-token) \
https://datafusion.googleapis.com/v1beta1/projects/${PROJECT}/locations/${REGION}/instances/${INSTANCE}/namespaces/${NAMESPACE}:getIamPolicy