为本地主机配置专用 Google 访问权限

借助面向本地的专用 Google 访问权限,您的本地主机可以通过 Cloud VPN 隧道或 Cloud Interconnect 连接访问 Google API 和服务。主机不需要外部 IP 地址。如需详细了解本地主机的专用 Google 访问权限以及其他专用访问选项,请参阅服务的专用访问选项

要查看可与本地主机的专用 Google 访问权限搭配使用的有效 API 和服务,请参阅本地主机专用 Google 访问权限概览中的支持的服务

要求

  • 您必须通过 Google Cloud Platform Console 中的“API 和服务”页面启用要访问的 API
  • 拥有网络管理员角色的项目所有者、编辑者和 IAM 成员可以创建或更新子网及分配 IP 地址。如需详细了解角色,请阅读 IAM 角色文档。
  • 专用 Google 访问权限需要 VPC 网络。自动模式和自定义模式 VPC 网络均受支持。传统网络不受支持。
  • 您的 VPC 网络必须使用以默认互联网网关作为下一个跃点的路由来路由流向 199.36.153.4/30 的流量。您可以使用默认路由或自定义静态路由来实现此目的。

为本地主机设置专用 Google 访问权限

要为本地主机设置专用 Google 访问权限,您必须完成以下任务:

  • 您必须配置路由,以便通过 Cloud VPN 或 Cloud Interconnect 连接转发 Google API 流量。如需了解详情,请参阅配置路由
  • 您必须配置针对本地防火墙的防火墙规则,以允许来自本地主机的流量到达受限的 Google API IP 范围。如需了解详情,请参阅配置防火墙规则
  • 您必须配置 DNS,以使 Google API 的流量解析为受限 Google API IP 范围。如需了解详情,请参阅配置 DNS

配置路由

Cloud Router 路由器自定义通告

您可以使用 Cloud Router 路由器自定义路由通告向您的本地网络通告受限 Google API IP 地址。受限 Google API IP 地址范围为 199.36.153.4/30。即使这是公共 IP 地址范围,Google 也不会公开通告其路由。只有可以通过内部 IP 地址(例如通过 Cloud VPN 隧道或 Cloud Interconnect 连接)连接到 VPC 网络的本地主机才能访问此 IP 地址范围。

要通告受限地址范围,请使用 Cloud Router 路由器添加自定义路由通告。您可以将此通告添加到 Cloud Router 路由器或选择 BGP 会话(例如,对于单个 Cloud VPN 隧道或 VLAN 连接)。

要为现有 Cloud Router 路由器上所有 BGP 会话的受限范围创建自定义路由通告,请执行以下操作:

Console


  1. 转到 Google Cloud Platform Console 中的“Cloud Router”页面。
    Cloud Router 列表
  2. 选择要更新的 Cloud Router。
  3. 在 Cloud Router 的详情页面中,选择修改
  4. 展开通告的路由部分。
  5. 对于路由,选择创建自定义路由
  6. 选择通告向 Cloud Router 公开的所有子网以继续通告 Cloud Router 可用的子网。启用此选项可模拟 Cloud Router 的默认行为。
  7. 选择添加自定义路由以添加通告的路由。
  8. 配置路由通告。
    • 来源 - 选择自定义 IP 范围来指定自定义 IP 范围。
    • IP 地址范围 - 指定 199.36.153.4/30
    • 说明 - 添加 Restricted Google APIs IPs 的说明。
  9. 添加好路由后,选择保存

gcloud


运行 update 命令,使用 --set-advertisement-ranges--add-advertisement-ranges 标志指定自定义 IP 范围:

  • 要设置自定义 IP 范围,请使用 --set-advertisement-ranges 标志。任何现有自定义通告都会被替换。以下示例展示了如何更新 my-router Cloud Router 路由器,以通告所有子网以及受限 Google API IP 范围 199.36.153.4/30

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • 要为现有通告附加自定义 IP 范围,请使用 --add-advertisement-ranges 标志。请注意,如果要使用此标志,必须已将 Cloud Router 的通告模式设置为 custom。以下示例展示了如何将 Restricted Google APIs IPs 自定义 IP 添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update my-router \
        --add-advertisement-ranges 199.36.153.4/30
    

要为现有 Cloud Router 路由器的特定 BGP 会话的受限范围创建自定义路由通告,请执行以下操作:

Console


  1. 转到 Google Cloud Platform Console 中的“Cloud Router”页面。
    Cloud Router 列表
  2. 选择包含要更新的 BGP 会话的 Cloud Router。
  3. 在 Cloud Router 的详情页面中,选择要更新的 BGP 会话。
  4. 在 BGP 会话详情页面中,选择修改
  5. 对于路由,选择创建自定义路由
  6. 选择通告向 Cloud Router 公开的所有子网以继续通告 Cloud Router 可用的子网。启用此选项可模拟 Cloud Router 的默认行为。
  7. 选择添加自定义路由以添加通告的路由。
  8. 配置路由通告。
    • 来源 - 选择自定义 IP 范围来指定自定义 IP 范围。
    • IP 地址范围 - 指定 199.36.153.4/30
    • 说明 - 添加 Restricted Google APIs IPs 的说明。
  9. 添加好路由后,选择保存

gcloud


运行 update-bgp-peer 命令,使用 --set-advertisement-ranges--add-advertisement-ranges 标志指定自定义 IP 范围。

  • 要设置自定义 IP 范围,请使用 --set-advertisement-ranges 标志。任何现有自定义通告都会被替换。以下示例展示了如何更新 my-router Cloud Router 路由器上的 my-bgp-session BGP 会话,以通告所有子网以及自定义 IP 范围 199.36.153.4/30

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • 要为现有通告附加自定义 IP 范围,请使用 --add-advertisement-ranges 标志。请注意,如果要使用此标志,必须已将 Cloud Router 的通告模式设置为 custom。以下示例展示了如何将 199.36.153.4/30 受限 Google API IP 添加到 Cloud Router 路由器的通告中:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges 199.36.153.4/30
    

    如需详细了解自定义通告,请参阅自定义路由器通告

VPC 网络路由要求

您的 VPC 网络必须配置为将流量路由到 199.36.153.4/30,该 IP 使用默认互联网网关作为下一个跃点。在新创建的 VPC 网络中,这是通过默认路由实现的;但是,您还可以创建自定义静态路由,其目标为 199.36.153.4/30 且下一个跃点为默认互联网网关。如果移除默认路由,则需要创建自定义静态路由。

配置防火墙规则

您必须配置本地防火墙规则,以允许来自本地主机的流量到达 199.36.153.4/30

配置 DNS

配置您自己的 DNS 服务器,以将 *.googleapis.com 解析为 restricted.googleapis.com 的 CNAME。您可以使用 BIND 配置 DNS。

您可以使用 Cloud DNS 专用 DNS 地区或 BIND

  • 借助 Cloud DNS 专用 DNS 地区,您可以托管可从授权 VPC 网络访问的 DNS 地区,并且如果配置转发,则还可以托管可从某些本地域名服务器访问的 DNS 地区。您可以为 googleapis.com 创建一个专用地区,其中包含 restricted.googleapis.com 的一个 A 记录以及各 *.googleapis.com 名称的相应 CNAME 记录。Cloud DNS 专用地区不支持部分替换,这意味着您只能选择将针对 *.googleapis.com所有请求重定向到 restricted.googleapis.com。因此,您将无法使用任何不支持使用 restricted.googleapis.com VIP 的 Google API 和服务。如需了解详情,请参阅管理地区
  • 您不能为 Cloud Dataflow 使用 BIND 和 restricted.googleapis.com VIP,因为无法自定义 Cloud Dataflow 的 DNS 解析。

使用 Cloud DNS 配置 DNS

要使用 Cloud DNS 为 Private Google Access 启用 DNS 解析,请使用以下过程:

gcloud


  1. 为您的 VPC 网络创建一个托管专用地区。

    gcloud beta dns managed-zones create apis \
        --visibility private \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --dns-name googleapis.com
    
  2. 为您的 VPC 网络创建一项策略,并启用入站转发。

    gcloud beta dns policies create --name apipolicy \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --enable-inbound-forwarding true
    
  3. 启动一项事务。

    gcloud dns record-sets transaction start -z apis
    
  4. 添加 DNS 记录。

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. --zone apis --ttl 300
    
    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone apis --ttl 300
    
  5. 执行事务。

    gcloud dns record-sets transaction execute --zone apis
    
  6. 在本地部署网络中,将您的本地部署 DNS 指向 Cloud DNS 转发器 IP 地址。要查找转发器 IP 地址,请使用 compute addresses list 命令:

    gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \
        --format='csv[no-heading](address, subnetwork)'
    

使用 BIND 配置 DNS

如果您使用 BIND 解析本地 DNS,则可以将其配置为使用响应策略地区 (RPZ) 解析对受限 Google API 的 Google API 请求,如以下 BIND 配置所示:

  1. 将以下代码行添加到 /etc/bind/named.conf 中:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. 将以下代码行添加到 /etc/bind/named.conf.options 中:

    options {
      directory "/var/cache/bind";
    
      dnssec-validation no;
    
      auth-nxdomain no;    # conform to RFC 1035
      listen-on-v6 { any; };
      listen-on { any; };
      response-policy { zone "googleapis.zone"; };
      allow-query { any;};
    };
    
  3. 将以下代码行添加到 /etc/bind/named.conf.local 中:

    include "/etc/bind/named.conf.default-zones";
    
    zone "googleapis.zone" {
      type master;
      file "/etc/bind/db.googleapis.zone";
      allow-query {none;};
    };
    
  4. 将以下代码行添加到 /etc/bind/db.googleapis.zone 中:

    $TTL 1H
    @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                            NS  LOCALHOST.
    
    *.googleapis.com CNAME restricted.googleapis.com.
    restricted.googleapis.com CNAME rpz-passthru.
    

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页