【发布时间】:2019-01-09 16:03:45
【问题描述】:
这是来自git的交叉帖子。
我有一个使用“Microsoft.Azure.Services.AppAuthentication”版本=“1.2.0-preview”和“Microsoft.Azure.KeyVault”版本=“3.0.2”的控制台应用程序。
我的 Windows 2019 VM 上有一个用户分配的托管标识。
已在我的 keyvault 上为托管身份分配了参与者角色分配,并读取到它所在的资源组。
我正在使用用户分配的托管身份,因为目的是在 kubernetes pod(使用 aad-pod 身份)中运行类似的应用程序。我有一个连接字符串环境变量设置为 AzureServicesAuthConnectionString RunAs=App;
当我尝试连接到 keyvault 以检索机密时,我得到了一个 Forbidden 异常:
未处理的异常:System.AggregateException:一个或多个错误 发生了。 (操作返回一个无效的状态码'Forbidden')---> Microsoft.Azure.KeyVault.Models.KeyVaultErrorException:操作 在返回无效状态代码“禁止” Microsoft.Azure.KeyVault.KeyVaultClient.GetSecretWithHttpMessagesAsync(字符串 vaultBaseUrl,字符串 secretName,字符串 secretVersion,字典`2 customHeaders, CancellationToken cancelToken) 在 Microsoft.Azure.KeyVault.KeyVaultClientExtensions.GetSecretAsync(IKeyVaultClient 操作、字符串 secretIdentifier、CancellationToken cancelToken) 在 msiauth.AzureStuff.Run() 中 C:\Users\aiadmin\src\azure\msiauth\tests.cs:第 50 行 --- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken 取消令牌)在 System.Threading.Tasks.Task.Wait() 在 msiauth.Program.Main(String[] args) 在 C:\Users\aiadmin\src\azure\msiauth\Program.cs:line 10
当我尝试使用“Microsoft.Azure.Management.ResourceManager”版本=“2.0.0-preview”创建资源组时,它工作正常,因此分配给用户的 MI 可以正常工作。
我尝试了完全相同的 keyvault 代码,但使用了系统分配的托管标识,它工作正常,因此权限很好,代码也可以工作。
有没有人能够在 .net core 中做到这一点?
【问题讨论】:
标签: azure azure-sdk-.net