本文档介绍如何使用 Cloud FTP 创建内部 SFTP 服务器。内部 SFTP 服务器只能使用 Private Service Connect 在您的虚拟私有云 (VPC) 网络内访问。 位于您网络内的员工和内部利益相关者可以使用该服务器安全地将文件传输到 Cloud Storage 和从 Cloud Storage 传输文件。
您可以指定允许连接到服务器的项目。您还可以选择指定拒绝连接的项目。
如需了解 VPC 的背景信息,请参阅 VPC 概览。
如需了解创建可通过互联网访问的外部服务器的步骤, 请参阅创建外部 SFTP 服务器。 服务器创建后,您无法更改服务器是外部服务器还是内部服务器。
准备工作
gcloud
- 登录您的 Google Cloud 账号。如果您是 Google Cloud的新用户, 请创建账号,以便在 真实场景中评估我们产品的性能。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
如果您要使用现有项目来完成本指南, 请验证您是否拥有完成本指南所需的权限。如果您创建了新项目, 则您已拥有所需的权限。
-
验证是否已为您的 Google Cloud 项目启用结算功能。
启用 Cloud FTP API:
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则您可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获取此权限。 了解如何授予角色。gcloud services enable ftp.googleapis.com
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
选择或创建项目所需角色
- 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
-
创建项目:如需创建项目,您需要 Project Creator 角色
(
roles/resourcemanager.projectCreator),该角色包含resourcemanager.projects.create权限。了解如何授予 角色。
-
创建 Google Cloud 项目:
gcloud projects create PROJECT_ID
将
PROJECT_ID替换为您要创建的 Google Cloud 项目的名称。 -
选择您创建的 Google Cloud 项目:
gcloud config set project PROJECT_ID
将
PROJECT_ID替换为您的 Google Cloud 项目名称。
-
如果您要使用现有项目来完成本指南, 请验证您是否拥有完成本指南所需的权限。如果您创建了新项目, 则您已拥有所需的权限。
-
验证是否已为您的 Google Cloud 项目启用结算功能。
启用 Cloud FTP API:
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您 创建了项目,则您可能已通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获取此权限。 了解如何授予角色。gcloud services enable ftp.googleapis.com
-
收集有关服务器用户的以下信息:
- 允许访问 服务器的项目 ID 或项目编号的列表。
- (可选)拒绝访问服务器的项目 ID 或项目编号的列表 。
所需角色
如需获得创建 SFTP 服务器所需的权限,请让您的管理员为您授予项目的 Cloud FTP Admin (roles/ftp.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含创建 SFTP 服务器所需的
ftp.servers.create
权限。
创建内部服务器
gcloud
如需创建内部服务器,请运行
gcloud alpha storage ftp servers create 命令
并提供 --access-type=INTERNAL 标志。
在使用以下任何命令数据之前, 请进行以下替换:
- SERVER_ID:服务器的唯一 ID。必须以小写字母开头,并 以小写字母或数字结尾。可以包含小写字母、数字和连字符。 长度上限为 30 个字符。
-
LOCATION_ID:服务器的Google Cloud 位置,例如
us-west1。为获得最快的数据传输速度,请在存储数据的 Cloud Storage 存储桶所在的同一位置创建 服务器。如果 Cloud FTP 不支持存储桶的位置,请选择最近的可用位置。
-
PROJECT_TO_ALLOW:允许使用 Private Service Connect 连接到服务器的消费者项目的项目 ID 或编号。例如,
example-allowed-project。您必须至少指定一个项目。您最多可以允许 500 个项目。 以英文逗号分隔列表的形式提供多个项目及其各自的 连接限制。例如,
--consumer-accept-list=projectA=20,projectB=15。 - CONNECTION_LIMIT:可在消费者项目中创建的 Private Service Connect 端点数上限。该值必须介于 1 到 250 个端点之间。
-
(可选)PROJECT_TO_REJECT:禁止连接到服务器的消费者项目的项目 ID 或编号。例如,
example-rejected-project。 即使此列表中的项目包含在允许的项目列表中 ,也会被拒绝访问服务器。您最多可以拒绝 64 个项目。 以英文逗号分隔列表的形式提供多个项目。
如果您不想明确拒绝任何项目,请省略--consumer-reject-list标志。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL \ --location=LOCATION_ID \ --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT \ --consumer-reject-list=PROJECT_TO_REJECT
Windows (PowerShell)
gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL ` --location=LOCATION_ID ` --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT ` --consumer-reject-list=PROJECT_TO_REJECT
Windows (cmd.exe)
gcloud alpha storage ftp servers create SERVER_ID --access-type=INTERNAL ^ --location=LOCATION_ID ^ --consumer-accept-list=PROJECT_TO_ALLOW=CONNECTION_LIMIT ^ --consumer-reject-list=PROJECT_TO_REJECT
服务器大约需要 10 分钟才能创建完成。
REST
如需创建内部服务器,请使用
servers.create方法
并提供 internalConfig 访问权限配置。
在使用任何请求数据之前, 请进行以下替换:
- PROJECT_ID:服务器的 Google Cloud 项目 ID。
-
LOCATION_ID:服务器的Google Cloud 位置,例如
us-west1。为获得最快的数据传输速度,请在存储数据的 Cloud Storage 存储桶所在的同一位置创建 服务器。如果 Cloud FTP 不支持存储桶的位置,请选择最近的可用位置。
- SERVER_ID:服务器的唯一 ID。必须以小写字母开头,并 以小写字母或数字结尾。可以包含小写字母、数字和连字符。 长度上限为 30 个字符。
-
PROJECT_TO_ALLOW:允许使用 Private Service Connect 连接到服务器的消费者项目的项目 ID 或编号。例如,
example-allowed-project。您必须至少指定一个项目。您最多可以允许 500 个项目。
- CONNECTION_LIMIT:可在消费者项目中创建的 Private Service Connect 端点数上限。该值必须介于 1 到 250 个端点之间。
-
(可选)PROJECT_TO_REJECT:禁止连接到服务器的消费者项目的项目 ID 或编号。例如,
example-rejected-project。 即使此列表中的项目包含在允许的项目列表中 ,也会被拒绝访问服务器。您最多可以拒绝 64 个项目。
如果您不想明确拒绝任何项目,请省略
consumerRejectList对象。
HTTP 方法和网址:
POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers?serverId=SERVER_ID
请求 JSON 正文:
{
"accessType": "INTERNAL",
"internalConfig": {
"consumerAcceptList": [
{
"project": "projects/PROJECT_TO_ALLOW",
"connectionLimit": CONNECTION_LIMIT
}
],
"consumerRejectList": [
{
"project": "projects/PROJECT_TO_REJECT"
}
]
}
}
如需发送您的请求,请展开以下选项之一:
该响应用于标识 长时间运行的操作。服务器大约需要 10 分钟才能创建完成。