本文档介绍了如何更新 Cloud FTP 用户的服务帐号。服务帐号代表用户访问 Cloud Storage 资源。
从总体上讲,更新用户的服务帐号的步骤如下:
- 使用适当的 IAM 角色配置服务帐号。
- 更新附加到用户的服务帐号。
我们建议您为每个用户使用专用服务帐号,以便您可以为每个用户单独管理 SFTP 访问权限。
所需的角色
如需获得更新 SFTP 用户所需的权限,请让您的管理员为您授予项目的FTP Admin (roles/ftp.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含更新 SFTP 用户所需的
ftp.users.update
权限。
配置服务帐号
如果服务账号尚不存在,请为用户创建一个服务帐号。
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]的消息。向您自己授予 Service Account User (
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角色。
对于用户需要访问的每个存储桶,重复此步骤。
- 对于只读访问权限,请使用
授权 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"
}
如需发送您的请求,请展开以下选项之一:
响应会识别 长时间运行的操作。 更新用户需要几秒钟的时间。客户端库
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。