האצלת הרשאות של סוכן שירות לחשבון שירות בניהול המשתמש היא הגדרה אופציונלית לארגונים שדורשים בקרת גישה לקטגוריות משתמשים לכל משתמש.
בהעברות ללא סוכן, Storage Transfer Service משתמש כברירת מחדל בסוכן שירות כדי להעביר את הנתונים בין המקור ליעד. אתם נותנים לסוכן השירות הרשאות גישה לקטגוריות של Cloud Storage.
מכיוון שכל ההעברות בפרויקט משתמשות באותו סוכן שירות של Storage Transfer Service, יש לו הרשאות בכל הקטגוריות שמעורבות בכל העברה בפרויקט.
לחלופין, אתם יכולים להקצות הרשאות לקטגוריה לכמה חשבונות שירות בניהול המשתמשים. לחשבונות השירות האלה בניהול המשתמשים ניתנות הרשאות לקטגוריות ספציפיות של מקור ויעד, והם גם מוגבלים לחשבונות משתמשים ספציפיים (החשבונות שיוצרים או מפעילים את משימת ההעברה).
תרחישים לדוגמה
התרחישים הבאים מדגימים אפשרויות שונות של הרשאות באמצעות סוכן השירות וחשבונות שירות בניהול המשתמשים.
כדי לראות את הפרטים, אפשר להרחיב כל אחד מהקטעים.
תרחיש 1: סוכן שירות בלבד
בתרחיש הזה, כל ההרשאות ניתנות לסוכן השירות.
- לסוכן השירות ניתנות הרשאות כתיבה בקטגוריות A, B, C ו-D.
כל משתמש עם ההרשאות המתאימות ליצירת משימת העברה יכול להעביר נתונים אל קטגוריות A, B, C ו-D או מהן.
השיטה הזו מתאימה כשהמשתמש ב-Storage Transfer Service הוא משתמש מהימן של הנתונים בכל הקטגוריות, ויכול להגדיר נכון את משימות ההעברה כדי למנוע העברת נתונים לקטגוריה הלא נכונה או ממנה.
תרחיש 2: סוכני שירות בניהול המשתמש בלבד
בתרחיש הזה, כל ההרשאות ניתנות לחשבונות שירות בניהול המשתמשים.
- לחשבון שירות #1 בניהול המשתמש ניתנו הרשאות לקטגוריות A ו-B.
- חשבון שירות #2 בניהול המשתמש מקבל הרשאות לקטגוריות C ו-D.
בנוסף:
- למשתמש א' יש גישה לחשבון שירות מס' 1.
- למשתמש ב' ניתנה גישה לחשבון שירות מס' 2.
- למשתמש צ'רלי יש גישה לחשבונות השירות 1 ו-2.
במקרה הזה:
- אלפא יכול לעבור רק בין קטגוריות א' וב'.
- המשתמש Bravo יכול להעביר רק בין קטגוריות C ו-D.
- צ'רלי יכול להעביר רק בין קטגוריות א' ו-ב', ובין ג' ו-ד'.
- צ'רלי לא יכול להעביר בין A ל-C, בין A ל-D, בין B ל-C או בין B ל-D.
תרחיש 3: הרשאות מעורבות
בתרחיש הזה, הפרויקט מכיל שילוב של הרשאות של סוכני שירות והרשאות של חשבונות שירות בניהול המשתמשים.
- לסוכן השירות ניתנות הרשאות כתיבה בקטגוריות א' ו-ב'.
- לחשבון שירות #1 בניהול המשתמש ניתנו הרשאות לקריאה בלבד בקטגוריה C והרשאות כתיבה בקטגוריה D.
- למשתמש א' יש גישה לחשבון שירות מס' 1 שמנוהל על ידי המשתמש.
במקרה הזה:
- כל משתמש עם ההרשאות המתאימות ליצירת משימת העברה יכול להעביר נתונים אל קטגוריות A ו-B או מהן. הם לא יכולים לעבור לקטגוריה C או D או לצאת מהן.
- משתמש א' יכול להעביר נתונים אל קטגוריות א' ו-ב' ומחוץ להן.
- אלפא יכולה להעביר מחוץ לקטגוריה ג' לקטגוריה ד'.
- אלפא לא יכולה להעביר מחוץ לקטגוריה ג' לקטגוריה א' או ב'.
סקירה כללית על ההטמעה
ההטמעה מתבצעת באופן הבא:
- אתם יוצרים חשבון שירות שמנוהל על ידי משתמש, או משתמשים בחשבון קיים.
- אתם נותנים הרשאות:
- כדי שמשתמש יוכל לגשת לחשבון השירות שמנוהל על ידי משתמש.
- כדי שסוכן השירות יוכל ליצור אסימון גישה מחשבון השירות שמנוהל על ידי המשתמש.
- כדי שחשבון השירות בניהול המשתמשים יוכל לגשת לקטגוריות שלכם.
- המשתמש יוצר משימת העברה שמציינת את חשבון השירות שמנוהל על ידי המשתמש.
- השירות Storage Transfer Service בודק אם למשתמש יש את ההרשאות הנכונות בחשבון השירות. אם לא ניתנו ההרשאות הנכונות, אי אפשר ליצור את משימת ההעברה.
- סוכן השירות יוצר אסימון OAuth בשם חשבון השירות שמנוהל על ידי המשתמש. טוקן ה-OAuth מאפשר ל-Storage Transfer Service לגשת לקטגוריות שמעורבות בהעברה.
- משימת ההעברה מופעלת.
- התוקף של טוקן OAuth הוא קצר. אם משימת ההעברה מתבצעת כשהאסימון פג תוקף, שירות Storage Transfer Service יוצר אסימון חדש וממשיך בהעברה.
הגדרת הקצאת הרשאות
פועלים לפי ההוראות כדי להקצות לסוכן השירות גישה לחשבון שירות שמנוהל על ידי משתמש.
דרישות
- כדי ליצור או לנהל משימות העברה, חשבון המשתמש שלכם צריך הרשאות פרויקט של Storage Transfer Service. הרשאות משתמש נדרשות
- כדי ליצור חשבון שירות חדש בניהול המשתמש, צריך את התפקיד "יצירת חשבונות שירות" (
roles/iam.serviceAccountCreator) בפרויקט. - כדי לתת למשתמש ולסוכן השירות גישה לחשבון השירות שמנוהל על ידי המשתמש, צריך את התפקיד "אדמין של חשבון שירות" (
roles/iam.serviceAccountAdmin) בחשבון השירות שמנוהל על ידי המשתמש או בפרויקט.
יצירה או זיהוי של חשבון שירות בניהול המשתמשים
אתם יכולים ליצור חשבון שירות חדש שמנוהל על ידי משתמש, או להשתמש בחשבון קיים.
כדי ליצור חשבון שירות בניהול המשתמש, פועלים לפי ההוראות במאמר יצירת חשבונות שירות.
כדי להשתמש בחשבון שירות קיים שמנוהל על ידי משתמש, צריך את כתובת האימייל שלו, שמופיעה בפורמט הבא:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.comאם אתם צריכים את המזהה הייחודי של חשבון השירות (
uniqueId), מריצים את הפקודהgcloud iam service-accounts describe SERVICE_ACCOUNT_EMAIL --format="value(uniqueId)"או בודקים את העמודה Unique ID בדף Service Accounts במסוףGoogle Cloud .
אם חשבון השירות נמצא בפרויקט אחר מזה של משימת ההעברה, קראו את המאמר הפעלה של צירוף חשבונות שירות בין פרויקטים.
נותנים למשתמש גישה
נותנים לחשבון המשתמש גישה לחשבון השירות החדש שמנוהל על ידי המשתמש, ומקצים לו את התפקיד משתמש בחשבון שירות (roles/iam.serviceAccountUser). חשבון המשתמש הוא החשבון שמשמש ליצירה או לעדכון של משימת ההעברה.
מסוף Google Cloud
נכנסים לדף Service Accounts במסוף Google Cloud .
בוחרים פרויקט.
לוחצים על כתובת האימייל של חשבון השירות שמנוהל על ידי המשתמש.
לוחצים על הכרטיסייה חשבונות משתמשים עם גישה.
לוחצים על Grant access.
מזינים את כתובת האימייל של המשתמש. לדוגמה,
user1@example.com.בתפריט הנפתח Role, בוחרים באפשרות Service Account User.
לוחצים על Save. החשבון הראשי יקבל את התפקיד בחשבון השירות.
gcloud
כדי לתת תפקיד לחשבון ראשי, מריצים את הפקודה add-iam-policy-binding:
gcloud iam service-accounts add-iam-policy-binding USER_MANAGED_SERVICE_ACCOUNT_EMAIL \ --member=PRINCIPAL --role=roles/iam.serviceAccountUser
מחליפים את המשתנים הבאים:
- USER_MANAGED_SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שמנוהל על ידי המשתמש, בפורמט
SA_NAME@PROJECT_ID.iam.gserviceaccount.com. - PRINCIPAL: כתובת האימייל של המשתמש שמריץ את משימת ההעברה, בפורמט
user:name@example.com.
מתן גישה לסוכן השירות
כדי לאפשר לסוכן השירות ליצור אסימון גישה מחשבון השירות בניהול המשתמש, צריך לתת לסוכן השירות גישה לחשבון השירות בניהול המשתמש ולהקצות לו את התפקיד יצירת אסימונים בחשבון שירות (roles/iam.serviceAccountTokenCreator).
כדי לתת גישה, אתם צריכים את כתובת האימייל של סוכן השירות. כדי למצוא את כתובת האימייל של סוכן השירות:
עוברים אל דף העזר של
googleServiceAccounts.get.נפתחת חלונית אינטראקטיבית בשם Try this method.
בחלונית, בקטע Request parameters, מזינים את מזהה הפרויקט. הפרויקט שמציינים כאן צריך להיות הפרויקט שבו משתמשים כדי לנהל את Storage Transfer Service.
לוחצים על Execute.
כתובת האימייל של סוכן השירות מוחזרת כערך של
accountEmail. הפורמט הואproject-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.
כדי לתת לסוכן השירות גישה לחשבון השירות שמנוהל על ידי המשתמש:
מסוף Google Cloud
נכנסים לדף Service Accounts במסוף Google Cloud .
בוחרים פרויקט.
לוחצים על כתובת האימייל של חשבון השירות שמנוהל על ידי המשתמש.
לוחצים על הכרטיסייה חשבונות משתמשים עם גישה.
לוחצים על Grant access.
מזינים את כתובת האימייל של סוכן השירות.
מהרשימה הנפתחת Role, בוחרים באפשרות Service Account Token Creator.
לוחצים על Save. החשבון הראשי יקבל את התפקיד בחשבון השירות.
gcloud
כדי לתת תפקיד לחשבון ראשי, מריצים את הפקודה add-iam-policy-binding:
gcloud iam service-accounts add-iam-policy-binding USER_MANAGED_SERVICE_ACCOUNT_EMAIL \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/iam.serviceAccountTokenCreator
מחליפים את המשתנים הבאים:
- USER_MANAGED_SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות שמנוהל על ידי המשתמש, בפורמט
SA_NAME@PROJECT_ID.iam.gserviceaccount.com. - SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
מתן הרשאות לקטגוריה לחשבון השירות שמנוהל על ידי המשתמשים
נותנים לחשבון השירות שמנוהל על ידי המשתמש את ההרשאות שמפורטות במאמרים הגדרת גישה למקור: Cloud Storage והגדרת גישה ל-sink: Cloud Storage, במקום לסוכן השירות.
יצירת משימת העברה באמצעות חשבון שירות שמנוהל על ידי משתמש
אחרי שנותנים את ההרשאות הנכונות, אפשר לציין את חשבון השירות שמנוהל על ידי המשתמש כשיוצרים משימת העברה חדשה.
מסוף Google Cloud
פועלים לפי ההוראות ליצירת העברה. לפני שמשלימים את משימת ההעברה:
- בדף בחירת הגדרות, מאתרים את הקטע סוג חשבון שירות.
- בוחרים באפשרות חשבון שירות מנוהל על ידי המשתמש.
- מזינים את כתובת האימייל של חשבון השירות שמנוהל על ידי המשתמש, בפורמט
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com. - לוחצים על Create כדי ליצור את משימת ההעברה.
API בארכיטקטורת REST
מציינים את חשבון השירות בניהול המשתמשים כערך של השדה serviceAccount בבקשה transferJobs.create.
אפשר להשתמש בכתובת האימייל של חשבון השירות (SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com) או במזהה הייחודי (123456789012345678901).
לדוגמה:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "A transfer using a user-managed service account for bucket permissions",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
"transferSpec": {
...
}
}
אחזור של המזהה הייחודי של חשבון השירות
כשמגדירים גישה מאוחדת לאחסון ב-AWS S3 או ב-Microsoft Azure, או כשמציינים חשבון שירות בבקשות API בארכיטקטורת REST, יכול להיות שתצטרכו את המזהה הייחודי של חשבון השירות שמנוהל על ידי המשתמש.
כדי לאחזר את uniqueId:
מסוף Google Cloud
נכנסים לדף Service accounts במסוף Google Cloud .
לוחצים על כתובת האימייל של חשבון השירות.
בכרטיסייה פרטים, מאתרים את המזהה הייחודי.
CLI של gcloud
משתמשים בפקודה הבאה של Google Cloud CLI:
gcloud iam service-accounts describe USER_MANAGED_SERVICE_ACCOUNT_EMAIL \
--format='value(uniqueId)'