【问题标题】:How to sandbox/limit access for a Google Cloud Dataflow pipeline running in the cloud?如何对在云中运行的 Google Cloud Dataflow 管道进行沙盒/限制访问?
【发布时间】:2017-09-21 06:01:33
【问题描述】:

我想在 Google Cloud Dataflow 中运行一个管道(之前暂存的模板)(使用 Google Cloud Function 中的 GAPI JS 库,如 https://shinesolutions.com/2017/03/23/triggering-dataflow-pipelines-with-cloud-functions/ 所示)。如何限制此管道可以访问的资源?例如,我不希望它能够写入所有 Pub/Subs、项目下的所有存储桶等。我什至不希望管道能够例如做一个 HTTP 请求。

根据我在https://cloud.google.com/dataflow/security-and-permissions 阅读的内容,我只能在从本地计算机运行管道时这样做,因为访问权限由我的用户访问权限决定。但是,当在云中运行时,它会在 Cloudservices 帐户和 Compute Engine 服务帐户下运行,而我无法限制这些帐户,这样我就不会在其他地方破坏东西......对吗?

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

那么,如果不从本地计算机执行它,我该如何限制它可以做什么和不能做什么呢?完全独立的项目?一个权限严重受限的项目,然后使用跨项目访问权限调优,一一分配桶等资源? 或者我是否通过设置一些安装了 gcloud util 的微型实例来“模拟”本地,然后使用单独的用户从那里运行它?

改用 Dataproc(并接受更低抽象和更多 devops 工作的代价)会有帮助吗?

【问题讨论】:

    标签: security google-cloud-dataflow access-control


    【解决方案1】:

    首先,在 DF 的工作虚拟机中运行的用户代码默认带有 Compute Engine Service Account 凭据,这与谁从哪里启动作业无关。

    所以基本上你的问题可以重新解释为:

    1. 对 Dataflow 虚拟机设置一些网络限制。
    2. 对虚拟机正在使用的服务帐号设置一些权限限制。

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

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

    1. 为每位客户创建一个新项目。
    2. 仅向计算引擎服务帐户授予必要的权限。
    3. 可以使用对该项目具有正确权限的服务帐户(例如,EDITOR)从任何地方启动作业。

    B:对单个管道应用限制,而不创建新项目。

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

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

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

    【讨论】:

    • 感谢您的澄清。我误解了文档,并认为有关在云中运行的部分仅适用于整个工作流程发生在云中的情况。
    • --serviceAccount--network 你的意思是 --service-account-email(或 JS API 中的 serviceAccountEmailWorkerPool.network),对吧?
    • 不,我的意思是数据流选项:cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/…cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/… 基本上 --serviceAccount 在这里被转换为 get/setServiceAccount 对。另请注意 serviceAccount 选项是实验性的。我仍然推荐上面的解决方案A。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多