本文說明如何更新 Cloud FTP 使用者的 Cloud Storage 值區,包括使用者可存取哪些值區,以及使用者擁有哪些權限。
更新使用者 bucket 的大致步驟如下:
- 更新使用者服務帳戶的 IAM 角色。
- 將使用者的目錄對應至更新後的 bucket。
事前準備
建立一或多個 Cloud Storage bucket,用於儲存使用者要處理的資料 (如果 bucket 尚不存在)。您最多可以授權使用者存取 10 個 bucket。
必要的角色
如要取得更新 SFTP 使用者所需的權限,請要求管理員在專案中授予您「FTP 管理員」(roles/ftp.admin) IAM 角色。 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 ftp.users.update 權限,可更新 SFTP 使用者。
更新使用者服務帳戶的 IAM 角色
如果您變更使用者可存取的 bucket,或是變更使用者現有目錄對應的權限,則必須使用相關 IAM 角色更新使用者的服務帳戶。請按照下列步驟操作:
取得使用者服務帳戶的電子郵件地址。如需相關步驟,請參閱「取得使用者詳細資料」。
如要在目錄對應中新增值區,或增加現有值區的存取權,請按照下列步驟操作:
如果沒有 bucket 的「Storage Bucket 檢視者」(
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:值區名稱。
如果沒有 bucket 的「Storage 物件檢視者」角色 (
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:SERVICE_ACCOUNT" \ --role="ROLE_TO_GRANT"
更改下列內容:
SERVICE_ACCOUNT:使用者服務帳戶的電子郵件地址。ROLE_TO_GRANT:要授予的 IAM 角色。指定下列其中一個角色:- 如要取得唯讀存取權,請使用
roles/storage.objectViewer角色。 - 如要授予讀寫權限,請使用
roles/storage.objectAdmin角色。
- 如要取得唯讀存取權,請使用
針對使用者需要存取的每個 bucket,重複上述步驟。
如果從目錄對應中移除值區,或減少現有值區的存取權,請從使用者的服務帳戶撤銷存取權:
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME \ --member="serviceAccount:SERVICE_ACCOUNT" \ --role="ROLE_TO_REVOKE"
將
ROLE_TO_REVOKE替換為要撤銷的 IAM 角色。針對使用者不應再具備存取權的每個值區和 IAM 角色,重複執行這個步驟。
更新使用者的值區
REST
如要更新 SFTP 使用者的 bucket,請使用 servers.users.patch 方法。在 updateMask 查詢參數中,提供 storageDirectoryMappings 欄位。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:伺服器的 Google Cloud 專案 ID。
- LOCATION_ID:伺服器的位置,例如
us-west1。 - SERVER_ID:伺服器 ID。
- USERNAME:SFTP 使用者的使用者名稱。
- BUCKET_NAME:SFTP 使用者獲准存取的 bucket 名稱,例如
example-bucket。省略gs://。 - (選用) BUCKET_PREFIX:要在 bucket 中設定為這個目錄對應根目錄的資料夾路徑。如果省略這個值,Cloud FTP 會使用 bucket 根目錄。
-
DIRECTORY:向 SFTP 使用者顯示的邏輯登陸目錄路徑。例如:
/home/uploads。如果省略這個值,Cloud FTP 會將登陸目錄設為/。如果您對應多個值區或資料夾,請為每個對應提供專屬目錄路徑。
不支援巢狀邏輯目錄。如果為目錄提供多個對應,請以扁平結構而非巢狀結構提供目錄。舉例來說,請使用
/dir1和/dir2,而不是/dir1和/dir1/dir2。 - SFTP_PERMISSION:目錄的存取層級。如要取得唯讀存取權,請將這個值設為
READ_ONLY。如要取得讀寫權限,請將這個值設為READ_WRITE。
如要授予使用者多個 bucket 的存取權,請在 storageDirectoryMappings 清單中提供多個 bucket 對應。
HTTP 方法和網址:
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 連線,可能需要先中斷連線,然後重新連線,更新後的 bucket 設定才會生效。