עדכון של דליים למשתמש SFTP

במאמר הזה מוסבר איך לעדכן את הקטגוריות של Cloud Storage עבור משתמש Cloud FTP, כולל הקטגוריות שהמשתמש יכול לגשת אליהן וההרשאות שיש למשתמש.

ככלל, אלה השלבים לעדכון הדליים של משתמש:

  1. מעדכנים את התפקידים ב-IAM עבור חשבון השירות של המשתמש.
  2. ממפים את הספריות של המשתמשים לדליים המעודכנים.

לפני שמתחילים

התפקידים הנדרשים

כדי לקבל את ההרשאה שנדרשת לעדכון משתמשי SFTP, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ FTP Admin (roles/ftp.admin) בפרויקט. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

התפקיד המוגדר מראש הזה כולל את ההרשאה ftp.users.update, שנדרשת כדי לעדכן משתמשי SFTP.

יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.

עדכון תפקידי IAM בחשבון שירות של משתמש

אם משנים את הדליים שלמשתמש יש גישה אליהם, או אם משנים את ההרשאה שיש למשתמש למיפוי קיים של ספרייה, צריך לעדכן את חשבון השירות של המשתמש בתפקידים הרלוונטיים ב-IAM. מבצעים את הפעולות הבאות:

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

  2. אם מוסיפים קטגוריות חדשות למיפוי הספריות או מגדילים את הגישה לקטגוריות קיימות, צריך לבצע את הפעולות הבאות:

    1. מקצים לעצמכם את התפקיד 'צפייה בקטגוריית אחסון' (roles/storage.bucketViewer) בקטגוריה, אם התפקיד עדיין לא הוקצה לכם:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.bucketViewer"

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫ADMINISTRATOR_EMAIL: כתובת האימייל של הגורם הראשי שיוצר את משתמש ה-SFTP. אם אתם יוצרים את המשתמש (ולא את האפליקציה), הערך הזה הוא כתובת האימייל שבה אתם משתמשים כדי לגשת אל Google Cloud.

      • ‫BUCKET_NAME: שם הקטגוריה.

    2. אם עדיין אין לכם את התפקיד 'צפייה באובייקט אחסון' (roles/storage.objectViewer) בקטגוריה, מקצים לעצמכם את התפקיד הזה:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
          --member="user:ADMINISTRATOR_EMAIL" \
          --role="roles/storage.objectViewer"
    3. מקצים לחשבון השירות של המשתמש את תפקידי ה-IAM שנדרשים לגישה למאגרי המידע:

      gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member="serviceAccount:SERVICE_ACCOUNT" \
        --role="ROLE_TO_GRANT"

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫SERVICE_ACCOUNT: כתובת האימייל של חשבון השירות של המשתמש.
      • ‫ROLE_TO_GRANT: תפקיד ה-IAM שרוצים להקצות. מציינים אחד מהתפקידים הבאים:

        • כדי להגדיר הרשאת גישה לקריאה בלבד, משתמשים בתפקיד roles/storage.objectViewer.
        • כדי להגדיר הרשאות קריאה וכתיבה, משתמשים בתפקיד roles/storage.objectAdmin.
    4. חוזרים על השלבים הקודמים לכל מאגר שהמשתמש צריך לגשת אליו.

  3. אם מסירים דליים ממיפוי הספרייה או מצמצמים את הגישה לדליים קיימים, צריך לבטל את הגישה מחשבון השירות של המשתמש:

    gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME \
      --member="serviceAccount:SERVICE_ACCOUNT" \
      --role="ROLE_TO_REVOKE"

    מחליפים את ROLE_TO_REVOKE בתפקיד IAM שרוצים לבטל.

    חוזרים על השלב הזה לכל דלי ולכל תפקיד IAM שלמשתמש כבר לא צריכה להיות גישה אליהם.

עדכון של דליים של משתמש

gcloud

כדי לעדכן את הדליים של משתמש SFTP, מריצים את הפקודה gcloud alpha storage ftp users update.

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • ‫USERNAME: שם המשתמש של משתמש ה-SFTP.
  • ‫LOCATION_ID: המיקום של השרת, למשל us-west1.
  • ‫SERVER_ID: מזהה השרת.
  • ‫BUCKET_NAME: השם של מאגר (bucket) שלמשתמש ה-SFTP יש גישה אליו, למשל example-bucket. השמטה של gs://.
  • (אופציונלי) BUCKET_PREFIX: הנתיב של תיקייה בתוך קטגוריית ה-bucket שרוצים להגדיר כתיקיית השורש למיפוי הספרייה הזו. אם לא מציינים את המאפיין bucket_prefix, מערכת Cloud FTP משתמשת בשורש של הקטגוריה.
  • ‫DIRECTORY: הנתיב של ספריית הנחיתה הלוגית שמוצגת למשתמש ב-SFTP. לדוגמה, /home/uploads.

    אם ממפים כמה דליים או תיקיות, צריך לספק נתיב ייחודי לספרייה לכל מיפוי.

    אין תמיכה בספריות לוגיות מקוננות. אם מספקים כמה מיפויים לספרייה, צריך לספק את הספריות במבנה שטוח ולא במבנה מקונן. לדוגמה, צריך להשתמש ב-/dir1 וב-/dir2 במקום ב-/dir1 וב-/dir1/dir2.

  • ‫SFTP_PERMISSION: רמת הגישה לספרייה. כדי להגדיר הרשאת קריאה בלבד, צריך להגדיר את הערך READ_ONLY. כדי להגדיר הרשאת קריאה וכתיבה, צריך להגדיר את הערך READ_WRITE.

כדי להעניק למשתמש גישה לכמה מאגרי מידע, צריך לציין את הדגל --storage-directory-mapping כמה פעמים, עם מיפוי ספריות לכל מאגר מידע.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID \
    --server=SERVER_ID \
    --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION

‏Windows (PowerShell)

gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID `
    --server=SERVER_ID `
    --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION

Windows‏ (cmd.exe)

gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ^
    --server=SERVER_ID ^
    --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION
העדכון של המשתמש יימשך כמה שניות.

אם למשתמש יש חיבור SFTP פעיל, יכול להיות שהוא יצטרך להתנתק ואז להתחבר מחדש כדי שההגדרות המעודכנות של הדלי ייכנסו לתוקף.

REST

כדי לעדכן את הדליים של משתמש SFTP, משתמשים בשיטה servers.users.patch. בפרמטר השאילתה updateMask, מציינים את השדה storageDirectoryMappings.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט של השרת ב- Google Cloud .
  • ‫LOCATION_ID: המיקום של השרת, למשל us-west1.
  • ‫SERVER_ID: מזהה השרת.
  • ‫USERNAME: שם המשתמש של משתמש ה-SFTP.
  • ‫BUCKET_NAME: השם של מאגר (bucket) שלמשתמש ה-SFTP יש גישה אליו, למשל example-bucket. השמטה של gs://.
  • (אופציונלי) BUCKET_PREFIX: הנתיב של תיקייה בתוך קטגוריית ה-bucket שרוצים להגדיר כתיקיית השורש למיפוי הספרייה הזו. אם לא מציינים את הערך הזה, Cloud FTP משתמש בשורש של הדלי.
  • ‫DIRECTORY: הנתיב של ספריית הנחיתה הלוגית שמוצגת למשתמש ב-SFTP. לדוגמה, /home/uploads. אם לא מציינים את הערך הזה, Cloud FTP מגדיר את ספריית הנחיתה ל-/.

    אם ממפים כמה דליים או תיקיות, צריך לספק נתיב ייחודי לספרייה לכל מיפוי.

    אין תמיכה בספריות לוגיות מקוננות. אם מספקים כמה מיפויים לספרייה, צריך לספק את הספריות במבנה שטוח ולא במבנה מקונן. לדוגמה, צריך להשתמש ב-/dir1 וב-/dir2 במקום ב-/dir1 וב-/dir1/dir2.

  • ‫SFTP_PERMISSION: רמת הגישה לספרייה. כדי להגדיר הרשאת קריאה בלבד, צריך להגדיר את הערך READ_ONLY. כדי להגדיר הרשאת קריאה וכתיבה, צריך להגדיר את הערך READ_WRITE.

כדי להעניק למשתמש גישה לכמה קטגוריות, צריך לספק כמה מיפויי קטגוריות ברשימה storageDirectoryMappings.

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=storageDirectoryMappings

תוכן בקשת JSON:

{
  "storageDirectoryMappings": [
    {
      "bucket": "BUCKET_NAME",
      "bucketPrefix": "BUCKET_PREFIX",
      "directory": "DIRECTORY",
      "permission": "SFTP_PERMISSION"
    }
  ]
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

התגובה מזהה פעולה ממושכת. העדכון של המשתמש יימשך כמה שניות.

אם למשתמש יש חיבור SFTP פעיל, יכול להיות שהוא יצטרך להתנתק ואז להתחבר מחדש כדי שההגדרות המעודכנות של הדלי ייכנסו לתוקף.