【问题标题】:Azure Databricks with ADLS Gen 2 Secure Access具有 ADLS Gen 2 安全访问的 Azure Databricks
【发布时间】:2020-12-02 17:51:14
【问题描述】:

我的小公司的团队在使用 Azure Data Lake Storage Gen 2 作为 Azure Databricks 中增量表的后端时遇到了一些挫折(我是这家公司和 Databricks 的新手,所以我可以解释的任何事情都是在我的时间之前决定的,我意识到其中一些可能是有问题的,但不是在寻找观点)。

本质上,工程团队正在构建在 Azure Databricks (Jobs API) 上运行并由其安排的数据摄取管道(作为 python 文件,而不是笔记本)。这意味着管道必须能够访问 ADLS Gen 2 存储资源 - 因此我们直接使用服务主体 (SPN) 和 OAuth 2.0 进行身份验证,如 Microsoft doc 中所述,通过 spark.conf.set 设置以下配置():

fs.azure.account.auth.type.[STORAGE_ACCT].dfs.core.windows.net
fs.azure.account.oauth.provider.type.[STORAGE_ACCT].dfs.core.windows.net
fs.azure.account.oauth2.client.id.[STORAGE_ACCT].dfs.core.windows.net
fs.azure.account.oauth2.client.secret.[STORAGE_ACCT].dfs.core.windows.net
fs.azure.account.oauth2.client.endpoint.[STORAGE_ACCT].dfs.core.windows.net

鉴于工程部门正在为我们的管道使用此功能,并且我们为 dev/prod 使用不同的存储帐户,代码库会检测我们在哪个环境(dev 或 prod)中运行并设置适当的存储帐户配置。也许非常规,但我们这边没有问题。

问题: 我们的数据科学团队在 Databricks Notebooks 上运行,并且还需要访问由 ADLS Gen 2 支持的数据表 - 因此,他们也必须进行身份验证。但是,他们的代码不是工程代码,所以他们没有考虑环境的变化。因此,他们感到沮丧的是,在升级到生产环境时,他们必须进行一些小调整,使其能够在 prod 中运行,但在 dev 中无法运行,因为这些环境在它们自己的 VNET 中并且有自己的存储帐户。

询问: 我们如何安全地允许表访问而不牺牲访问控制,并且不必在笔记本/代码库中设置这些配置?使用 Databricks 是否也能做到这一点?

如果其他团队正在使用上述方法,他们如何在不破坏开发代码的情况下将容器升级到生产?只是告诉 DS 团队他们必须使用我们的逻辑吗?

我的尝试

  • ADLS 凭据直通 - 因为我们安排他们的模型使用 Databricks 作业 API 运行 - 这对凭据直通有严格限制,因此无法使用
  • 挂载 ADLS - 由于这使任何有权访问集群的人都可以访问 ADLS,因此团队反对这种方法
  • 集群配置 (UI) - 我们将临时集群用于作业,但由于这会以明文形式列出所有检索到的机密,因此所有人都反对这种方法

目前,我已经在他们的笔记本中实现了工程团队的逻辑以检测环境,但我无法强调他们对在他们的笔记本中实现工程代码的热情。

我知道可能没有直接的答案,但我们将不胜感激。

【问题讨论】:

    标签: azure azure-databricks access-control azure-data-lake-gen2


    【解决方案1】:

    你是对的,没有一个单一的答案 - 而是一个权衡选择。 目前所有可用选项中最好的文章是here,它非常详细地解释了 6 种模式:

    1. 通过服务主体访问

    2. 多个工作空间——工作空间的权限

    3. AAD 凭据直通

    4. 集群范围的服务主体

    5. 会话范围的服务主体

    6. Databricks 表访问控制

    您现在正在使用会话范围的服务主体并为此支付管理开销。

    我对您在团队和整体基础架构之间的工作流程有点困惑,但我首先要考虑的选项很少:

    • 使用小部件对笔记本进行参数化,以选择存储帐户并在环境之间保持机密命名一致(我假设您有由不同 KeyVault 支持的 dev 和 prd)+ 提取尽可能多的样板逻辑以分离、可重复使用的笔记本
    • 在数据科学团队和生产环境中使用同名的服务主体挂载(假设生产环境更加受限和受控)
    • 将数据科学家拆分为具有工作区范围的安装的工作区

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2021-08-05
      • 2021-10-08
      • 1970-01-01
      • 2021-11-25
      • 2021-10-18
      • 2021-05-31
      相关资源
      最近更新 更多