במאמר הזה מוסבר איך להוסיף משתמשים לשרת Cloud FTP. משתמשים כמו שותפים חיצוניים ובעלי עניין פנימיים יכולים להשתמש בשרת כדי להעביר קבצים אל Cloud Storage וממנו בצורה מאובטחת.
ככלל, אלה השלבים להוספת משתמש לשרת SFTP:
- מגדירים את ההרשאות של המשתמש.
- יוצרים משתמש SFTP וממפים את הספריות שלו לקטגוריות של Cloud Storage.
כדי ליצור שרת, קראו את המאמרים יצירת שרת SFTP חיצוני ויצירת שרת SFTP פנימי.
לתשומת ליבכם
אפשר לתת למשתמש גישה ל-10 קטגוריות לכל היותר.
לכל משתמש יכולים להיות עד 10 מפתחות ציבוריים.
לפני שמתחילים
יוצרים קטגוריה אחת או יותר של Cloud Storage כדי לאחסן את הנתונים שהמשתמש יעבוד איתם, אם הקטגוריות עדיין לא קיימות.
מקבלים את המפתח הציבורי של המשתמש מכל זוג מפתחות SSH שהוא ישתמש בו כדי להתחבר לשרת.
אם למשתמש אין זוג מפתחות SSH, צריך לפעול לפי השלבים הבאים כדי ליצור זוג מפתחות.
יצירת זוג מפתחות SSH
איזה פורמט של מפתח דרוש לך?
פורמט המפתח שאתם צריכים תלוי בלקוח שבו אתם משתמשים כדי להתחבר לשרת ה-SFTP. מידע נוסף זמין במאמר לקוחות SFTP נתמכים.
פורמט PEM
-
כדי ליצור זוג מפתחות OpenSSH (בפורמט PEM), משתמשים בכלי השירות
ssh-keygen.במכונת הלקוח שתתחבר לשרת ה-SFTP, מריצים את הפקודה הבאה:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/KEY_PAIR_NAME
מחליפים את
KEY_PAIR_NAMEבשם של זוג המפתחות, למשלsftp_user_key. -
מחלצים את המפתח הציבורי:
cat ~/.ssh/KEY_PAIR_NAME.pub
פורמט PPK
-
כדי ליצור זוג מפתחות PuTTY (בפורמט PPK), משתמשים בכלי
PuTTYgen.במכונת הלקוח שתתחבר לשרת ה-SFTP, מריצים את הפקודה הבאה:
puttygen -t rsa -b 4096 -o KEY_PAIR_NAME.ppk
מחליפים את
KEY_PAIR_NAMEבשם של זוג המפתחות, למשלsftp_user_key. -
מחילוץ המפתח הציבורי:
puttygen -L KEY_PAIR_NAME.ppk
-
התפקידים הנדרשים
כדי לקבל את ההרשאה שנדרשת להוספת משתמשי SFTP, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין FTP (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. שם המשתמש צריך להתחיל באות קטנה באנגלית, ויכול לכלול אותיות קטנות, מספרים או מקפים. האורך המרבי הוא 32 תווים.אם הפעולה בוצעה בהצלחה, תוצג הודעה כמו
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_prefix, אז Cloud FTP משתמש בתיקיית השורש של הקטגוריה. -
DIRECTORY: הנתיב של ספריית הנחיתה הלוגית שמוצג למשתמש ה-SFTP. לדוגמה,
/home/uploads.אם ממפים כמה דליים או תיקיות, צריך לספק נתיב ייחודי לספרייה לכל מיפוי.
אין תמיכה בספריות לוגיות מקוננות. אם אתם מספקים כמה מיפויים לספרייה, צריך לספק את הספריות במבנה שטוח ולא במבנה מקונן. לדוגמה, במקום
/dir1ו-/dir1/dir2, צריך להשתמש ב-/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: שם הקטגוריה שלמשתמש ה-SFTP יש גישה אליה, למשל
example-bucket. לא כוללים אתgs://. - (אופציונלי) BUCKET_PREFIX: הנתיב של תיקייה בתוך קטגוריית האחסון שרוצים להגדיר כתיקיית השורש למיפוי הזה של הספריות. אם לא מציינים את הערך הזה, Cloud FTP משתמש בתיקיית הבסיס של הקטגוריה.
-
DIRECTORY: הנתיב הלוגי של ספריית הנחיתה שמוצג למשתמש ה-SFTP. לדוגמה,
/home/uploads. אם משמיטים את הערך הזה, Cloud FTP מגדיר את ספריית הנחיתה כ-/.אם ממפים כמה קטגוריות או תיקיות, צריך לציין נתיב ספרייה ייחודי לכל מיפוי.
אין תמיכה בספריות לוגיות מקוננות. אם אתם מספקים כמה מיפויים לספרייה, צריך לספק את הספריות במבנה שטוח ולא במבנה מקונן. לדוגמה, במקום
/dir1ו-/dir1/dir2, צריך להשתמש ב-/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 של קובץ ה-attachment של השירות בשרת.
במאמר קבלת פרטים על שרת מוסבר איך לקבל את הגדרת הגישה של השרת.
(אופציונלי) טביעת האצבע של המפתח של השרת.
ספריות לקוח
C#
מידע על התקנה ושימוש בספריית הלקוח של Cloud FTP מופיע במאמר ספריות הלקוח של Cloud FTP. מידע נוסף מופיע במאמרי העזרה של Cloud FTP C# API.
כדי לבצע אימות ב-Cloud FTP, אתם צריכים להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Go
כדי ללמוד איך מתקינים את ספריית הלקוח ואיך משתמשים בה ב-Cloud FTP, ראו: ספריות לקוח של Cloud FTP. למידע נוסף, קראו את מאמרי העזרה של Cloud FTP Go API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Java
כדי ללמוד איך מתקינים את ספריית הלקוח ואיך משתמשים בה ב-Cloud FTP, ראו: ספריות לקוח של Cloud FTP. למידע נוסף, קראו את מאמרי העזרה של Cloud FTP Java API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Node.js
כדי ללמוד איך מתקינים את ספריית הלקוח ואיך משתמשים בה ב-Cloud FTP, ראו: ספריות לקוח של Cloud FTP. למידע נוסף, קראו את מאמרי העזרה של Cloud FTP Node.js API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
PHP
מידע על התקנה ושימוש בספריית הלקוח של Cloud FTP מופיע במאמר ספריות הלקוח של Cloud FTP. מידע נוסף מופיע במאמרי העזרה של Cloud FTP PHP API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
Python
מידע על התקנה ושימוש בספריית הלקוח של Cloud FTP מופיע במאמר ספריות הלקוח של Cloud FTP. מידע נוסף מופיע במאמרי העזרה של Cloud FTP Python API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. למידע נוסף, ראו הגדרת אימות לסביבת פיתוח מקומית.
Ruby
כדי ללמוד איך מתקינים את ספריית הלקוח ואיך משתמשים בה ב-Cloud FTP, ראו: ספריות לקוח של Cloud FTP. מידע נוסף מופיע במאמרי העזרה של Cloud FTP Ruby API.
כדי לבצע אימות ב-Cloud FTP, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לסביבת פיתוח מקומית.
המאמרים הבאים
- התחברות לשרת SFTP חיצוני.
- התחברות לשרת SFTP פנימי.
- העברת נתונים באמצעות פקודות SFTP
- מידע על אפשרויות להגנה על נתונים, לגיבוי ולשחזור בקטגוריות של Cloud Storage.