אפשר להשתמש בקטגוריית מקור של Cloud Storage ב-Storage Transfer Service בשני סוגי העברות:
העברות ללא סוכנים: העברות בין שירותי ענן, כמו Cloud Storage ל-Cloud Storage, Cloud Storage ל-AWS S3 או Cloud Storage ל-Azure Blob Storage. ההרשאות ניתנות לסוכן השירות של Storage Transfer Service.
העברות מבוססות-סוכן: העברות שכוללות מערכות קבצים או אחסון מקומי, שמשתמשות בסוכני העברה ובמאגרי סוכנים. צריך לתת הרשאות גם לסוכן השירות וגם לחשבון של סוכן ההעברה.
מתן הרשאות אוטומטי במסוף Google Cloud
אם אתם משתמשים במסוף Google Cloud כדי ליצור העברה ללא סוכן ויש לכם את הרשאות המשתמש הנדרשות, סוכן השירות יקבל באופן אוטומטי את ההרשאות הנדרשות בקטגוריית המקור.
אתם יכולים לדלג על השלבים שבדף הזה. אם צריך, מגדירים את הגישה ליעד ואז יוצרים העברה.
דרישות מוקדמות
הרשאות בחשבון המשתמש: כדי להקצות את תפקידי ה-IAM הנדרשים שמפורטים בדף הזה, לחשבון המשתמש (או לחשבון השירות שמנוהל על ידי המשתמש) צריכות להיות הרשאות לשינוי מדיניות IAM בקטגוריית המקור ובפרויקט של מאגר הנציגים. למידע נוסף על הדרישות של חשבון המשתמש, קראו את המאמר הרשאות בחשבון המשתמש.
הרשאות לפרויקט של העברה מבוססת-סוכן: בהעברות מבוססות-סוכן, ודאו שהגדרתם את התפקידים הנדרשים ברמת הפרויקט לסוכן השירות ולחשבון של סוכן ההעברה. הרשאות ברמת הפרויקט שמבוססות על סוכנים
איך מוצאים את כתובת האימייל של סוכן השירות
סוכן השירות נוצר באופן אוטומטי כשיוצרים משימת העברה בפעם הראשונה, מריצים פקודות הגדרה של gcloud transfer, נכנסים לדף Storage Transfer במסוףGoogle Cloud או קוראים ל-googleServiceAccounts.get.
כדי לקבל את כתובת האימייל של סוכן השירות, שמשמשת לזיהוי שלו בפקודות של Storage Transfer Service:
- עוברים אל דף העזר של
googleServiceAccounts.get. נפתחת חלונית אינטראקטיבית בשם Try this method. - בחלונית, בקטע Request parameters, מזינים את מזהה הפרויקט.
- לוחצים על Execute.
מעתיקים את הערך של accountEmail. הפורמט הוא:
project-PROJECT_NUMBER@storage-transfer-service..
מתן ההרשאות הנדרשות
כדי לראות את השלבים למתן גישה, בחרו את סוג ההעברה.
העברה ללא סוכן
התפקידים המוגדרים מראש הבאים נותנים לסוכן השירות את ההרשאות הנדרשות בקטגוריית המקור:
- קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader) - בנוסף, צריך להציג אחד מהמסמכים הבאים:
- צפייה באובייקטים באחסון (
roles/storage.objectViewer) אם אובייקטי המקור נשמרים. - משתמש באובייקטים באחסון (
roles/storage.objectUser) אם מוחקים את אובייקטי המקור אחרי ההעברה (deleteObjectsFromSourceAfterTransfer). - אדמין של אובייקטים ב-Storage (
roles/storage.objectAdmin) אם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE). תומך גם במחיקת אובייקטים של מקור אחרי ההעברה.
- צפייה באובייקטים באחסון (
מוסיפים את סוכן השירות למדיניות ה-IAM של קטגוריית המקור:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על התפריט Bucket overflow () של קטגוריית המקור.
- בוחרים באפשרות Edit access.
- לוחצים על + Add principal.
- בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
- בתפריט הנפתח Select a role, בוחרים באפשרות
Storage Legacy Bucket Reader. - לוחצים על Add another role ובוחרים באחת מהאפשרויות הבאות:
Storage Object ViewerStorage Object UserStorage Object Admin
- לוחצים על Save.
gcloud
מריצים את הפקודות הבאות של gcloud storage:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
מחליפים את:
- BUCKET_NAME: השם של קטגוריית המקור.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- OBJECT_ROLE: בוחרים אחת מהאפשרויות הבאות, בהתאם לאפשרויות ההעברה:
objectViewer: אם שומרים את אובייקטי המקור.-
objectUser: אם מוחקים את אובייקטי המקור אחרי ההעברה. -
objectAdmin: אם שומרים את רשימות ה-ACL של האובייקטים. אפשר גם למחוק את אובייקטי המקור אחרי ההעברה.
API בארכיטקטורת REST
יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של
gcloud, הריצו את הפקודה:gcloud auth print-access-token
מאחזרים את מדיניות ה-IAM הקיימת של הקטגוריה (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), מוסיפים את הקישורים הבאים למערךbindingsשלה ושומרים את המדיניות הממוזגת בתורsource_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
מחליפים את:
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- OBJECT_ROLE: בוחרים באפשרות
objectViewerאם שומרים את אובייקטי המקור, באפשרותobjectUserאם מוחקים את אובייקטי המקור או באפשרותobjectAdminאם שומרים את רשימות ה-ACL של האובייקטים.
שולחים בקשה ל
PUTבאמצעותcurl:curl -X PUT --data-binary @source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
מחליפים את:
- OAUTH2_TOKEN: טוקן הגישה מסוג OAuth 2.0 שנוצר בשלב 1.
- BUCKET_NAME: השם של קטגוריית המקור.
העברה באמצעות סוכן
התפקידים המוגדרים מראש הבאים נותנים לסוכן השירות את הגישה הנדרשת לקטגוריית המקור:
- קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader) - יצירת אובייקטים באחסון (
roles/storage.objectCreator)
התפקיד הבא נותן לחשבון של סוכן ההעברה את הגישה הנדרשת לקטגוריית המקור:
- צפייה באובייקטים באחסון (
roles/storage.objectViewer) אם שומרים את אובייקטי המקור, או Storage Object User (roles/storage.objectUser) אם מוחקים את אובייקטי המקור אחרי ההעברה.
מקצים את התפקידים האלה בקטגוריית המקור.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על התפריט Bucket overflow () של קטגוריית המקור ובוחרים באפשרות Edit access.
- לוחצים על + Add principal.
- בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
- בתפריטים הנפתחים של Select a role, בוחרים באפשרויות
Storage Legacy Bucket Readerו-Storage Object Creator. - לוחצים שוב על + Add principal.
- מזינים את כתובת האימייל של החשבון של סוכן ההעברות. זהו המשתמש או חשבון השירות שמשמשים להתקנת סוכני העברה. לדוגמה,
my-agent-sa@PROJECT_ID.אוuser@example.com. - בוחרים באפשרות
Storage Object Viewerאם רוצים לשמור את אובייקטי המקור, או באפשרותStorage Object Userאם רוצים למחוק את אובייקטי המקור אחרי ההעברה. - לוחצים על Save.
gcloud
מקצים לסוכן השירות תפקידים לקריאת מטא-נתונים של קטגוריות ולכתיבת יומני העברות:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReadergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorמקצים תפקידי גישה לאובייקטים לחשבון של נציג ההעברה:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.OBJECT_ROLEמחליפים את:
- BUCKET_NAME: השם של קטגוריית המקור.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- serviceAccount_OR_user: מציינים את הערך
serviceAccountאם חשבון סוכן ההעברה הוא חשבון שירות, או את הערךuserאם הסוכנים הותקנו עם חשבון משתמש. - TRANSFER_AGENT_ACCOUNT: כתובת האימייל של החשבון שבו הותקנו סוכני ההעברה. לדוגמה,
my-agent-sa@PROJECT_ID.אוuser@example.com. - OBJECT_ROLE: מציינים
objectViewerאם רוצים לשמור את אובייקטי המקור, אוobjectUserאם רוצים למחוק את אובייקטי המקור אחרי ההעברה.
API בארכיטקטורת REST
יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של
gcloud, הריצו את הפקודה:gcloud auth print-access-token
מאחזרים את מדיניות ה-IAM הקיימת של הקטגוריה (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), מוסיפים את הקישורים הבאים למערךbindingsשלה ושומרים את המדיניות הממוזגת בתורagent_source_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
מחליפים את:
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- serviceAccount_OR_user: מציינים את הערך
serviceAccountאם חשבון סוכן ההעברה הוא חשבון שירות, או את הערךuserאם הסוכנים הותקנו עם חשבון משתמש. - TRANSFER_AGENT_ACCOUNT: כתובת האימייל של החשבון שבו הותקנו סוכני ההעברה. לדוגמה,
my-agent-sa@PROJECT_ID.אוuser@example.com. - OBJECT_ROLE: מציינים
objectViewerאם רוצים לשמור את אובייקטי המקור, אוobjectUserאם רוצים למחוק את אובייקטי המקור אחרי ההעברה.
מעדכנים את מדיניות הקטגוריה באמצעות
curl:curl -X PUT --data-binary @agent_source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"מחליפים את:
- OAUTH2_TOKEN: טוקן הגישה מסוג OAuth 2.0 שנוצר בשלב 1.
- BUCKET_NAME: השם של קטגוריית המקור.
העברות של Cloud Storage בין פרויקטים
כדי להעביר אובייקטים בין קטגוריות של Cloud Storage בפרויקטים שונים ב-Google Cloud, צריך לתת הרשאות לסוכן השירות של הפרויקט שיוצר את ההעברה גם בקטגוריית המקור וגם בקטגוריית היעד.
חשבון המשתמש או חשבון השירות שמנוהל על ידי המשתמש שיוצר את ההעברה צריך הרשאות רק בפרויקט שבו נוצרה משימת ההעברה.
כדי להקצות תפקידים להעברות בין פרויקטים:
- משיגים את כתובת האימייל של סוכן השירות של הפרויקט שבו תתבצע ההעברה. איך מוצאים את כתובת האימייל של סוכן השירות
- בקטגוריית המקור, מקצים לסוכן השירות את התפקידים הבאים:
- קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader) - בנוסף לאחד מתפקידי האובייקט הבאים:
- צפייה באובייקטים באחסון (
roles/storage.objectViewer) אם שומרים את אובייקטי המקור. - משתמש באובייקטים באחסון (
roles/storage.objectUser) אם מוחקים את אובייקטי המקור אחרי ההעברה (deleteObjectsFromSourceAfterTransfer). - אדמין של אובייקטים ב-Storage (
roles/storage.objectAdmin) אם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE). תומך גם במחיקת אובייקטים של מקור אחרי ההעברה.
- צפייה באובייקטים באחסון (
- קריאה בקטגוריה באחסון מדור קודם (
- בקטגוריית היעד, מקצים את התפקידים הבאים לאותו סוכן שירות:
- קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader) - משתמש באובייקטים באחסון (
roles/storage.objectUser), או אדמין של אובייקטים באחסון (roles/storage.objectAdmin) אם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE).
- קריאה בקטגוריה באחסון מדור קודם (
הוראות מפורטות להענקת גישה לקטגוריית היעד מופיעות במאמר הגדרת גישה ל-sink: Cloud Storage.
הגבלות על ארגון
אם הארגון שלכם החיל אילוצים של מדיניות הארגון, ודאו שהם מאפשרים גישה לסוכני שירות בפרויקטים שונים:
- שיתוף מוגבל לדומיין (
constraints/iam.allowedPolicyMemberDomains): המדיניות בפרויקט שמארח את הקטגוריה חייבת לאפשר דומיינים של חברים שמכילים את סוכן השירות. מידע נוסף על הגבלת דומיינים - השבתת השימוש בחשבונות שירות בפרויקטים שונים (
constraints/iam.disableCrossProjectServiceAccountUsage): צריך לוודא שהאילוץ הזה לא חוסם את הגישה של חשבונות שירות בפרויקטים שונים. הגבלת חשבונות שירות - VPC Service Controls: אם הקטגוריות שייכות לגבולות גזרה שונים לשירות, צריך להגדיר כללי תעבורת נתונים נכנסת ויוצאת כדי לאפשר תקשורת להעברה. איך מגדירים את VPC Service Controls להעברות של מאגר אובייקטים בענן
מסמך עזר בנושא הרשאות מפורטות
כדי לראות את התפקידים וההרשאות הנדרשים, בוחרים את סוג ההעברה.
העברה ללא סוכן
בהעברות ללא סוכן, צריך לתת הרשאות לסוכן השירות של Storage Transfer Service:
| הרשאה | תיאור |
|---|---|
storage.buckets.get |
מאפשרת לסוכן השירות לקבל את המיקום של הקטגוריה. |
storage.objects.list |
מאפשרת לסוכן השירות להציג רשימה של אובייקטים בקטגוריה. |
storage.objects.get |
מאפשר לסוכן השירות לקרוא אובייקטים בקטגוריה. |
storage.objects.delete |
מאפשר לסוכן השירות למחוק אובייקטים בקטגוריה. חובה אם הערך של deleteObjectsFromSourceAfterTransfer הוא true. |
storage.objects.getIamPolicy |
מאפשר לקרוא רשימות ACL באובייקטים של המקור. חובה אם מופעלת שמירה של רשימות ACL של אובייקטים (ACL_PRESERVE). |
storage.folders.liststorage.folders.get |
מאפשרת להציג רשימה של תיקיות ולקרוא אותן. נדרש כשמעבירים מקטגוריה שמופעל בה מרחב שמות היררכי. |
העברה באמצעות סוכן
בהעברות מבוססות-סוכנים ממקור ב-Cloud Storage, ההרשאות מחולקות בין שני חשבונות משתמשים:
סוכן שירות: נדרשת גישת קריאה ברמת הקטגוריה כדי לפתור את המטא-נתונים והמיקום של הקטגוריה, וגם גישה ליצירת אובייקטים כדי לכתוב יומני העברה של הסוכן.
חשבון סוכן ההעברה: חשבון השירות או חשבון המשתמש שמשמש ליצירת סוכני ההעברה.
הרשאות של סוכן שירות
| הרשאה | תיאור |
|---|---|
storage.buckets.get |
מאפשר לסוכן השירות לבדוק את המטא-נתונים והמיקום של הקטגוריה. |
storage.objects.create |
מאפשרת לסוכן השירות לכתוב יומני העברות של סוכנים לקטגוריית המקור, כשמעבירים מ-Cloud Storage למערכת קבצים. |
העברת הרשאות בחשבון של סוכן
| הרשאה | תיאור |
|---|---|
storage.objects.list |
מאפשרת לסוכנים להציג רשימה של אובייקטים בקטגוריית המקור. |
storage.objects.get |
מאפשרת לסוכנים לקרוא אובייקטים מקטגוריית המקור. |
storage.objects.delete |
הסוכנים יכולים למחוק אובייקטים במקור אם האפשרות deleteObjectsFromSourceAfterTransfer מופעלת. |
storage.folders.liststorage.folders.get |
מאפשרת לסוכנים להציג ולקרוא תיקיות כשמעבירים מקטגוריה שמופעל בה מרחב שמות היררכי. |
המאמרים הבאים
צריך להגדיר את הגישה ליעד: