本文說明如何更新 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 服務代理為使用者的服務帳戶產生權杖:
取得 SFTP 伺服器服務代理人的電子郵件地址。 如需相關步驟,請參閱「取得伺服器詳細資料」。
授權 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"
}
請展開以下其中一個選項,以傳送要求:
回應會識別長時間執行的作業。 系統需要幾秒鐘的時間才能更新使用者。 <