首页 > 其他分享 >【Google Cloud】Private Service Connect 功能解说

【Google Cloud】Private Service Connect 功能解说

时间:2024-10-19 22:47:24浏览次数:9  
标签:Google Service Private API Connect Cloud

本文介绍 Private Service Connect,这是一项通过专用网络访问 Google 云 API 的功能。

概要

什么是 Private Service Connect ?

Private Service Connect 是一种,允许没有外部 IP(公共 IP)的虚拟机和本地部署自有客户端通过专用网络访问 Google Cloud API 和托管在 Google Cloud 上的托管服务的机制。

此功能可在 VPC 中创建一个带有 IP 地址的端点,并允许通过此端点访问 Google Cloud API 和托管服务。

本文介绍了如何使用 Private Service Connect 访问 Google Cloud API。
在这里插入图片描述

什么是 Google Cloud API ?

作为前提知识,让我们来复习一下什么是 Google 云 API。

对 Google Cloud 服务的查看、更新、添加和删除几乎完全由 Web API 处理。AWS 等其他公共云也是如此。

例如,以下操作都是通过 Web API 请求执行的。

  • VM の阅览、作成、起动、停止
  • 列出、获取、放置和删除云存储中的对象
  • 查询 BigQuery、查看和更新元数据

即使您通过 Web 控制台屏幕与 AWS 或 Google Cloud 进行交互,也要考虑 Web API 请求是在该 Web 屏幕的后端发出的

公共云的 Web API 向互联网开放,但不是任何人都能执行 API,它通过 IAM 机制和其他机制进行验证和授权,以确保安全。

Google Cloud 为其每项服务提供 Web API 端点。这些 API 统称为 Google Cloud API

出于安全考虑,有时需要在专用网络内访问这些 API。

”专用 Google 访问通道“功能允许没有外部 IP 的虚拟机和本地自有部署节点访问 Google API。

不过,“专用 Google 访问通道”功能要求使用非 RFC 19181 IP 地址,如 199.36.153.4/30 和 199.36.153.8/30,这在使用 Cloud Interconnect 或 Cloud VPN 时可能会有些不便。在本地自有部署环境中使用Cloud Interconnect 或 Cloud VPN 时,会因为路由复杂性的增加,有时会带来一些不便。

有关”专用 Google 访问通道“功能的更多信息,请参阅以下解释性文章。

另一方面,利用本文介绍的 Private Service Connect 功能,您可以在 VPC 中创建一个带有 IP 地址的端点,并通过该端点访问 Google API。

可以为该端点分配任何 IP 地址,这些地址可以是 RFC 1918 中定义的 IP 地址,也可以不是。

功能的要点

Private Service Connect 功能的要点如下

  • 创建 Private Service Connect 端点(分配专用 IP 地址),VPC 中的内部部署节点或虚拟机可通过该端点访问 Google API。

  • 创建端点时从以下类型中选择

    • 1.all-apis
    • 2.vpc-sc
  • 端点按小时收费。

在这里插入图片描述

利用 Private Service Connect 公开托管服务。

本篇博文未详细介绍的另一项 Private Service Connect 的功能是将您的环境中托管的服务发布到其他 Google Cloud 环境(发布托管服务)。这是一项类似于 AWS PrivateLink 的功能。

更多信息请参阅以下文章。

为什么要部署 Private Service Connect ?

由于 Google Cloud API 需要通过互联网访问,因此许多人认为这并不安全。但是,API 调用是使用 HTTPS (TLS) 加密的。因此,如果密钥信息没有泄露,即使数据包被截获,内容也无法解密。

谷歌泄露 TLS 证书密钥信息以及进一步窃听和解密数据包以泄露信息的可能性很低。

因此,使用 Private Service Connect 和专用 Google 访问通道的主要原因是允许未连接到互联网的节点访问 Google API。

这就意味着,如果节点原本就能访问互联网,则几乎不需要更改配置来使用 Private Service Connect 或专用 Google 访问通道。

Private Service Connect vs 专用 Google 访问通道

功能差异

专用 Google 访问通道是与 Private Service Connect 类似的功能。

在设置 Private Service Connect 时,必须启用专用 Google 访问通道功能,因此 Private Service Connect 功能可视为专用 Google 访问通道功能的扩展版。

这两个功能的功能几乎相同,但有以下区别

  • 专用 Google 访问通道功能需要使用 RFC 1918 定义之外的虚拟 IP 地址,例如 199.36.153.4/30199.36.153.8/30 作为 API 端点。

  • 专用 Google 访问通道功能,使用默认域名的情况下, 无需进行额外的 DNS 配置就可以轻松使用。

    • 不过,这种模式需要打开一条通往 0.0.0.0/0 的路由和出口防火墙
  • 专用 Google 访问通道功能不收费。

该用哪一个好呢?

Private Service Connect vs 专用 Google 访问通道我们如何判断使用哪一个呢?

结论如下

  1. 如果符合以下所有条件,请选择 Private Service Connect

    • 本地(内部)自有环境通过私有网络访问Google API

    • 在使用专用 Google 访问通道的199.36.153.4/30199.36.153.8/30时,在路由交换和路由控制方面存在不便之处的

      • 不同目的地 VPC 的多个端点或本地自建客户端使用的不同线路。
      • 例如:非 RFC 1918 IP 地址不宜公开
  2. 上述以外的情况,请选择专用 Google 访问通道(免费)。

如果199.36.153.4/30199.36.153.8/30是可以接受的 IP 地址,使用免费的专用 Google 访问通道是一个不错的选择。

请参阅我们博客上的解释性文章,了解有关专用 Google 访问通道功能的更多信息。

设计要点和考虑因素

服务端点的类型

不同类型的端点可访问不同的 Google API。

all-apis,可以连接到大多数 Google Cloud 服务、Google Map、Google 广告和许多其他服务。

对于 vpc-sc,只能连接 VPC Service Controls 所支持的服务。

如果您不使用 VPC Service Controls,在将来也不打算使用它,请选择前者。

另一方面,如果您正在或者将要使用 VPC Service Controls,并且不需要访问 VPC Service Controls 不支持的服务,则应使用后者。

服务端点的 IP 地址

创建Private Service Connect 服务端点时,会分配一个专用 IP 地址。

是不是 RFC 19181 地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)都可以,但不允许使用 IPv6 地址。

服务端点的 IP 地址不能和子网的 IP 地址重复

它还不得与通过网络对等、Cloud Interconnect、Cloud VPN 等方式连接到 VPC 的网络重叠。

充分考虑未来 VPC 子网的扩展,指定不重复且不浪费 IP 资源的 IP 地址。

此外,如果要通过 Cloud Interconnect 或 Cloud VPN 从本地自有环境使用 Private Service Connect 服务端点,建议使用与 VPC 子网的 IP 地址带相邻的 IP 地址,以便对来自 Google Cloud 的路由进行路由聚合。

DNS 设置

Cloud Storage 的 Web API 端点为 https://storage.googleapis.com/ ,BigQuery 的 API 端点为 https://bigquery.googleapis.com/

通常,这些 IP 地址的名称解析会返回公共 IP。
storage.googleapis.com 的名称解析结果

这意味着,即使创建了Private Service Connect 服务端点,客户端(如 gcloud 和 gsutil 命令)也会向这些公共 IP 发送数据包。

因此,您可以通过以下方式之一让客户端面对 Private Service Connect 服务端点。

  1. 配置客户端(SDK)以使用 Private Service Connect 服务端点。
  2. 统一配置 DNS 指向Private Service Connect 服务端点

方法1是更改客户端(gcloud 或云 SDK)指向的端点。创建私有服务连接端点会创建一个 DNS 区域 <服务名>.<服务端点名>.p.googleapis.com ,而 gcloud 或 Python SDK您可以使用 gcloud 或 Python SDK 命令明确指定这些端点 URL。这样,您就可以使用Private Service Connect 服务端点,而无需更改 DNS 配置。

有关说明,请参阅 官方文档

方法2是在虚拟机引用的 DNS 中为 *.googleapis.com 创建一个 CNAME 记录,并将其解析为专用服务连接端点的 IP 地址、这是一种在不更改客户端配置的情况下引用专用服务连接端点的方法。这种方法无需更改客户端配置或程序代码,就可以使用 Private Service Connect 端点。

本文将详细介绍方法2。

配置方法

配置方法概述

Private Service Connect 配置方法的一般流程如下。

  1. 启用所需的API

  2. 创建 Private Service Connect 服务端点(控制台链接)。

  3. 在目标子网上启用专用 Google 访问通道(控制台链接)。

  4. 确保面向服务端点 IP 地址的 443/TCP 下游(出口)通信未被 VPC 防火墙拒绝(默认状态下允许)(控制台链接)

  5. 在 Cloud DNS 中创建一个名为 googleapis.com 的专用 DNS 区域(控制台链接)。

  6. 在同一区域添加以下内容

    • DNS 名称: googleapis.com
    • 类型:A
    • IPv4 地址:(服务端点的 IP 地址)
  7. 在同一区域添加以下内容

    • DNS 名称: *.googleapis.com
    • 类型: CNAME
    • 规范名称:googleapis.com

详细说明

由于本文的目的在于解释这一概念,因此只提供了一个概述。
有关更详细的配置说明,请参阅官方文档

解释 DNS 配置的含义

关于最后的 DNS 配置有几句话要稍作解释。

例如,假设通过在虚拟机中执行 gsutil 命令来访问 Cloud Storage。

gsutil 命令会尝试通过 HTTPS 访问 storage.googleapis.com 以调用 Web API。

这时候,虚拟机默认会参照 Cloud DNS,因此会优先使用专用区域进行名称解析。

让我们一起来看看客户端的执行流程。

  1. 虚拟机向 Cloud DNS 查询 storage.googleapis.com 的 DNS 名称解析。
  2. 这与 CNAME 中的 *.googleapis.com 匹配,解析为 googleapis.com
  3. googleapis.com 被解析为 A 记录中的服务端点 IP 地址,并返回给虚拟机
  4. gsutil 命令会向服务端点的 IP 地址进行 Web API 调用

从本地自有环境使用

要从通过Cloud Interconnect 或 Cloud DNS 连接的本地自有部署环境中使用Private Service Connect 服务端点,需要进行以下配置。

  • 向本地自有环境广播 Private Service Connect 服务端点的 IP 地址。
  • 为本地自有部署节点引用的 DNS 添加转发器设置,以便将 Google API 名称解析转发到 Cloud DNS。

第一种方法可以通过使用 Cloud Router 的自定义路由通告来实现。
第二种方法可以通过 Cloud DNS 入站服务器策略来实现。

对于第二种情况,本地自有部署客户端只需指向 Private Service Connect 服务端点,因此可以将与 Cloud DNS 相同的记录直接添加到本地自有部署节点引用的 DNS 中。
(然而,除非有正当理由,否则这种做法是不可取的,因为这会造成双重管理)。

有关配置说明,请参阅官方文档


  1. 所谓的专用 IP 地址范围为 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 ↩︎ ↩︎

标签:Google,Service,Private,API,Connect,Cloud
From: https://blog.csdn.net/weixin_52179956/article/details/143085280

相关文章

  • 0x3D service
    0x3Dservice1.概念2.Requestmessage数据格式3.Responemessage数据格式3.1正响应格式3.2negativeresponecodes(NRC)4.示例4.1正响应示例:4.2NRC示例1.概念UDS(统一诊断服务)中的0x3D服务,即WriteMemoryByAddress(按地址写内存)服务,允......
  • 启动service报错ORA-44317: database open read-only
    ADG(RAC)备库环境,srvctl添加service服务成功,启动service时报错ORA-44317:databaseopenread-only。这是预期行为,使用“srvctladdservice-d<db_name>-s<service_name>”创建服务时,将在OCR中创建和注册服务,但在使用“srvctlstartservice-d<db_name>-s<service_n......
  • java代码生成器(controller,service,mapper)
    packagecom.cn.codeGenerator;importjava.awt.*;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.sql.*;importjava.util.ArrayList;importjava.util.List;publicclassCodeGenerator{privatestaticfinalStri......
  • IoT平台软件:Google Cloud IoT二次开发_JavaSDK使用指南
    JavaSDK使用指南1.环境准备在开始使用GoogleCloudIoT的JavaSDK之前,需要确保您的开发环境已经配置好相关的依赖和工具。以下是环境准备的步骤:1.1安装Java确保您的系统中安装了最新版本的Java开发工具包(JDK)。您可以通过以下命令检查Java版本:java-vers......
  • IoT平台软件:Google Cloud IoT二次开发_Node.jsSDK使用指南
    Node.jsSDK使用指南在本节中,我们将详细介绍如何使用GoogleCloudIoTNode.jsSDK进行二次开发。GoogleCloudIoT提供了丰富的API和SDK,使得开发者可以轻松地与IoT设备进行交互,实现设备管理、数据传输、消息处理等功能。Node.jsSDK是其中一种常用的开发工具,特......
  • IoT平台软件:Google Cloud IoT二次开发_PythonSDK使用指南
    PythonSDK使用指南1.安装GoogleCloudIoTPythonSDK在开始使用GoogleCloudIoTPythonSDK之前,需要先安装相关的依赖库。GoogleCloudIoTCore提供了官方的Python客户端库,这将帮助我们更方便地与GoogleCloudIoTCore进行交互。以下是安装步骤:1.1安装......
  • IoT平台软件:Google Cloud IoT二次开发_RESTfulAPI与gRPC
    RESTfulAPI与gRPCRESTfulAPI原理RESTfulAPI是一种基于HTTP协议的架构风格,用于构建分布式系统中的网络应用程序。它通过一组规则和约束来定义客户端和服务器之间的交互方式,使得系统更加简洁、可扩展和易于理解。RESTfulAPI的设计原则包括:无状态性:每个请求都必......
  • easyadmin NodeService
    EasyadminNodeService文件更新的commit由于作者更新了composer的加载方式,可能一些框架只更新composer没有更新controller文件的话,节点功能会出现bug错误。更新了节点文件的引用https://github.com/zhongshaofa/easyadmin/commit/424a0e6cbeb25afa03502641aaff92627c6......
  • Android Framework AMS(08)service组件分析-2(startService和StopService关键流程分析)
    该系列文章总纲链接:专题总纲目录AndroidFramework总纲本章关键点总结&说明:说明:上一章节主要解读应用层service组件启动的2种方式startService和bindService,以及从APP层到AMS调用之间的打通。本章节主要关注service组件启动方式的一种:startService启动方式,分析关键API......
  • Android Framework AMS(09)service组件分析-3(bindService和unbindService关键流程分析)
    该系列文章总纲链接:专题总纲目录AndroidFramework总纲本章关键点总结&说明:说明:上上一章节主要解读应用层service组件启动的2种方式startService和bindService,以及从APP层到AMS调用之间的打通。上一章节我们关注了service组件启动方式的一种:startService启动方式。本章......