You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁用共享密钥访问后无法管理ADLS Gen2的ACL:是特性还是Bug?如何实现管理?

禁用存储账户密钥后,ADLS Gen2 ACL管理的问题解答

这是产品特性还是Bug?

这是当前的产品设计特性,并非Bug。虽然Azure一直强调优先使用Azure AD和RBAC/ACL进行权限管理,而非共享账户密钥,但目前Azure门户内的ACL编辑功能底层仍依赖存储账户密钥完成认证——哪怕你在浏览存储数据时可以切换到Azure AD身份验证,但ACL管理的入口暂未适配Azure AD认证流程,所以禁用密钥后就会触发权限报错。

禁用共享密钥后,如何管理ADLS Gen2的ACL?

你可以通过以下几种方式绕过存储密钥,用Azure AD身份验证来管理ACL:

1. Azure CLI命令行

使用az storage fs access set-acl命令,通过--auth-mode login参数指定用当前登录的Azure AD账户权限操作,完全不需要存储密钥。示例:

# 为指定用户设置目录的读写执行权限
az storage fs access set-acl -n my-file-system --path /my-directory --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" --auth-mode login

只要你的Azure AD账户拥有Storage Blob Data Owner或Storage Blob Data Contributor这类具备ACL管理权限的角色,就能成功执行。

2. Azure PowerShell

用PowerShell的ADLS Gen2专用 cmdlet,同样基于Azure AD身份验证:

# 先创建ACL规则对象
$aclRule = New-AzDataLakeGen2ItemAclObject -AccessControlType User -EntityId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Permission rwx

# 更新目标路径的ACL
Update-AzDataLakeGen2Item -FileSystem my-file-system -Path /my-directory -Acl $aclRule

执行前确保已经通过Connect-AzAccount登录了Azure AD,且账户权限足够。

3. Azure SDK(多语言支持)

如果需要集成到应用程序里,可以用Azure官方SDK,通过DefaultAzureCredential自动获取Azure AD身份令牌来认证。比如Python示例:

from azure.storage.filedatalake import DataLakeServiceClient
from azure.identity import DefaultAzureCredential

# 初始化服务客户端(自动用Azure AD身份验证)
account_url = "https://mystorageaccount.dfs.core.windows.net"
service_client = DataLakeServiceClient(account_url, credential=DefaultAzureCredential())

# 获取目录客户端并设置ACL
fs_client = service_client.get_file_system_client("my-file-system")
dir_client = fs_client.get_directory_client("my-directory")
dir_client.set_access_control(acl="user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx")

.NET、Java等其他语言的SDK也有类似的实现方式。

4. Azure Storage Explorer

图形化工具的话,Azure Storage Explorer支持纯Azure AD身份验证,且能在禁用存储密钥的情况下编辑ACL:

  • 打开Storage Explorer,用你的Azure AD账户登录
  • 找到目标ADLS Gen2存储账户和文件系统
  • 右键点击要修改的目录/文件,选择「Manage Access Control Lists」
  • 在弹出的窗口中添加/编辑ACL规则,保存即可

额外提示

微软正在逐步推进Azure AD在ADLS Gen2全操作场景的覆盖,未来Azure门户的ACL管理功能大概率会支持Azure AD认证,但目前只能通过上述替代方案操作。另外,务必确保操作的Azure AD账户拥有对应路径的ACL管理权限——最直接的是分配Storage Blob Data Owner角色,或者通过现有ACL赋予该账户对目标路径的w(写入)权限。

内容的提问来源于stack exchange,提问作者Martin Thøgersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:39:06