跳转到主要内容
Chinese, Simplified

本文档旨在提供在Azure C3强化订阅中部署Azure DataBricks的指导,并验证对存储在受专用端点保护的安全存储帐户中的数据的访问。

介绍


Azure DataBricks解决方案需要特定的虚拟网络配置,该配置与Azure C3强化订阅中提供的虚拟网络不兼容。本文档将帮助您在订阅中部署Azure DataBricks解决方案,并访问包含受专用终结点保护的数据的存储帐户。

在图的中心,我们有tdp-he-vnet-rg资源组,其中包含C3 Azure强化订阅提供的虚拟网络。在图的右侧,我们有一个名为DemoDataBrickC3的专用资源组。此资源组包含一个存储帐户,该帐户将包含不得在Internet上公开的敏感数据。对此存储帐户的访问受到保护,只有C3 Azure强化虚拟机能够访问它(使用存储帐户的私有端点)。

在图的左侧,我们有一个名为DemoDataBricks的新资源组,其中包含一个未连接到TDF虚拟网络的专用虚拟网络。在本文档中,我们将配置DataBricks基础设施(图的左侧)并配置与存储帐户链接的专用端点。本文档中唯一没有记录的是如何配置连接到tdp-he-vnet的第二个专用端点。

DNS注意事项


创建专用终结点时,我们必须为将连接到存储帐户的网络接口提供名称解析。TDF DNS中央基础架构负责管理与为专用终结点配置的Azure服务相关的专用DNS区域内容。只有当专用端点链接到tdp-he-vnet虚拟网络时,该服务才会创建这些DNS记录,而不是其他虚拟网络。

因此,当我们在图表左侧创建私有端点时,我们必须创建与服务相关的私有DNS区域:privatelink.blob.core.windows.net,并将其链接到专用于Azure DataBricks的虚拟网络。因此,即使我们有两个同名的Azure专用DNS区域,它们也不会为DNS解析提供相同的结果。

部署步骤


本节将提供所需步骤,通过以下步骤将Azure DataBricks解决方案成功部署到专用虚拟网络中:

  • 提供专用虚拟网络
  • 为专用端点提供专用子网
  • 禁用专用终结点的网络策略
  • 提供Azure DataBricks工作区
  • 配置Azure数据块集群
  • 为存储帐户提供示例数据
  • 具有专用终结点的安全存储帐户
  • 从dataBricks验证DNS解析
  • 将文件装载到Azure DataBricks
     

提供专用虚拟网络


此专用虚拟网络将用于部署Azure DataBricks解决方案。如下图所示,虚拟网络有两个地址空间Azure DataBricks虚拟网络要求

无法在C3 Azure强化订阅提供的虚拟网络上执行此配置。因此,您必须创建一个新的虚拟网络,专门用于Azure DataBricks解决方案。只有一个要求:此新虚拟网络必须与我们将访问的存储帐户位于同一Azure区域。

为专用端点提供专用子网


专用端点的使用有一些限制。目前,Private Endpoint尚未与以下功能兼容:

  • 网络安全组
  • 路线表


由于DataBricks等一些产品依赖于这些网络功能,我们必须创建一个专用子网,仅供专用端点使用。如本文所述,网络安全组规则,DataBricks解决方案附带了一组适用于解决方案使用的子网的网络安全组。为了使用专用端点,我们需要引入一个单独的子网,专门用于专用端点的使用。

禁用专用终结点的网络策略


默认情况下,用户定义路由和网络安全组等网络策略与专用终结点不兼容。必须重新配置任何新创建的虚拟网络,以禁用将承载私有端点的子网上的私有端点策略。此处描述了此过程:管理专用终结点的网络策略

必须在我们在上一步创建的专用端点子网上执行此操作。

提供Azure DataBricks工作区


下一步是创建Azure DataBricks工作区。此资源必须:

  • 与包含数据的存储帐户位于同一Azure订阅中
  • 与存储帐户位于同一Azure区域


创建Azure DataBricks工作区时,请确保选择以下选项:

  • 在您自己的虚拟网络(VNET)中部署Azure DataBricks工作区
  • 部署具有安全群集连接(无公共IP)的Azure DataBricks工作区


选择在上一步中创建的虚拟网络

注意:公共和私有子网CIDR很重要。地址空间大小决定了您可以有多少个节点。此处提供了所需的其他信息地址空间和最大群集节点数

部署过程完成后,您应该有一个Azure DataBricks工作区,如下所示:

此工作区是使用标准SKU配置的,它不提供虚拟网络对等功能。此功能仅在高级SKU中可用。在C3 Azure强化订阅中,无法使用此Azure DataBricks功能。

配置Azure数据块集群


Azure DataBricks工作区需要计算资源来处理数据。连接到DataBricks门户管理URL,并使用“新集群选项”请求创建集群。

创建过程相对简单,唯一需要考虑的是您选择的Azure虚拟机的Azure配额。如果所选虚拟机没有足够的配额,部署将失败。如果部署因此失败。

集群部署将需要几分钟时间。将执行以下操作:

  • 将创建一个专用资源组来托管所有与集群相关的资源
  • 多个虚拟机将配置两个网络接口,这两个接口都连接到我们配置的专用虚拟网络,但不在同一子网上。


为存储帐户提供示例数据


Azure DataBricks群集将使用位于专用存储帐户中的示例数据。此存储帐户将是:

  • 在与Azure DataBricks工作区和集群相同的Azure订阅中创建
  • 在与Azure DataBricks工作区和集群相同的Azure区域中创建
  • 使用配置为禁用的“允许Blob公共访问”选项创建
  • 将名为demo的容器配置为公共访问级别,配置为Private
  • 1000_销售_录制s.csv文件


文件上传到演示容器后,单击上传文件的Generate SAS选项,如下所示:

保留Blob SAS令牌。此令牌稍后将在文档中用作存储帐户的访问密钥。

具有专用终结点的安全存储帐户


Azure DataBricks群集不会公开访问存储帐户,而是使用专用终结点。我们可以将Private Link与虚拟机的网络接口进行比较。我们将创建一个专用端点,连接到我们在本文档开头配置的虚拟网络的子网。专用端点配置记录在下表中:

Parameter Configuration
Subscription Same subscription as Azure DataBricks
Azure region Same region as Azure DataBricks
Connection method Connect to an Azure resource in my Directory
Resource subscription Same subscription as Azure DataBricks
Resource type Microsoft.Storage/StorageAccounts
Resource Name to storage account created in previous step
Target Sub-Resource Blob

私有端点配置的最后一步是将其链接到第一步创建的Azure DataBricks专用虚拟网络。网络配置记录在下表中:

Parameter Configuration
Virtual Network Virtual Network created for DataBricks solution
Subnet Dedicated subnet distinct from public and private subnets created for DataBricks
Integrate with Private DNS zone Yes
DNS zone Created in the same Azure subscription

确保新创建的名为privatelink.blob.core.windows.net的专用DNS区域配置了虚拟网络链接,该虚拟网络链接是在第一步创建的,如下所示:

创建专用终结点,建立与相关Azure资源的链接。访问资源需要获得批准。批准可以是:

  • 自动
  • 手册


当您是Azure资源的所有者时,审批是自动的。如果您使用Azure订阅中的资源创建专用终结点,则会出现这种情况。如果不管理此资源,则资源的所有者需要批准专用终结点才能完成设置。如果您的资源位于另一个Azure订阅中,则会出现这种情况。

创建私有端点资源后,Azure资源所有者需要在Azure门户的Azure PrivateLink中心或Azure资源级别验证此请求。在下图中,Azure资源所有者有一个待处理的请求需要验证。Azure资源所有者需要仔细查看此请求,因为私有端点资源可以位于任何Azure订阅中。

Azure资源所有者应只接受他们信任的Azure订阅的私有终结点。Azure资源所有者应仅批准来自Azure订阅的与泰雷兹数字工厂相关的具有相同安全级别的请求。严禁从链接到Azure C3强化订阅中资源的C2 Azure强化订阅信任私有端点。

验证DataBricks群集的DNS解析
Azure DataBricks群集虚拟机将使用虚拟网络提供的DNS解析。请返回Azure DataBrick管理门户,使用创建笔记本选项,并使用下表中记录的以下选项:

Parameter Configuration
Default Language Scale
Cluster Cluster name previously created


Type the following commands in the interface : %sh nslookup <name of your storage account>.privatelink.blob.core.windows.net


 

默认Azure DNS(168.63.129.16)应提供正向DNS解析。权威答案应提供为Azure DataBricks解决方案提供的虚拟网络中的IPv4地址。

将文件装载到Azure DataBricks


在最后一步中,我们将使用笔记本使用以下命令将Azure容器的内容装载到Azure DataBricks中:val containerName=“demo”

val storageAccountName = "<Your Storage Account>"
val sas = "Shared Access token created for the file"
val config = "fs.azure.sas." + containerName+ "." + storageAccountName + ".blob.core.windows.net"
dbutils.fs.mount(source = "wasbs://<Storage Account Container>@<Storage Account Name>.blob.core.windows.net/1000_Sales_Records.csv",
 mountPoint = "/mnt/myfile",extraConfigs = Map(config -> sas))

 

Process should take a new seconds. You should see :

  • A job was created to process the operation
  • This Job status was Succeeded

If mount was successful, we should be able to access file content using the following command:

val mydf = spark.read
.option("header","true")
.option("inferSchema", "true")
.csv("/mnt/myfile01")
display(mydf)

 

You should be able to see the following content:

 

其他节点


在存储帐户级别强制执行安全性


从技术角度来看,可以通过配置允许访问所选网络来强制执行存储帐户的安全级别。使用专用终结点执行的与存储帐户的连接不会受到影响,但访问存储帐户数据平面的唯一方法是为存储帐户服务配置服务端点或创建连接到tdp-he-vnet虚拟网络的专用终结点。

泰雷兹DataLake用例


此DataBrick设置也可用于访问泰雷兹数字工厂提供的DataLake服务。对于这种情况,我们只做了一些小的更改:

  • 私有端点批准
  • 使用服务主体进行身份验证
  • 更改笔记本验证顺序


在创建引用泰雷兹数字工厂使用的存储帐户的专用端点时,没有自动批准(TDF DataLake团队拥有存储帐户,而不是您)。您的私有终结点将被视为处于挂起状态,等待TDF DataLake团队批准。TDF DataLake团队只能批准您的私有端点,前提是它符合一个简单的规则:此私有终结点必须在C3 Azure强化订阅中创建(不允许从任何其他订阅类型创建)。

出于安全考虑,TDF DataLake团队不允许SAS密钥身份验证机制使用他们的服务。您必须依赖服务主体/AAzure托管身份,并请求允许此身份访问数据平面级别的TDF DataLake存储帐户。

最后,您必须调整本文档中提供的笔记本示例,如下所述:

 

val configs = Map(
"fs.azure.account.auth.type" -> "OAuth",
"fs.azure.account.oauth.provider.type" -> "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id" -> "<Azure AD Application Client ID Secret>"
"fs.azure.account.oauth2.client.secret" -> "<Azure AD Application Secret>"
"fs.azure.account.oauth2.client.endpoint" -> "https://login.microsoftonline.com/<Azure AD Tenant ID>/oauth2/token" )
dbutils.fs.mount(
source = "abfss://<Storage Account Container name>@<Azure AD Storage Account Name>@dfs.core.windows.net/<File>"
MountPoint = "/mnt/<Local mount name>",
extraConfigs = configs

安全考虑


创建专用端点资源时,请确保选择位于订阅中的资源。在这种情况下,私有端点配置将自动获得批准。对于TDF场景,我们将仅支持此场景。将禁止与不在Azure强化订阅中的资源建立信任关系。

结论


因此,我们可以通过未连接到同一虚拟网络的Azure DataBricks实例来处理存储在具有C3 Azure强化订阅的存储帐户中的数据。当DataBricks群集访问存储帐户时,我们使用的是Microsoft骨干网,因此不会在互联网上公开。

本文地址
最后修改
星期四, 十二月 5, 2024 - 14:17
Article