跨Azure账户使用用户分配托管身份:DefaultAzureCredential认证咨询
问题解答
DefaultAzureCredential的认证逻辑(本地Visual Studio场景)
在你配置了ManagedIdentityClientId的情况下,DefaultAzureCredential会按优先级尝试认证方式,但在本地Visual Studio环境中:
- 首先尝试用户分配托管身份认证:但托管身份是Azure云资源的专属身份机制,本地开发环境没有对应的运行载体,这一步会直接失败。
- 自动降级到下一个优先级的认证方式:使用你当前Visual Studio登录的B@hotmail.com账户的凭据,以该账户的权限尝试访问存储账户。
简单来说,本地运行时你指定的托管身份根本不会生效,实际起作用的是你Visual Studio中登录的B账户。
关于B账户能否通过A创建的托管身份ClientID操作
答案是不行,核心原因有两点:
- 托管身份的权限是和Azure资源绑定的(比如你的Azure函数),只有当代码运行在绑定了该托管身份的Azure环境中时,才能通过ClientID调用它的权限。本地环境没有这个绑定关系,无法触发托管身份认证。
- 如果想让B账户访问目标存储账户,要么直接给B账户分配存储账户的对应角色权限;要么将代码部署到绑定了该托管身份的Azure函数中运行——此时函数会使用托管身份的权限访问存储,和你本地登录的B账户完全无关。
内容的提问来源于stack exchange,提问作者Pulkit Sharma
相关产品推荐
相关产品推荐

