创建外部 SFTP 服务器

本文档介绍了如何使用 Cloud FTP 创建外部 SFTP 服务器。外部 SFTP 服务器可通过互联网访问。您网络之外的合作伙伴可以使用该服务器安全地将文件传输到 Cloud Storage 或从 Cloud Storage 传输文件。

您可以根据用户的 IP 地址限制对外部 SFTP 服务器的访问。

如需了解创建只能在 Virtual Private Cloud (VPC) 网络内访问的内部服务器的步骤,请参阅创建内部 SFTP 服务器。 创建服务器后,您无法更改服务器是外部服务器还是内部服务器。

准备工作

gcloud

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 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 项目名称。

  6. 如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。

  7. 验证是否已为您的 Google Cloud 项目启用结算功能

  8. 启用 Cloud FTP API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable ftp.googleapis.com
  9. 安装 Google Cloud CLI。

  10. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 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 项目名称。

  13. 如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。

  14. 验证是否已为您的 Google Cloud 项目启用结算功能

  15. 启用 Cloud FTP API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable ftp.googleapis.com
  16. 如果您想根据用户的 IP 地址限制对服务器的访问权限,请收集允许访问服务器的 CIDR 地址块列表。

所需的角色

如需获得创建 SFTP 服务器所需的权限,请让您的管理员为您授予项目的 Cloud FTP Admin (roles/ftp.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建 SFTP 服务器所需的 ftp.servers.create 权限。

您也可以使用自定义角色或其他预定义角色来获取此权限。

创建外部服务器

gcloud

如需创建外部服务器,请运行 gcloud alpha storage ftp servers create 命令并提供 --access-type=EXTERNAL 标志。

在使用下面的命令数据之前,请先进行以下替换:

  • SERVER_ID:服务器的唯一 ID。必须以小写字母开头,并以小写字母或数字结尾。可以包含小写字母、数字和连字符。 长度上限为 30 个字符。
  • LOCATION_ID:服务器的Google Cloud 位置,例如 us-west1

    为获得最快的数据传输速度,请在存储数据的 Cloud Storage 存储桶所在的同一位置创建服务器。如果 Cloud FTP 不支持相应存储桶的位置,请选择最近的可用位置。

  • CIDR_BLOCK:允许访问服务器的 CIDR 块。例如192.0.2.0/24。您必须提供至少一个值,并且最多可以在逗号分隔列表中提供 500 个 CIDR 块。 如需允许来自所有 IP 地址的连接,请使用 0.0.0.0/0

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud alpha storage ftp servers create SERVER_ID --access-type=EXTERNAL \
    --location=LOCATION_ID --allowed-cidr-blocks=CIDR_BLOCK

Windows (PowerShell)

gcloud alpha storage ftp servers create SERVER_ID --access-type=EXTERNAL `
    --location=LOCATION_ID --allowed-cidr-blocks=CIDR_BLOCK

Windows (cmd.exe)

gcloud alpha storage ftp servers create SERVER_ID --access-type=EXTERNAL ^
    --location=LOCATION_ID --allowed-cidr-blocks=CIDR_BLOCK

创建服务器大约需要 10 分钟。

REST

如需创建外部服务器,请使用 servers.create 方法并提供 externalConfig 访问权限配置。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:服务器的 Google Cloud 项目 ID。
  • LOCATION_ID:服务器的Google Cloud 位置,例如 us-west1

    为获得最快的数据传输速度,请在存储数据的 Cloud Storage 存储桶所在的同一位置创建服务器。如果 Cloud FTP 不支持相应存储桶的位置,请选择最近的可用位置。

  • SERVER_ID:服务器的唯一 ID。必须以小写字母开头,并以小写字母或数字结尾。可以包含小写字母、数字和连字符。 长度上限为 30 个字符。
  • CIDR_BLOCK:允许访问服务器的 CIDR 块。例如192.0.2.0/24。您必须至少提供一个值,最多可以提供 500 个 CIDR 块。 如需允许来自所有 IP 地址的连接,请使用 0.0.0.0/0

HTTP 方法和网址:

POST https://ftp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/servers?serverId=SERVER_ID

请求 JSON 正文:

{
  "accessType": "EXTERNAL",
  "externalConfig": {
    "allowedCidrBlocks": [
      "CIDR_BLOCK"
      ]
  }
}

如需发送您的请求,请展开以下选项之一:

该响应用于标识长时间运行的操作

创建服务器大约需要 10 分钟。

后续步骤