首先是一些背景:我想方便访问Azure data Lake gen 2中的不同数据科学家组。然而,我们不想让他们访问整个数据湖,因为出于安全原因,他们不应该看到所有数据。他们必须只能看到一些有限的文件/文件夹。我们通过将数据科学家的AAD组添加到数据湖文件夹的ACL中来做到这一点。您可以参考以下链接以获得更多见解并了解我在说什么:https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-access-control
现在的问题是:由于数据科学家被授予访问非常特定/有限区域的权限,他们可以使用Azure数据块(python命令/代码等(访问/浏览这些文件夹/文件。然而,他们无法使用Azure Storage Explorer进行浏览。那么,有没有什么方法可以让他们使用Azure存储资源管理器或其他GUI工具浏览数据采集。或者,是否有可能为这种情况创建一些自定义角色,并将该角色授予数据科学家AAD小组,以便他们可以只访问特定区域(即,可以创建的自定义角色,只对ADLS gen 2文件系统具有"执行"访问权限。(
截至目前(2023年8月(,在没有RBAC的情况下使用ACLS确实有效。。。我说不出以前是否没有。
上下文:
- 存储帐户的公共访问已关闭
- 已启用-从选定的虚拟网络和IP地址启用
- 已启用-允许受信任服务列表上的Azure服务访问此存储帐户
- 已选择Microsoft网络路由
- 添加了客户Vnet所在的现有虚拟网络/子网
一开始我不认为它会这样做,因为它对你如何做很挑剔,但它只需要以下内容:
- 将默认为的EXECUTE ACL添加到容器,并将所有子文件夹添加到客户将访问的文件夹级别。(请确保您添加的是类型=安全的组或个人AAD用户!(
- 在您希望客户进行文件管理的文件夹中添加所需的任何ACL(我授予读取/执行/写入权限,默认情况下与相同(
- 让客户使用存储资源管理器从具有到存储帐户vnet的网络路由的Azure设备连接到容器URL
- 让他们打开连接对话框-选择ADLS Gen2容器或目录-使用OAuth登录(这实际上是AAD,是最终用户访问的首选方法(
- 选择他们的帐户并创建保存的连接信息。使用URL向下到特定文件夹名称!你可以只使用容器,但如果没有对上层文件夹的读取访问权限,他们就看不到子文件夹,所以他们必须手动放在URL末尾的子文件夹中(
据我所知,我们无法使用RBAC角色来控制对文件系统(容器(中某些文件夹的访问。因为当我们将角色分配给AAD组时,我们需要定义一个范围。Azure数据湖第二代中最小的作用域是文件系统(容器(。如果你只想控制对它的访问,你不需要创建自定义角色,你可以直接使用内置角色Storage Blob Data Reader
。如果一个用户具有该角色,他可以读取文件系统中的所有文件。有关更多详细信息,请参阅文件
只有分配了ACL权限,才能通过Storage Explorer访问数据。不幸的是,您需要将ACL与在存储帐户级别上分配的RBAC角色(例如读卡器(结合使用,才能从存储资源管理器中查看存储帐户本身。然后,您可以使用ACL在特定容器/文件夹/文件上引入细粒度权限,但使用Reader,他们仍然可以查看存储帐户中所有容器的名称(但在通过容器级别的ACL或数据RBAC分配指定之前,无法查看容器内容(。正如您所注意到的,仅使用ACL权限访问特定文件夹/文件的唯一选项是通过代码,例如Powershell或Python。