本文档介绍了如何使用 Cloud FTP 创建内部 SFTP 服务器。只能使用 Private Service Connect 在虚拟私有云 (VPC) 网络中访问内部 SFTP 服务器。网络中的员工和内部利益相关方可以使用该服务器安全地将文件传输到 Cloud Storage 以及从 Cloud Storage 传输文件。
您需要指定允许连接到服务器的项目。您可以选择指定拒绝连接的项目。
如需了解 VPC 的背景信息,请参阅 VPC 概览。
如需了解如何创建可通过互联网访问的外部服务器,请参阅创建外部 SFTP 服务器。 服务器创建后,您便无法更改其是外部服务器还是内部服务器。
准备工作
控制台
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud FTP API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
收集有关服务器用户的以下信息:
- 允许访问服务器的项目 ID 或项目编号的列表。
- (可选)被拒绝访问服务器的项目 ID 或项目编号的列表。
gcloud
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅 使用联合身份登录 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 项目名称。
-
如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。
启用 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 权限。
创建内部服务器
控制台
- 在 Google Cloud 控制台中,前往 Cloud FTP 页面。
点击创建服务器。
在服务器配置标签页中,输入服务器的基本详细信息:
在服务器 ID 字段中,输入服务器的唯一 ID。
在区域列表中,选择服务器的 Google Cloud 位置。
为获得最快的数据传输速度,请在存储数据的 Cloud Storage 存储桶所在的位置创建服务器。如果 Cloud FTP 不支持存储桶的位置,请选择最近的可用位置。
(可选)输入服务器的显示名称。
点击继续。
在网络和安全标签页上,为服务器配置连接性:
选择内部(仅限 VPC)。
在接受的项目部分中,指定允许使用 Private Service Connect 连接到服务器的使用方项目。执行以下操作:
在项目字段中,输入允许连接的项目的项目 ID 或编号。例如
example-allowed-project。在连接限制字段中,输入可在使用方项目中创建的 Private Service Connect 端点数上限。该值必须介于 1 到 250 个端点之间。
如需添加更多项目,请点击添加接受的项目,然后重复上述步骤。
(可选)如需禁止项目连接到服务器,请在拒绝的项目部分中,点击添加拒绝的项目。输入禁止连接到服务器的使用方项目的项目 ID 或编号。
此列表中的项目即使包含在允许的项目列表中,也会被拒绝访问服务器。
点击创建。
服务器大约需要 10 分钟才能创建完成。
gcloud
如需创建内部服务器,请运行 gcloud alpha storage ftp servers create 命令并提供 --access-type=INTERNAL 标志。
在使用下面的命令数据之前,请先进行以下替换:
- SERVER_ID:服务器的唯一 ID。必须以小写字母开头,并以小写字母或数字结尾。可以包含小写字母、数字和连字符。
不能以
goog前缀开头,也不能包含字符串google,包括近似错拼变体(如g00gle)。长度上限为 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。必须以小写字母开头,并以小写字母或数字结尾。可以包含小写字母、数字和连字符。
不能以
goog前缀开头,也不能包含字符串google,包括近似错拼变体(如g00gle)。长度上限为 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 分钟才能创建完成。
客户端库
如需创建内部服务器,请将访问权限类型设置为内部,并提供内部访问权限配置。
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。