使用防火墙限制网络出口您的工作区

默认谷歌云允许从你的VPC所有出口流量。选择你可以选择配置您的工作区来限制出口只有基本服务,以及您的组织需要的任何其他目的地。允许基本服务,您需要修改谷歌云网络(VPC)和防火墙砖创建工作区。对于一些服务,您可以设置私人谷歌访问在私有IP地址与Google api。

最新的更新这些谷歌云特性是如何工作的,请参考谷歌云文档。谷歌云api和配置有时变化超出了砖的控制方法,因此总是参考谷歌云文档在试图实现这些特性。

额外的指导之前或期间部署防火墙的工作区,联系你的砖的代表。

如果你想配置一个企业域名防火墙连接到砖的web应用程序,而不是看到配置域名防火墙规则

防火墙配置概述

请注意

砖建筑的概述包括数据平面和控制平面的定义,明白了砖体系结构概述

如果你想限制出口的数据平面,你必须两个一般类型的配置允许所需的连接,否则会堵塞:

  • 私人谷歌访问GCR和gc:默认情况下,当计算引擎的虚拟机(VM),如砖集群节点缺乏外部(公众)的IP地址分配给它的网络接口,它只可以发送数据包到其他目的地内部IP地址。你可以让这些虚拟机连接到外部IP地址的设置使用Google api和服务支持私人谷歌访问(PGA)在虚拟机的网络接口使用的子网。PGA,砖之间的直接通信数据平面和这些谷歌服务使用谷歌的内部网络,而不是公共网络。这会影响以下从数据平面发出的连接:

  • 防火墙规则控制飞机的服务:在你块出口通过修改内置的防火墙,你必须允许几个基本服务通过添加新的防火墙规则:

    • web应用程序的入口和REST api在端口443上。

    • 的入口安全集群连接继电器在端口443上。

    • 默认的进入蜂巢metastore在端口3306上。如果你部署自己的外部metastore,你不需要添加为未使用的默认metastore网络规则。

    这些不同的服务的IP地址范围。你所在地区的值,见表IP地址和域名

本文包括的示例使用谷歌云配置gcloud命令行接口(CLI)。要使用这些示例,您必须安装谷歌云SDK

控制飞机的服务端点的IP地址

如果你想配置防火墙阻止出口,您必须定义新的VPC出口防火墙规则和线路允许基本服务驻留在砖控制飞机。谷歌云区域端点IP地址不同的砖工作区。用表IP地址和域名端口和IP地址控制飞机进入工作区谷歌的云。

步骤1:计划你的网络规模

如果你计划使用大型集群或多个工作区,确保您的工作区将有足够的IP空间运行GKE砖工作通过计算子网范围使用网络规模计算器

配置GKE砖工作区所使用的子网准确,因为你不能改变他们部署后,您的工作区。如果你的砖子网地址范围太小,然后工作区耗尽其IP空间,进而导致砖工作的失败。确定你需要的地址范围大小,砖的形式提供了一个计算器一个Microsoft Excel电子表格。看到计算子网大小为一个新的工作区

步骤2:创建一个工作区

  1. 登录到账户控制台

  2. 创建一个新的数据砖工作区

    • 高级配置部分表单的创建工作区,必须使用默认设置使私有集群,导致工作区使用私人GKE集群。私人GKE集群,砖计算实例没有公共IP地址。

    • 写下所有IP子网设置出现在高级配置部分在工作区中创建。有违约但你可以覆盖它们。详情见创建一个工作区使用帐户控制台

      防火墙的子网
  3. 确保砖VPC和子网在你的谷歌账户私人谷歌访问(PGA)启用。

    防火墙PGA

步骤3:添加VPC防火墙规则

你必须现在防火墙规则添加到防火墙,砖为你创建新的工作区。

  1. 让你的VPC的名字。砖在你的Google帐户创建这个VPC工作区创造的一部分。

    1. 帐户控制台工作空间页面,单击工作区启动它。

    2. 复制后数字URL的一部分? o =。例如,如果工作区URLhttps://1676665108650415.5.gcp.www.neidfyre.com/?o=1676665108650415工作区ID是1676665108650415。

    3. VPC的工作区名称databricks-managed——< workspace-ID >。例如,砖-管理- 1676665108650415。写下这个值可以使用CLI命令。

  2. 如果你想使用谷歌控制台添加防火墙规则:

    1. vpc页面在谷歌云控制台

    2. 单击VPC的名称相匹配的网络工作区在VPC的名字。

    3. 点击防火墙规则选项卡。

  3. 添加一个规则阻止出口0.0.0.0/0这意味着,这是一个特殊的语法所有外部IP地址。

    默认情况下,谷歌云允许从你的VPC所有出口流量。您需要创建一个规则阻断交通。确保规则的优先级将大量。这个规则的目的是应用在谷歌云运行所有的其他规则。例如你可以设置该规则优先级1100,然后你的出口规则优先级的范围1000 - 1099。

    重要的

    如果不正确使用一个低优先级值规则,谷歌云否认网络流量基本砖和GKE服务,这将使您的工作空间中无法使用。

    由于这个规则,任何交通将内部IP空间(10.0.0.0/8、172.16.0.0/20 192.168.0.0/16)需要一个额外的出口规则允许集群达到这些IP地址。

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。

    gcloud计算防火墙规则创建deny-egress——行动——destination-ranges否认——规则0.0.0.0/0——出口方向优先1100年——网络< vpc-name >
  4. 添加一个规则允许进入谷歌健康检查

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。

    gcloud计算防火墙规则创建from-gcp-healthcheck\——操作允许\——规则tcp: 80, tcp: 443\——source-ranges130年.211.0.0/22,35.191.0.0/16\——方向进入\——优先级1010年\——网络< vpc-name >
  5. 添加一个规则允许出口谷歌健康检查

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。

    gcloud计算防火墙规则创建to-gcp-healthcheck\——操作允许\——规则tcp: 80, tcp: 443\——destination-ranges130年.211.0.0/22,35.191.0.0/16\——出口方向\——优先级1000年\——网络< vpc-name >
  6. 添加一个规则允许出口限制api (restricted.googleapis.com),这是需要达到GKE API以固定IP地址范围。

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。

    gcloud计算防火墙规则创建to-google-apis\——操作允许\——规则\——destination-ranges199年.36.153.4/30\——出口方向\——优先级1000年\——网络< vpc-name >
  7. 添加一个规则允许出口的IP范围GKE主资源。有一个默认GKE主IP范围,但是你可以覆盖在工作区中创建的值。看到创建一个工作区使用帐户控制台

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。取代X.X.X.X / 28与你的IP范围GKE主资源。

    gcloud计算防火墙规则创建to-gke-master\——操作允许\——规则tcp: 443, tcp: 10250\——destination-ranges X.X.X.X / 28\——出口方向\——优先级1000年\——网络< vpc-name >
  8. 添加一个规则允许intra-subnet通信(出口)砖使用的工作区。有默认值为这些子网中可见在工作区中创建的高级配置部分。你需要允许出口三个子网范围中标签的用户界面主要的IP范围GKE节点,次要GKE吊舱的IP范围,二次GKE服务IP范围

    您可以使用以下gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。取代X.X.X.X / X, X.X.X.X / X, X.X.X.X / X与你的三个砖子网工作区创建期间你所提供的。

    gcloud计算防火墙规则创建to-gke-nodes-subnet\——操作允许\——规则\——destination-ranges X.X.X.X / X, X.X.X.X / X, X.X.X.X / X\——出口方向\——优先级1000年\——网络< vpc-name >
  9. 添加一个规则允许出口砖控制飞机的服务。用表IP地址和域名确定正确的值为每个砖地区为这些服务的支持。

    允许连接到主和web应用程序安全集群连接(SCC)继电器在端口443上。使用下面的gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。取代X.X.X.X你的地区的web应用程序的入口地址。取代Y.Y.Y.Y与你的地区SCC继电器的IP地址范围。

    gcloud计算防火墙规则创建to-databricks-control-plane\——操作允许\——规则tcp: 443\——destination-ranges X.X.X.X / 32, Y.Y.Y.Y / 32\——出口方向\——优先级1000年\——网络< vpc-name >
  10. 如果您使用默认metastore,添加一个规则允许连接到metastore在端口3306上。使用下面的gcloudCLI命令来创建这个规则。取代< vpc-name >与你的VPC的名字。取代X.X.X.X与你的区域为默认metastore IP地址范围。

    gcloud计算防火墙规则创建to-databricks-managed-hive\——操作允许\——规则tcp: 3306\——destination-ranges X.X.X.X / 32\——出口方向\——优先级1000年\——网络< vpc-name >

    重要的

    如果你部署自己的metastore实例创建一个规则,而不是默认的metastore允许连接到它。

  11. 添加任何其他网络出口规则,您的组织需要允许需要连接数据源或其他系统。

    重要的

    自定义出口允许规则,设置优先级数字范围1000 - 1099。重要的是优先级数量低于价值你用来阻止所有出口,将优先级1100在前面的步骤。

你的防火墙规则应该类似于下面的,尽管你必须使用区域控制飞机服务IP地址为该地区的工作区。

防火墙规则

步骤4:更新VPC路线

谷歌云路线定义网络流量的路径需要从一个虚拟机(VM)实例的其他目的地。在VPC网络中,路由由一个目的地CIDR格式的前缀和一个下一跳。

  1. 删除自动创建的默认路由在VPC,这是0.0.0.0/0使用默认互联网网关为下一跳。使用控制台界面删除这条路线清楚任何路径网络。

    1. 谷歌云控制台路线列表中

    2. 选择路线0.0.0.0/0并点击删除

      删除路线
  2. 创建一个路线在VPC发送流量限制谷歌api子网(199.36.153.4/30)。设置下一跳default-internet-gateway按照要求访问私人Google api。

    您可以使用以下gcloudCLI命令来创建这个路线。取代< vpc-name >与你的VPC的名字。取代<项目名称>你的项目名称。

    创建route-to-google-apis gcloudβ计算路线\——项目=<项目名称>——描述=“谷歌限制api路线”\——网络=< vpc-name >\——优先级=1000年\——destination-range=199年.36.153.4/30\——next-hop-gateway=default-internet-gateway
  3. 创建一个路线到达砖控制飞机的服务。得到的值你的地区IP地址和域名

    您可以使用以下gcloudCLI命令创建web应用程序的路线。取代< vpc-name >与你的VPC的名字。取代<项目名称>你的项目名称。取代X.X.X.X / 32区域IP地址范围的web应用程序。

    创建route-to-databricks-scc-service gcloudβ计算路线\——项目=<项目名称>——描述=“砖web应用程序的路线”\——网络=< vpc-name >\——优先级=1000年\——destination-range=X.X.X.X / 32\——next-hop-gateway=default-internet-gateway

    您可以使用以下gcloudCLI命令创建的路线安全集群连接继电器。取代< vpc-name >与你的VPC的名字。取代<项目名称>你的项目名称。取代X.X.X.X / 32与区域SCC继电器的IP地址范围。

    创建route-to-databricks-scc-service gcloudβ计算路线\——项目=<项目名称>——描述=“砖SCC继电器的路线”\——网络=< vpc-name >\——优先级=1000年\——destination-range=X.X.X.X / 32\——next-hop-gateway=default-internet-gateway

    如果您使用默认metastore,使用以下gcloudCLI命令创建默认metastore的路线。取代< vpc-name >与你的VPC的名字。取代<项目名称>你的项目名称。取代X.X.X.X / 32metastore区域IP地址范围。

    创建route-to-databricks-scc-service gcloudβ计算路线\——项目=<项目名称>——描述=“默认metastore路线”\——网络=< vpc-name >\——优先级=1000年\——destination-range=X.X.X.X / 32\——next-hop-gateway=default-internet-gateway

第五步:创建DNS区域Google api可以让Google GCS和GCR的私人访问

现在你必须创建一个DNS区域对谷歌api,这需要使谷歌私人访问的数据平面的2 GCS和GCR Google api。启用GPA的详细信息,请参阅文章谷歌文档配置私人谷歌访问)

  1. 定制的VPC DNS域googleapis.com使用云DNS。通常googleapis.com解决公共IP地址,但您必须使用谷歌私人访问restricted.googleapis.com。此域名解析到一个特定的范围内199.36.153.4/30,这在谷歌云网络访问。

    砖的数据平面GKE集群需要访问GCS和GCR。PGA,您需要确保访问受限的api解决否则GKE不成功的开始。

    您可以使用以下gcloud命令创建DNS区域。< vpc-name >替换为你的VPC的名字。

    gcloud dns managed-zones创建google api\——描述“谷歌api私人区”\——dns名称googleapis.com\——可见性的私人\——网络VPC-NAME gcloud dns记录集事务开始——区google api gcloud dns记录集事务添加restricted.googleapis.com。\——名称* .googleapis.com\——ttl300年\——类型CNAME\——带google api gcloud dns记录集事务添加“199.36.153.4”“199.36.153.5”“199.36.153.6”“199.36.153.7”\——名称restricted.googleapis.com\——ttl300年\——输入一个\——带google api gcloud dns记录集事务执行——google api

    谷歌云控制台中的对象类似于以下几点:

    区API
  2. 做出类似区GCR的设置。io域发送流量限制谷歌api子网达到容器注册表。没有这些变化,GKE集群不会成功站起来,因为它无法放下所有必要的砖的运行时容器。

    您可以使用以下gcloud命令来创建这些DNS区域。< vpc-name >替换为你的VPC的名字。

    gcloud dns managed-zones创建gcr-io\——描述“GCR.io私人区”\——dns名称gcr.io\——可见性的私人\——网络< vpc-name > gcloud dns记录集事务开始——区gcr-io gcloud事务添加gcr.io dns记录集。\——名称* .gcr.io\——ttl300年\——类型CNAME\——带gcr-io gcloud dns记录集事务添加“199.36.153.4”“199.36.153.5”“199.36.153.6”“199.36.153.7”\——名字gcr.io\——ttl300年\——输入一个\——带gcr-io gcloud dns记录集gcr-io事务执行——区域

    谷歌云控制台中的对象类似于以下几点:

    区GCR

第六步:验证配置

  1. 创建一个砖集群和启动它。

  2. 等待确认它成功启动状态运行

    验证集群
  3. GKE负载页面在谷歌云控制台

  4. 集群选择器,选择您的集群。集群名称对您的工作区名称db -紧随其后的是大量的砖工作区ID。

  5. 确认所有服务状态好吧

    验证服务

故障排除

不能开始GKE集群

如果GKE集群没有开始,有可能是DNS配置错误的启用私人谷歌访问时在VPC砖使用的工作区。如果节点是无法解决的googleapis主机名,它可以导致注册失败,最终导致的不成功创建GKE集群。

您可以查看日志,检查相应的串口日志GKE节点。你可能会看到错误如下:

> > >[203.604558]配置。sh[948]:旋度(6)无法解决主机的> > > storage.googleapis.com '> > >[203.605422]配置。sh[948]: = =下载失败> > > https://storage.googleapis.com/gke-release/npd-custom-plugins/v1.0.1/npd-custom-plugins-v1.0.1.tar.gz。> > >进行重试。= => > > [203.614049]configure.sh [948]:> > > https://www.googleapis.com/auth/devstorage.read_write

由于集群使用VPC网络,这个集群的子网私人谷歌访问启用。你需要完整的私人谷歌访问设置遵循指令这个谷歌PGA文档

GKE集群停止工作或不能启动后可以成功启动前的尝试

您会发现GKE集群停止工作或不能启动GKE集群由于配置错误的计算引擎项目托管GKE服务帐户。计算引擎默认服务帐户相关联的节点集群问题一直在“禁用”状态或没有所需的最低限度的作用。服务帐户是<项目id > -compute@developer.gserviceaccount.com

节点注册失败的原因可能是由于残疾人服务帐户状态,这是连接到集群节点的问题。

试着启用后的服务帐户谷歌帮助中心的这篇文章并尝试重新创建集群或节点池是否解决了问题。

你也可以尝试使用谷歌云控制台来看看你我和Admin页面服务帐户和相应的集群节点的问题。

默认情况下,计算引擎默认服务帐户与我项目编辑器创建的角色。你可以改变它所需的最低限度的作用如下:

  1. 得到当前的角色分配给默认计算服务帐户。

    gcloud项目get-iam-policy{{项目号}}\——平=“绑定[].members”\- - -格式=“表(bindings.role)”\——过滤器=“bindings.members: -compute@developer.gserviceaccount.com{{项目id}}”
  2. 添加所需的最小角色默认计算服务帐户

    gcloud项目add-iam-policy-binding{{项目号}}\——成员“serviceAccount: -compute@developer.gserviceaccount.com{{项目id}}”\——角色角色/日志记录。logWriter gcloud项目add-iam-policy-binding{{项目号}}\——成员“serviceAccount: -compute@developer.gserviceaccount.com{{项目id}}”\——角色角色/监控。metricWriter gcloud项目add-iam-policy-binding{{项目号}}\——成员“serviceAccount: -compute@developer.gserviceaccount.com{{项目id}}”\——角色角色/监控。观众gcloud项目add-iam-policy-binding{{项目号}}\——成员“serviceAccount: -compute@developer.gserviceaccount.com{{项目id}}”\角色/ stackdriver.resourceMetadata.writer——的作用
  3. 删除项目编辑角色从默认计算服务帐户。

    gcloud项目remove-iam-policy-binding{{项目号}}\——成员“serviceAccount: -compute@developer.gserviceaccount.com{{项目id}}”\——角色角色/编辑器
  4. 验证角色分配给默认计算服务帐户。

    gcloud项目get-iam-policy{{项目号}}\——平=“绑定[].members”\- - -格式=“表(bindings.role)”\——过滤器=“bindings.members: -compute@developer.gserviceaccount.com{{项目id}}”
  5. 确保此服务帐户正确的角色在这个项目。