הגדרת גישה ל-sink: Cloud Storage

ב-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:

  1. עוברים אל דף העזר של googleServiceAccounts.get. נפתחת חלונית אינטראקטיבית בשם Try this method.
  2. בחלונית, בקטע Request parameters, מזינים את מזהה הפרויקט.
  3. לוחצים על Execute.

מעתיקים את הערך של accountEmail. הפורמט הוא: project-PROJECT_NUMBER@storage-transfer-service..

מתן ההרשאות הנדרשות

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

העברה ללא סוכן

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

  • קריאה בקטגוריה באחסון מדור קודם (roles/storage.legacyBucketReader)
  • משתמש באובייקטים באחסון (roles/storage.objectUser), או אדמין של אובייקטים באחסון (roles/storage.objectAdmin) אם שומרים את רשימות ה-ACL של האובייקטים (ACL_PRESERVE).

מוסיפים את סוכן השירות למדיניות ה-IAM של קטגוריית היעד:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. לוחצים על התפריט Bucket overflow () של קטגוריית היעד.
  3. בוחרים באפשרות Edit access.
  4. לוחצים על ‎+ Add principal.
  5. בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
  6. בתפריט הנפתח Select a role, בוחרים באפשרות Storage Legacy Bucket Reader.
  7. לוחצים על Add another role ובוחרים את התפקיד Storage Object User, או את התפקיד Storage Object Admin אם רוצים לשמור את רשימות ה-ACL של האובייקטים.
  8. לוחצים על 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

  1. יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של gcloud, הריצו את הפקודה:

    gcloud auth print-access-token
  2. מאחזרים את מדיניות ה-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).
  3. שולחים בקשה ל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)

מקצים את התפקידים האלה בקטגוריית היעד.

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

  2. לוחצים על התפריט Bucket overflow () של קטגוריית היעד ובוחרים באפשרות Edit access.
  3. לוחצים על ‎+ Add principal.
  4. בשדה New principals, מזינים את כתובת האימייל של סוכן השירות.
  5. בתפריט הנפתח Select a role, בוחרים את התפקידים Storage Object Creator,‏ Storage Object Viewer ו-Storage Legacy Bucket Reader.
  6. לוחצים שוב על ‎+ Add principal.
  7. מזינים את כתובת האימייל של החשבון של סוכן ההעברות. זהו המשתמש או חשבון השירות שמשמשים להתקנת סוכני העברה. לדוגמה, my-agent-sa@PROJECT_ID. או user@example.com.
  8. בתפריט הנפתח Select a role, בוחרים באפשרות Storage Object User.
  9. לוחצים על Save.

gcloud

  1. מקצים תפקידי רישום ביומן וצפייה לסוכן השירות:

    gcloud 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:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewer
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
  2. מקצים תפקידי כתיבה וניהול לחשבון של נציג ההעברה:

    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

  1. יוצרים אסימון גישה כדי לאמת את הבקשה. אם אתם משתמשים ב-CLI של gcloud, הריצו את הפקודה:

    gcloud auth print-access-token
  2. מאחזרים את מדיניות ה-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.
  3. מעדכנים את מדיניות הקטגוריה באמצעות 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.create
storage.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.create
storage.multipartUploads.abort
storage.multipartUploads.listParts
storage.multipartUploads.list
מאפשר לסוכנים לבצע העלאות מרובות חלקים של קבצים גדולים. כלול באופן אוטומטי ב-roles/storage.objectUser.
storage.folders.create
storage.folders.get
מאפשר לסוכנים ליצור ולקרוא תיקיות כשמעבירים לקטגוריית יעד שמופעל בה מרחב שמות היררכי.

המאמרים הבאים