במאמר הזה מוסבר איך להוסיף משתמשים לשרת Cloud FTP. משתמשים כמו שותפים חיצוניים ובעלי עניין פנימיים יכולים להשתמש בשרת כדי להעביר קבצים אל Cloud Storage וממנו בצורה מאובטחת.
ככלל, השלבים להוספת משתמש לשרת SFTP הם:
- מגדירים את ההרשאות של המשתמש.
- יצירת משתמש SFTP ומיפוי הספריות שלו לקטגוריות של Cloud Storage.
הוראות ליצירת שרת מפורטות במאמרים יצירת שרת SFTP חיצוני ויצירת שרת SFTP פנימי.
לתשומת ליבכם
אפשר להעניק למשתמש גישה לעד 10 קטגוריות.
לכל משתמש יכולים להיות עד 10 מפתחות ציבוריים.
לפני שמתחילים
יוצרים קטגוריה אחת או יותר של Cloud Storage לאחסון הנתונים שהמשתמש יעבוד איתם, אם הקטגוריות עדיין לא קיימות.
מקבלים את המפתח הציבורי של המשתמש מכל זוג מפתחות SSH שבו הוא ישתמש כדי להתחבר לשרת.
אם למשתמש אין זוג מפתחות SSH, צריך ליצור זוג כזה באמצעות השלבים הבאים.
יצירת זוג מפתחות SSH
כדי ליצור זוג מפתחות SSH, משתמשים בכלי
ssh-keygen. במכונת הלקוח שמתחברת לשרת ה-SFTP, מריצים את הפקודה הבאה:ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME
מחליפים את
KEY_PAIR_NAMEבשם של זוג המפתחות, למשלsftp_user_key.המפתח הציבורי נשמר בקובץ
~/.ssh/KEY_PAIR_NAME.pub.
התפקידים הנדרשים
כדי לקבל את ההרשאה שנדרשת להוספת משתמשי SFTP, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM FTP Admin (roles/ftp.admin) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאה ftp.users.create, שנדרשת כדי להוסיף משתמשי SFTP.
יכול להיות שתוכלו לקבל את ההרשאה הזו גם בתפקידים בהתאמה אישית או בתפקידים אחרים שמוגדרים מראש.
הגדרת הרשאות למשתמש
-
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מגדירים את הפרויקט:
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבמזהה הפרויקט שמכיל את שרת ה-SFTP.אם עדיין אין חשבון שירות, יוצרים חשבון שירות בשביל המשתמש. חשבון השירות ניגש למשאבי Cloud Storage בשם המשתמש.
gcloud iam service-accounts create USERNAME-sa \ --description="USERNAME SFTP Service Account" \ --display-name="USERNAME SFTP Service Account"
מחליפים את
USERNAMEבשם משתמש ייחודי עבור משתמש ה-SFTP. שם המשתמש חייב להתחיל באות קטנה באנגלית, ויכול לכלול אותיות קטנות, מספרים או מקפים.אם הפעולה מצליחה, מוצגת הודעה כמו
Created service account [example-userid-sa]מקצים תפקידים ב-IAM לאדמין שיוצר את משתמש ה-SFTP:
מקצים לעצמכם את התפקיד 'משתמש בחשבון שירות' (
roles/iam.serviceAccountUser):gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/iam.serviceAccountUser"
מחליפים את
ADMINISTRATOR_EMAILבכתובת האימייל של הגורם הראשי שיוצר את משתמש ה-SFTP. אם אתם יוצרים משתמש (ולא אפליקציה), הערך הזה הוא כתובת האימייל שבה אתם משתמשים כדי לגשת אל Google Cloud.אם הפעולה מצליחה, מוצגת הודעה כמו זו:
Updated IAM policy for serviceAccount [example-userid-sa@example-project.iam.gserviceaccount.com]. bindings: - members: - user:admin@example.com role: roles/iam.serviceAccountUser etag: BwZJk7OiSzw= version: 1מקצים לעצמכם את התפקיד Storage Bucket Viewer (
roles/storage.bucketViewer) בקטגוריה:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/storage.bucketViewer"
מחליפים את
BUCKET_NAMEבשם הקטגוריה.חוזרים על השלב הזה לכל מאגר שהמשתמש צריך לגשת אליו.
מקצים לעצמכם את התפקיד 'צפייה באובייקט אחסון' (
roles/storage.objectViewer) בקטגוריה:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/storage.objectViewer"
חוזרים על השלב הזה לכל מאגר שהמשתמש צריך לגשת אליו.
מקצים לחשבון השירות של המשתמש את תפקיד ה-IAM שנדרש לגישה למאגר:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="serviceAccount:USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE"
מחליפים את
ROLEבאחד מתפקידי ה-IAM הבאים:- כדי להגדיר הרשאת גישה לקריאה בלבד, משתמשים בתפקיד
roles/storage.objectViewer. - כדי לתת הרשאת קריאה וכתיבה, משתמשים בתפקיד
roles/storage.objectAdmin.
חוזרים על השלב הזה לכל מאגר שהמשתמש צריך לגשת אליו.
- כדי להגדיר הרשאת גישה לקריאה בלבד, משתמשים בתפקיד
נותנים לסוכן השירות של Cloud FTP הרשאה ליצור אסימונים לחשבון השירות של המשתמש:
מוצאים את כתובת האימייל של סוכן השירות של השרת. הוראות מפורטות מופיעות במאמר קבלת פרטים על שרת.
נותנים הרשאה לסוכן השירות של Cloud FTP:
gcloud iam service-accounts add-iam-policy-binding USERNAME-sa@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:SERVICE_AGENT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
מחליפים את
SERVICE_AGENT_EMAILבכתובת האימייל של סוכן השירות.
לאחר מכן, יוצרים משתמש.
יצירת משתמש בשרת SFTP
אחרי שמגדירים הרשאות למשתמש, יוצרים את המשתמש וממפים את הספריות שלו לקטגוריה אחת או יותר של Cloud Storage.
gcloud
כדי ליצור משתמש לשרת SFTP, מריצים את הפקודה
gcloud alpha storage ftp users create.לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:
- CREDENTIAL_NAME: שם ייחודי לזיהוי פרטי הכניסה של המשתמש.
- SSH_PUBLIC_KEY: גוף המפתח הציבורי של ה-SSH של המשתמש, בפורמט OpenSSH. לדוגמה,
ssh-rsa AAAAB3NzaC1ycRexample.... - USERNAME: שם המשתמש של משתמש ה-SFTP.
- SERVICE_ACCOUNT: חשבון השירות של המשתמש. לדוגמה:
username-sa@example-project.iam.gserviceaccount.com. - 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כמה פעמים, עם מיפוי ספריות לכל דלי. - כדי להגדיר כמה מפתחות ציבוריים למשתמש, צריך לספק כמה פרטי כניסה בקובץ
credentials.json.
שומרים את התוכן הבא בקובץ בשם
credentials.json:[ { "credentialName": "CREDENTIAL_NAME", "credentialType": "PUBLIC_KEY", "sshPublicKeyBody": "SSH_PUBLIC_KEY" } ]
מריצים את הפקודה הבאה:
Linux, macOS או Cloud Shell
gcloud alpha storage ftp users create USERNAME \ --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID \ --server=SERVER_ID \ --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION \ --user-credentials-from-file=credentials.json
Windows (PowerShell)
gcloud alpha storage ftp users create USERNAME ` --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID ` --server=SERVER_ID ` --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION ` --user-credentials-from-file=credentials.json
Windows (cmd.exe)
gcloud alpha storage ftp users create USERNAME ^ --customer-service-account=SERVICE_ACCOUNT --location=LOCATION_ID ^ --server=SERVER_ID ^ --storage-directory-mapping=bucket=BUCKET_NAME,bucket_prefix=BUCKET_PREFIX,directory=DIRECTORY,permission=SFTP_PERMISSION ^ --user-credentials-from-file=credentials.json
מספקים למשתמש את הפרטים הבאים, שנדרשים כדי להתחבר לשרת:
שם המשתמש של המשתמש ב-SFTP.
הגדרת הגישה של השרת, שמשתנה בהתאם לסוג השרת:
בשרת חיצוני, כתובת ה-IP של השרת.
בשרת פנימי, ה-URI של קובץ השירות המצורף של השרת.
הוראות להשגת הגדרת הגישה של השרת מופיעות במאמר קבלת פרטים על שרת.
(אופציונלי) טביעת האצבע של המפתח של השרת.
REST
כדי ליצור משתמש לשרת SFTP, משתמשים ב-method
servers.users.create.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- 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. - SERVICE_ACCOUNT: חשבון השירות של המשתמש. לדוגמה:
username-sa@example-project.iam.gserviceaccount.com. - CREDENTIAL_NAME: שם ייחודי לזיהוי פרטי הכניסה של המשתמש.
- SSH_PUBLIC_KEY: גוף המפתח הציבורי של ה-SSH של המשתמש, בפורמט OpenSSH. לדוגמה,
ssh-rsa AAAAB3NzaC1ycRexample....
שימו לב לנקודות הבאות:
- כדי לתת למשתמש גישה לכמה קטגוריות, צריך לספק כמה מיפויי קטגוריות ברשימה
storageDirectoryMappings. - כדי להגדיר כמה מפתחות ציבוריים למשתמש, צריך לספק כמה פרטי כניסה ברשימה
userCredentials.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users?userId=USERNAME
תוכן בקשת JSON:
{ "storageDirectoryMappings": [ { "bucket": "BUCKET_NAME", "bucketPrefix": "BUCKET_PREFIX", "directory": "DIRECTORY", "permission": "SFTP_PERMISSION" } ], "customerServiceAccount": "SERVICE_ACCOUNT", "userCredentials": [ { "credentialName": "CREDENTIAL_NAME", "credentialType": "PUBLIC_KEY", "sshPublicKeyBody": "SSH_PUBLIC_KEY" } ] }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
התגובה מזהה פעולה ממושכת. יצירת המשתמש נמשכת כמה שניות.
מספקים למשתמש את הפרטים הבאים, שנדרשים כדי להתחבר לשרת:
שם המשתמש של המשתמש ב-SFTP.
הגדרת הגישה של השרת, שמשתנה בהתאם לסוג השרת:
בשרת חיצוני, כתובת ה-IP של השרת.
בשרת פנימי, ה-URI של קובץ השירות המצורף של השרת.
הוראות לאחזור הגדרות הגישה של השרת מופיעות במאמר אחזור פרטים על שרת.
(אופציונלי) טביעת האצבע של המפתח של השרת.
המאמרים הבאים
- התחברות לשרת SFTP חיצוני.
- התחברות לשרת SFTP פנימי
- העברת נתונים באמצעות פקודות SFTP
- מידע על אפשרויות להגנה על נתונים, לגיבוי ולשחזור של מאגרי מידע ב-Cloud Storage