使用az storage entity query时--auth-mode login授权失败原因
问题场景
执行命令az storage entity query --account-name acc1 --table-name table1可成功获取查询结果,但收到警告:未提供凭据将查询存储账户密钥,建议提供连接字符串、账户密钥或SAS令牌,或添加--auth-mode login(需分配对应RBAC角色)。添加--auth-mode login后执行命令,出现权限不足错误,提示需分配“Storage Table Data Reader”等指定RBAC角色。疑问:为何无该参数时能成功,添加后授权失败?
原因解析
无
--auth-mode login时的授权逻辑
不指定该参数时,Azure CLI会默认尝试读取目标存储账户的访问密钥,用密钥完成身份验证和授权。只要你当前登录的Azure账号拥有读取存储账户密钥的权限(比如被分配了Storage Account Contributor这类包含密钥读取权限的角色),就能顺利拿到密钥并访问表数据,不需要专门的表数据RBAC角色。但这种依赖密钥的方式不是Azure推荐的RBAC授权模式,所以会弹出警告提示你改用更安全规范的--auth-mode login方式。添加
--auth-mode login后的授权逻辑
这个参数会强制CLI切换为Azure AD RBAC授权模式,此时不再读取存储账户密钥,而是直接使用你当前登录账号的Azure AD权限来访问表数据。这种模式下,必须给账号分配针对存储表的具体数据权限,比如Storage Table Data Reader(只读访问)或Storage Table Data Contributor(读写访问)这类角色。如果你的账号没有被分配这些角色,就会触发权限不足的错误。
内容的提问来源于stack exchange,提问作者Allan Xu

