ב-Storage Transfer Service אפשר להשתמש בקטגוריית יעד (sink) ב-Cloud Storage בשני סוגי העברות:
העברות agentless: העברות בין שירותי ענן, כמו AWS S3, Azure Blob Storage או Cloud Storage ל-Cloud Storage. ההרשאות ניתנות לסוכן השירות של Storage Transfer Service.
העברות מבוססות-סוכנים: העברות ממערכות קבצים, מ-HDFS או מאחסון תואם-S3 ל-Cloud Storage, באמצעות סוכני העברה ו מאגרי סוכנים. צריך לתת הרשאות גם לסוכן השירות וגם לחשבון של סוכן ההעברה.
מתן הרשאות אוטומטי במסוף 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.objectUser), או אדמין של אובייקטים באחסון (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 User, או את התפקידStorage Object Adminאם רוצים לשמור את רשימות ה-ACL של האובייקטים. - לוחצים על Save.
gcloud
מריצים את הפקודות הבאות של gcloud storage:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
מחליפים את:
- BUCKET_NAME: השם של קטגוריית היעד.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- OBJECT_ROLE: מציינים את הערך
objectUserכברירת מחדל, או את הערךobjectAdminאם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE).
API בארכיטקטורת REST
יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של
gcloud, הריצו את הפקודה:gcloud auth print-access-token
מאחזרים את מדיניות ה-IAM הקיימת של הקטגוריה (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), מוסיפים את הקישורים הבאים למערךbindingsשלה ושומרים את המדיניות הממוזגת בתורsink_policy.json:{ "bindings": [ { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
מחליפים את:
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- OBJECT_ROLE: מציינים את הערך
objectUserכברירת מחדל, או את הערךobjectAdminאם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE).
שולחים בקשה ל
PUTבאמצעותcurl:curl -X PUT --data-binary @sink_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.objectCreator) - צפייה באובייקטים באחסון (
roles/storage.objectViewer) - קריאה בקטגוריה באחסון מדור קודם (
roles/storage.legacyBucketReader)
התפקיד הבא מעניק לחשבון של סוכן ההעברה את הגישה הנדרשת לקטגוריית היעד:
- משתמש באובייקטים באחסון (
roles/storage.objectUser)
מקצים את התפקידים האלה בקטגוריית היעד.
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על התפריט Bucket overflow () של קטגוריית היעד ובוחרים באפשרות Edit access.
- לוחצים על + Add principal.
- בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
- בתפריט הנפתח Select a role, בוחרים את התפקידים
Storage Object Creator,Storage Object Viewerו-Storage Legacy Bucket Reader. - לוחצים שוב על + Add principal.
- מזינים את כתובת האימייל של החשבון של סוכן ההעברות. זהו המשתמש או חשבון השירות שמשמשים להתקנת סוכני העברה. לדוגמה,
my-agent-sa@PROJECT_ID.אוuser@example.com. - בתפריט הנפתח Select a role, בוחרים באפשרות
Storage Object User. - לוחצים על Save.
gcloud
מקצים תפקידי רישום ביומן וצפייה לסוכן השירות:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud 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_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserמחליפים את:
- BUCKET_NAME: השם של קטגוריית היעד.
- SERVICE_AGENT_EMAIL: כתובת האימייל של סוכן השירות.
- serviceAccount_OR_user: מציינים את הערך
serviceAccountאם חשבון סוכן ההעברה הוא חשבון שירות, או את הערךuserאם הסוכנים הותקנו עם חשבון משתמש. - TRANSFER_AGENT_ACCOUNT: כתובת האימייל של החשבון שבו הותקנו סוכני ההעברה. לדוגמה,
my-agent-sa@PROJECT_ID.אוuser@example.com.
API בארכיטקטורת REST
יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של
gcloud, הריצו את הפקודה:gcloud auth print-access-token
מאחזרים את מדיניות ה-IAM הקיימת של הקטגוריה (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), מוסיפים את הקישורים הבאים למערךbindingsשלה ושומרים את המדיניות הממוזגת בתורagent_sink_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "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.
מעדכנים את מדיניות הקטגוריה באמצעות
curl:curl -X PUT --data-binary @agent_sink_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: השם של קטגוריית היעד.
מסמך עזר בנושא הרשאות מפורטות
כדי לראות את התפקידים וההרשאות הנדרשים, בוחרים את סוג ההעברה.
העברה ללא סוכן
בהעברות ללא סוכן, צריך לתת הרשאות לסוכן השירות של Storage Transfer Service:
| הרשאה | תיאור |
|---|---|
storage.buckets.get |
מאפשר לסוכן השירות לבדוק את המטא-נתונים והמיקום של הקטגוריה. |
storage.objects.create |
מאפשרת לסוכן השירות לכתוב אובייקטים שהועברו לקטגוריית היעד. |
storage.objects.get |
מאפשרת לראות אובייקטים ומטא-נתונים קיימים. חובה אם ההעברה מוגדרת להחלפת אובייקטים בכיור כשהם שונים או אף פעם. |
storage.objects.list |
מאפשרת להציג רשימה של אובייקטים בקטגוריית היעד. נדרשת אם בודקים אם אובייקטים כבר קיימים בכיור. |
storage.objects.delete |
מאפשרת למחוק אובייקטים בקטגוריית היעד. חובה אם האפשרויות של החלפה או מחיקת אובייקט ייחודי מופעלות. |
storage.objects.setIamPolicy |
מאפשרת להגדיר רשימות ACL של אובייקטים בקטגוריית היעד. חובה אם מופעלת שמירה של רשימות ACL של אובייקטים (ACL_PRESERVE). |
storage.folders.createstorage.folders.get |
מאפשרת ליצור ולקרוא תיקיות. נדרש כשמעבירים לקטגוריית יעד שמופעל בה מרחב שמות היררכי. |
העברה באמצעות סוכן
בהעברות מבוססות-סוכן ליעד ב-Cloud Storage, ההרשאות מחולקות בין שני חשבונות משתמשים:
סוכן שירות: נדרשות הרשאות כדי לכתוב יומני העברה ולוודא שהאובייקט קיים בקטגוריית היעד.
חשבון של נציג העברה: חשבון השירות או חשבון המשתמש שמפעיל את נציגי ההעברה שכותבים קבצים ב-Cloud Storage.
הרשאות של סוכן שירות
| הרשאה | תיאור |
|---|---|
storage.buckets.get |
מאפשר לסוכן השירות לבדוק את המטא-נתונים והמיקום של הקטגוריה. |
storage.objects.create |
מאפשרת ליצור יומני העברות בקטגוריה. |
storage.objects.get |
מאפשרת לבדוק אם אובייקטים כבר הועברו. |
העברת הרשאות בחשבון של סוכן
| הרשאה | תיאור |
|---|---|
storage.objects.create |
מאפשר לסוכנים לכתוב אובייקטים בקטגוריית היעד במהלך ההעברה. |
storage.objects.get |
מאפשרת לסוכנים לקרוא נתונים ומטא-נתונים של אובייקטים בקטגוריית היעד. |
storage.objects.list |
מאפשרת לסוכנים להציג רשימה של אובייקטים קיימים בקטגוריית היעד. |
storage.objects.delete |
חובה אם ההעברה מוגדרת להחלפה או למחיקה של אובייקטים בכיור. |
storage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listPartsstorage.multipartUploads.list |
מאפשר לסוכנים לבצע העלאות מרובות חלקים של קבצים גדולים. כלול באופן אוטומטי ב-roles/storage.objectUser. |
storage.folders.createstorage.folders.get |
מאפשר לסוכנים ליצור ולקרוא תיקיות כשמעבירים לקטגוריית יעד שמופעל בה מרחב שמות היררכי. |