如何在云中运行的Google Cloud DataFlow管道来打磨/限制访问



我想在Google Cloud DataFlow中运行管道(先前上演的模板((在Google Cloud功能中使用GAPI JS LIB,如https://shinesolutions.com/中所示2017/03/23/触发dataflow-Pipelines with-cloud-functions/(。如何限制该管道可以访问的资源?例如,我不希望它能够写信给所有酒吧/潜艇,项目下的所有存储桶等。我什至不希望管道能够例如完全执行HTTP请求。

从我在https://cloud.google.com/dataflow/security-and-permissions上阅读的内容,我只能在从本地计算机运行管道时做到这一点,因为那时访问权限由我的用户访问权限确定。但是,当在云中运行时,它将在CloudServices帐户和计算引擎服务帐户下运行,并且我无法限制的帐户,以免我在其他地方破裂...正确?

我想要的原因是,我正在构建一个多租户系统,该系统将在可查询之前利用DF到ETL客户的数据。数据工程师/顾问将撰写管道(根据客户的数据形状量身定制(,这些管道可能会犯错 - 默认情况下,代码必须是不信任的。

那么,如果不从本地计算机执行它,我该如何限制它可以和不能做什么?完全独立的项目?一个具有严格有限权利的项目,然后使用交叉项目访问权调整一一一个一个一个一个一个一个一个一个,一个一个一个项目?或通过安装GCLOUD UTIT设置一些Micro实例来"模拟"本地,然后使用单独的用户从那里运行它?

会改用DataProc(并接受较低的抽象和更多DevOps的价格(帮助?

首先,默认情况下,在DF的Worker VMS Bear 计算发动机服务帐户中运行的用户代码默认情况下,这与从哪里启动该作业的人无关。

因此,基本上您的问题可以重新解释为:

  1. 将一些网络限制放在数据流VM上。
  2. 对服务帐户VM使用一些权限限制。

这里有两个高级解决方案:

a:将每个客户的管道放入一个不同的项目中。

  1. 对于每个客户,创建一个新项目。
  2. 授予Compute Engine Service帐户仅必要的权限。
  3. 可以通过使用对该项目有正确许可的服务帐户(例如编辑(来启动作业。

b:在单个管道上应用限制,而无需创建新项目。

  1. 创建一个新的服务帐户并以正确的权限授予它。
  2. 启动管道时,请使用-ServiceAccount使用服务帐户。

在这两种情况下,都可以使用-NETWORK创建管道,以使您灵活地配置网络。

解决方案A更好,因为您正在构建多租户服务,并且客户之间的隔离可能非常重要。而且您应该更容易正确配置。

最新更新