3. 创建第一个Azure数据共享

在理解了数据共享的提供方—使用方模型之后,接下来要完成的是第一个可用的共享。本节以“销售团队向分析团队共享每日订单明细”为教学场景,演示从 Azure Storage 账户或 Azure Data Lake Storage Gen2(以下简称 ADLS Gen2)创建共享、添加数据集并设置权限的完整过程。示例中的账户名、容器名、路径和权限均为合理假设,用于说明操作逻辑,不代表任何真实环境的实测结果。

一、先确认共享的源与目标

Azure 数据共享的源必须是受支持的存储类型。当前主要支持两类:一是启用分层命名空间的 ADLS Gen2 账户,二是普通 Blob 存储账户(含 BlockBlob)。两者在共享时的差异在于:ADLS Gen2 支持目录级共享和更细的路径控制,普通 Blob 账户通常以容器或文件夹为共享边界。因此,在创建共享前应先确认:

  • 存储账户是否已启用“分层命名空间”(即 ADLS Gen2);
  • 要共享的是整个容器、某个文件夹,还是单个文件;
  • 使用方是同一租户内的团队,还是外部租户或外部组织;
  • 共享后使用方是只读,还是需要可写。

在本例中,源为 ADLS Gen2 账户 stsalesprod01,容器 sales,共享路径为 sales/orders/daily/,使用方为分析团队,权限为只读。

二、从存储账户或 ADLS Gen2 创建共享

创建共享的入口在存储账户的“数据共享”边栏中。操作顺序如下:

  1. 在 Azure 门户中打开源存储账户 stsalesprod01,选择“数据共享” → “+ 创建共享”。
  2. 在“共享名称”中填写一个可识别的名称,例如 share-sales-daily-orders。名称只用于管理,不影响使用方访问路径。
  3. 选择“共享类型”。若账户已启用分层命名空间,可选择“ADLS Gen2”;否则选择“Blob”。本例选择 ADLS Gen2。
  4. 在“数据集”区域点击“+ 添加数据集”,选择容器 sales,再选择文件夹 orders/daily。若只共享单个文件,也可直接定位到具体文件。
  5. 设置“共享权限”。提供方侧可授予“读取”或“读取 + 写入”。本例选择“读取”。
  6. 确认“使用方”范围:同一租户内可直接指定订阅或租户;跨租户则需填写使用方的租户 ID 或邀请邮箱。
  7. 点击“创建共享”。创建完成后,共享处于“已发送”或“待接受”状态,等待使用方接受。

需要特别注意的是,共享创建后并不会自动把数据复制到使用方。数据仍保留在提供方的存储账户中,使用方通过共享挂载点以只读方式访问。因此,提供方对源数据的任何更新都会实时反映到使用方侧,这也是数据共享与数据复制最本质的区别。

三、添加数据集与权限设置的关键细节

添加数据集时,路径的粒度决定了使用方能看到的范围。若共享 sales/orders/daily/,使用方只能看到该目录及其子目录,无法访问 sales/orders/monthly/ 或容器内其他目录。这种“最小可见范围”是数据共享安全性的基础。

权限方面,提供方可以设置“读取”或“读取 + 写入”。选择“读取 + 写入”时,使用方可以在共享目录内写入新文件或修改已有文件,但无法删除共享本身或更改共享定义。若使用方需要写入,建议在共享目录内单独划分一个 incoming/ 子目录,避免与提供方原始数据混写。

此外,ADLS Gen2 共享支持“快照”选项。若希望使用方看到某一时刻的稳定数据,可在创建共享时启用快照,这样即使源数据后续发生变化,使用方仍能访问快照版本。快照会占用额外存储空间,需根据数据量和保留周期评估成本。

创建共享时,建议先以最小权限(只读)和最小路径范围进行验证。确认使用方可以正常挂载并读取后,再按需扩大路径或提升权限,避免一次性开放过多数据。

四、共享创建后的状态与验证

共享创建完成后,提供方可以在“数据共享” → “已发送的共享”中看到该共享的状态。常见状态包括:

  • 待接受:使用方尚未接受邀请;
  • 已接受:使用方已接受,可以挂载;
  • 已拒绝:使用方拒绝,提供方需重新发起或调整权限;
  • 已过期:共享超过有效期,需重新激活或重建。

验证时,提供方可以请使用方在 Azure 门户的“数据共享” → “已接收的共享”中查看该共享,并尝试将其挂载到 Databricks、Synapse 或 Azure Storage Explorer。若挂载成功且能列出 orders/daily/ 下的文件,说明共享链路已打通。若挂载失败,优先检查使用方是否已接受邀请、网络是否允许访问存储账户、以及使用方身份是否被正确授权。

从 ADLS Gen2 创建共享:数据集、权限与使用方挂载 提供方(销售团队) 存储账户 stsalesprod01 ADLS Gen2 · 分层命名空间已启用 容器 sales 共享路径 orders/daily/ 共享定义 share-sales-daily-orders 权限:读取 共享状态 待接受 → 已接受 可随时撤销或调整 共享邀请 (不复制数据) 使用方(分析团队) 已接收的共享 share-sales-daily-orders 挂载点 Databricks / Synapse / Storage Explorer 可见范围 仅 orders/daily/ 及其子目录 不可见 monthly/ 等其他目录 访问方式 只读挂载,实时读取源数据 源更新即时可见 权限与选项 读取 只读访问 读取 + 写入 可写入 incoming/ 快照 固定时点数据 有效期 到期需续期 撤销共享 立即失效 关键点:共享不复制数据,使用方通过挂载点实时读取源;路径粒度决定可见范围,权限决定可写性。

五、常见问题与排查思路

第一次创建共享时,最容易遇到三类问题。第一类是“使用方看不到共享”,通常是因为邀请尚未被接受,或使用方租户未正确配置。第二类是“挂载后无法列出文件”,常见原因是共享路径写错、使用方身份未被授权,或存储账户防火墙阻止了访问。第三类是“权限不足”,例如使用方尝试写入但共享只授予了读取权限。

排查时建议按“共享状态 → 路径 → 权限 → 网络”的顺序逐层检查。先确认共享状态为“已接受”,再核对共享路径是否与源目录完全一致,然后检查权限是否包含所需操作,最后确认存储账户的网络规则是否允许使用方所在网络访问。若使用方在外部租户,还需确认跨租户邀请是否已正确发送并接受。

共享创建后,提供方对源数据的修改会直接影响使用方看到的内容。若希望使用方看到稳定版本,应在创建共享时启用快照,或在使用方侧建立自己的副本。不要将共享目录当作隔离环境使用。

六、可复用的创建检查清单

检查项 示例值 判断标准
源存储类型 ADLS Gen2 已启用分层命名空间
共享路径 sales/orders/daily/ 路径存在且包含目标数据
共享名称 share-sales-daily-orders 可识别、不与现有共享重名
权限 读取 使用方仅需读取时选择读取
使用方范围 分析团队租户 同租户或跨租户邀请已发送
共享状态 已接受 使用方已接受邀请
挂载验证 Storage Explorer 可列出 orders/daily/ 下文件

完成以上步骤后,第一个 Azure 数据共享即已建立。此时提供方可以在“已发送的共享”中持续监控状态,使用方则可以在自己的环境中通过挂载点读取数据。后续若需要调整路径或权限,提供方可以直接修改共享定义,使用方无需重新接受邀请即可看到变化。掌握这一基本流程后,就可以进一步处理多数据集共享、跨租户协作和共享监控等更复杂的场景。