我想通过托管服务身份 (MSI) 从 Service Fabric 应用程序访问 Key Vault。我已在 Azure 门户中的虚拟机规模集上启用 MSI,并授予其对我的 Key Vault 资源的访问权限。这就像云端的魅力一样。但是,我的本地开发环境存在问题。
据我了解,我可以授予自己访问 Key Vault 的权限并运行az login
在 Azure CLI 中。遗憾的是,当在本地 Service Fabric 群集中运行应用程序时,这不起作用。我认为这是因为本地集群在 NETWORK SERVICE 帐户下运行。
如何使用 MSI 从本地集群访问 Key Vault?
我假设你正在使用Microsoft.Azure.Services.AppAuthentication 库使用 MSI 获取令牌以对 Key Vault 进行身份验证,这在 Azure 上有效。如果是这样,您可以在本地开发环境中运行相同的代码。该库将自动切换为使用 Azure 上的 MSI。你可以找到文档here
注意:开发在当前用户下运行的应用程序时,MSI 场景的本地开发要容易得多,例如应用服务。在这种情况下,您可以使用 Azure CLI/Visual Studio 帐户进行本地开发。您不需要创建单独的服务主体。 Azure CLI/Visual Studio 不适用于 Service Fabric 本地开发,因为本地群集在网络服务帐户下运行。
对于Service Fabric场景,请按照以下步骤操作:
-
创建服务主体并授予对 Key Vault 的访问权限。
你有两个选择。证书的安全性更好,但做起来稍微困难一些。
选项1:使用证书创建服务主体。确保您提供网络服务帐户或用于运行结构本地访问证书的任何帐户。详情请参阅关于如何授予访问权限。
OR
选项2:创建带有密码的服务主体
-
创建一个名为“AzureServicesAuthConnectionString”的环境变量。参考这个关于为服务结构创建环境变量。
如果使用证书,请将“AzureServicesAuthConnectionString”设置为
RunAs=应用程序;AppId={AppId};TenantId={TenantId};CertificateThumbprint=
{Thumbprint};CertificateStoreLocation={LocalMachine 或 CurrentUser}
如果使用密码,请将“AzureServicesAuthConnectionString”设置为
RunAs=应用程序;AppId={AppId};TenantId={TenantId};AppKey={ClientSecret}
如果上述步骤不起作用,请发布您收到的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)