使用授权网络进行授权

本页面介绍了如何使用已获授权的网络设置连接到使用 IP 地址的 Cloud SQL 实例。

配置已获授权的网络

在以下情况下,您的客户端应用的 IP 地址或地址范围必须配置为 authorized networks

  • 您的客户端应用通过其公共 IP 地址直接连接到 Cloud SQL 实例。
  • 您的客户端应用通过其专用 IP 地址直接连接到 Cloud SQL 实例,并且您的客户端的 IP 地址是一个非 RFC 1918 地址

此 IP 地址可以是单一端点,也可以包含 CIDR 表示法的范围。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 从 SQL 导航菜单中选择连接
  4. 点击网络标签。
  5. 选择公共 IP 复选框。
  6. 已获授权的网络部分中,展开新 IP 范围
  7. 名称字段中,为新 IP 地址范围输入名称。
  8. IP 范围字段中,输入要允许连接的公共 IPv4 地址或地址范围。
    或者,点击使用我的 IP,让 Cloud SQL 填充您用于访问 Google Cloud的客户端机器的 IPv4 地址。
    对于使用 IPv6 地址的客户端,使用我的 IP 选项不可用。

    对于地址范围,您必须使用有效的 CIDR 表示法(例如 10.10.10.0/24)。

  9. 点击完成
  10. 点击保存

gcloud

配置授权网络会替换现有的授权网络列表。

gcloud sql instances patch INSTANCE_ID \
--authorized-networks=NETWORK_RANGE_1,NETWORK_RANGE_2...
    

Terraform

如需配置授权网络,请使用 Terraform 资源

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-with-authorized-network"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    ip_configuration {
      authorized_networks {
        name            = "Network Name"
        value           = "192.0.2.0/24"
        expiration_time = "3021-11-15T16:19:00.094Z"
      }
    }
  }
}

应用更改

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

删除更改

如需删除更改,请执行以下操作:

  1. 如需停用删除防护,请在 Terraform 配置文件中将 deletion_protection 参数设置为 false
    deletion_protection =  "false"
  2. 运行以下命令并在提示符处输入 yes,以应用更新后的 Terraform 配置:
    terraform apply
  1. 运行以下命令并在提示符处输入 yes,以移除之前使用 Terraform 配置应用的资源:

    terraform destroy

REST v1

配置授权网络会替换现有的授权网络列表。

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

  • project-id:项目 ID
  • instance-id:实例 ID
  • network_range_1:已获授权的 IP 地址或范围
  • network_range_2:另一个已获授权的 IP 地址或范围

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

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

您应该收到类似以下内容的 JSON 响应:

REST v1beta4

配置授权网络会替换现有的授权网络列表。

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

  • project-id:项目 ID
  • instance-id:实例 ID
  • network_range_1:已获授权的 IP 地址或范围
  • network_range_2:另一个已获授权的 IP 地址或范围

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "ipConfiguration":
    {
      "authorizedNetworks":
        [{"value": "network_range_1"}, {"value": "network_range_2"}]
    }
  }
}

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

您应该收到类似以下内容的 JSON 响应:

限制

  • 某些 IP 地址范围不能添加为已获授权的网络。
    地址范围 备注
    10.0.0.0/8 RFC 1918 地址范围。这些地址由 Cloud SQL 自动并隐式包含在已获授权的网络中
    172.16.0.0/12 RFC 1918 地址范围。这些地址由 Cloud SQL 自动并隐式包含在已获授权的网络中
    192.168.0.0/16 RFC 1918 地址范围。这些地址由 Cloud SQL 自动并隐式包含在已获授权的网络中
  • Cloud SQL 不支持 IPv6 授权网络。如果您的客户端机器使用 IPv6 协议,则 Google Cloud 控制台的网络标签页中不会显示可选的使用我的 IP 按钮。
  • 如果您使用的是 VPN 或代理服务器,则使用我的 IP 选项不会显示客户端机器的实际 IP 地址。这是设计所致。

后续步骤