用于连接和查询的 Azure Synapse Analytics Serverless Pool 的 ADLS 访问控制问题

问题描述

我有一个 Azure 分析无服务器池(我是管理员) 对于特定的文件夹列表,我还可以通过 ACL(访问控制列表)访问 ADLS Gen-2 [在下图中 - 所有绿色框代表我拥有的访问权限]

enter image description here

我在 Synapse Studio(无服务器池)上运行 sql 语句

选择 前 100 名 * 从 开路集( 批量“https://SAFINCAL.dfs.core.windows.net/Container-2/Post-Sale/shipments/2021/*.parquet”, 格式='镶木地板' ) AS [结果]

我收到以下错误消息

从第 1 行开始执行查询

文件“https://SAFINCAL.dfs.core.windows.net/Container-2/Post-Sale/shipments/2021/*.parquet”无法打开,因为它不存在或被另一个进程使用. 访问这篇文章以了解有关此错误的更多信息 总执行时间:00:00:12.269

文章指向https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/resources-self-help-sql-on-demand#query-fails-because-file-cannot-be-opened

文章中提出的解决方案是让自己成为“Storage Blob Data Contributor”。我的问题是——如果我让自己成为“存储 Blob 数据贡献者”——那么我最终可能会获得对整个容器的访问权限,这违背了在文件夹级别授予 ACL 访问权限的目的(绿色突出显示的框)

enter image description here

这是正确的理解吗?如果是 - 我如何确保我仍然可以从 Azure Synapse Analytics Serverless 池中查询“shipments”文件夹中的数据,而无需将自己添加为整个容器/存储帐户的贡献者/读者

谢谢

解决方法

我对 Azure 分析无服务器池不熟悉,但我认为它可能与 Azure SQL 相同。出现此问题通常是因为您无权访问该文件。
所以我曾经Create an account SAS,然后使用SAS密钥访问文件。 enter image description here

,

如果您使用 ACL,则还需要对容器至少拥有“X”权限。