本文說明如何更新 Cloud FTP 使用者的 Cloud Storage bucket,包括使用者可存取的 bucket 和擁有的權限。
大致步驟如下:
- 更新使用者服務帳戶的 IAM 角色。
- 將使用者的目錄對應至更新後的 bucket。
事前準備
建立一或多個 Cloud Storage bucket,用於儲存使用者要處理的資料 (如果 bucket 尚不存在)。您最多可以授予使用者 10 個 bucket 的存取權。
必要的角色
如要取得更新 SFTP 使用者所需的權限,請要求管理員授予您專案的 FTP 管理員 (roles/ftp.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 ftp.users.update 權限,可更新 SFTP 使用者。
更新使用者服務帳戶的 IAM 角色
如果您變更使用者可存取的 bucket,或變更使用者對現有目錄對應的權限,則必須使用相關 IAM 角色更新使用者的服務帳戶。請執行下列步驟:
取得使用者服務帳戶的電子郵件地址。如需相關步驟,請參閱「取得使用者的詳細資料」。
如要在目錄對應中新增值區,或增加現有值區的存取權,請按照下列步驟操作:
如果您尚未具備 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 的名稱。
如果沒有 bucket 的「Storage 物件檢視者」角色 (
roles/storage.objectViewer),請授予自己該角色:gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member="user:ADMINISTRATOR_EMAIL" \ --role="roles/storage.objectViewer"
將存取 bucket 所需的 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,重複上述步驟。
如果從目錄對應中移除 bucket,或減少現有 bucket 的存取權,請撤銷使用者服務帳戶的存取權:
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 使用者的 bucket,請執行 gcloud alpha storage ftp users update 指令。
使用下列任何指令資料之前,請先替換以下項目:
- USERNAME:SFTP 使用者的使用者名稱。
- LOCATION_ID:伺服器的位置,例如
us-west1。 - SERVER_ID:伺服器 ID。
- BUCKET_NAME:SFTP 使用者獲准存取的 bucket 名稱,例如
example-bucket。省略gs://。 - (選用) BUCKET_PREFIX:要設為這個目錄對應根目錄的 bucket 內資料夾路徑。
如果省略
bucket_prefix屬性,Cloud FTP 會使用 bucket 根目錄。 -
DIRECTORY:向 SFTP 使用者顯示的邏輯登陸目錄路徑。例如:
/home/uploads。如果您對應多個 bucket 或資料夾,請為每個對應提供不重複的目錄路徑。
系統不支援巢狀邏輯目錄。如果為目錄提供多個對應,請以扁平結構提供目錄,而非巢狀結構。例如,使用
/dir1和/dir2,而不是/dir1和/dir1/dir2。 - SFTP_PERMISSION:目錄的存取層級。如要授予唯讀存取權,請將這個值設為
READ_ONLY。如要取得讀取和寫入權限,請將這個值設為READ_WRITE。
如要授予使用者多個 bucket 的存取權,請多次提供 --storage-directory-mapping 旗標,並為每個 bucket 提供目錄對應。
執行下列指令:
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 連線,可能需要中斷連線再重新連線,更新後的 bucket 設定才會生效。
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 會將登陸目錄設為/。如果您對應多個 bucket 或資料夾,請為每個對應提供不重複的目錄路徑。
系統不支援巢狀邏輯目錄。如果為目錄提供多個對應,請以扁平結構提供目錄,而非巢狀結構。例如,使用
/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"
}
]
}
請展開以下其中一個選項,以傳送要求:
回應會指出長時間執行的作業。 系統會在幾秒內更新使用者。 <0x如果使用者有使用中的 SFTP 連線,可能需要中斷連線再重新連線,更新後的 bucket 設定才會生效。
用戶端程式庫
C#
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱「Cloud FTP C# API 參考文件」。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Go
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱 Cloud FTP Go API 參考文件。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱「Cloud FTP Java API 參考文件」。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱「Cloud FTP Node.js API 參考文件」。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
PHP
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱 Cloud FTP PHP API 參考文件。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱 Cloud FTP Python API 參考文件。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Ruby
如要瞭解如何安裝及使用 Cloud FTP 的用戶端程式庫,請參閱「Cloud FTP 用戶端程式庫」。詳情請參閱 Cloud FTP Ruby API 參考文件。
如要向 Cloud FTP 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。