本文說明如何更新 Cloud FTP 使用者的服務帳戶。服務帳戶會代表使用者存取 Cloud Storage 資源。
大致來說,更新使用者服務帳戶的步驟如下:
- 設定服務帳戶並授予適當的 IAM 角色。
- 更新附加至使用者的服務帳戶。
建議您為每位使用者使用專屬服務帳戶,以便分別管理每位使用者的 SFTP 存取權。
必要的角色
如要取得更新 SFTP 使用者所需的權限,請要求管理員授予您專案的「FTP 管理員」 (roles/ftp.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備 ftp.users.update 權限,可更新 SFTP 使用者。
設定服務帳戶
如果使用者還沒有服務帳戶,請建立服務帳戶。
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]的訊息。將服務帳戶使用者 (
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將存取儲存空間所需的 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角色。
針對使用者需要存取的每個 bucket 重複執行這個步驟。
- 如要取得唯讀存取權,請使用
授權 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替換為服務代理的電子郵件地址。
接著,更新使用者的服務帳戶。
更新使用者的服務帳戶
gcloud
如要更新附加至 SFTP 使用者的服務帳戶,請執行 gcloud alpha storage ftp users update 指令。
使用下列任何指令資料前,請先替換以下項目:
- USERNAME:SFTP 使用者的使用者名稱。
- LOCATION_ID:伺服器的位置,例如
us-west1。 - SERVER_ID:伺服器 ID。
- SERVICE_ACCOUNT:使用者的服務帳戶。例如:
username-sa@example-project.iam.gserviceaccount.com。
執行下列指令:
Linux、macOS 或 Cloud Shell
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID \ --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
Windows (PowerShell)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ` --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
Windows (cmd.exe)
gcloud alpha storage ftp users update USERNAME --location=LOCATION_ID ^ --server=SERVER_ID --customer-service-account=SERVICE_ACCOUNT
REST
如要更新附加至 SFTP 使用者的服務帳戶,請使用 servers.users.patch 方法。在 updateMask 查詢參數中,提供 customerServiceAccount 欄位。
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID:伺服器的 Google Cloud 專案 ID。
- LOCATION_ID:伺服器的位置,例如
us-west1。 - SERVER_ID:伺服器 ID。
- USERNAME:SFTP 使用者的使用者名稱。
- SERVICE_ACCOUNT:使用者的服務帳戶。例如:
username-sa@example-project.iam.gserviceaccount.com。
HTTP 方法和網址:
PATCH https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers/SERVER_ID/users/USERNAME?updateMask=customerServiceAccount
JSON 要求主體:
{
"customerServiceAccount": "SERVICE_ACCOUNT"
}
請展開以下其中一個選項,以傳送要求:
回應會指出長時間執行的作業。 系統會在幾秒內更新使用者。用戶端程式庫
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 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。