11

我想通过托管服务标识 (MSI) 从我的 Service Fabric 应用程序访问 Key Vault。我已在 Azure 门户中的虚拟机规模集上启用 MSI,并授予它访问我的 Key Vault 资源的权限。这就像云中的魅力一样。但是,我的本地开发环境存在问题。

据我了解,我可以授予自己对 Key Vault 的访问权限并az login在 Azure CLI 中运行。唉,这在本地 Service Fabric 群集中运行应用程序时不起作用。我认为这是因为本地集群在 NETWORK SERVICE 帐户下运行。

如何使用 MSI 从本地群集访问 Key Vault?

4

2 回答 2

4

我假设您正在使用Microsoft.Azure.Services.AppAuthentication 库来获取使用 MSI 对 Key Vault 进行身份验证的令牌,这适用于 Azure。如果是这样,您可以在本地开发环境中运行完全相同的代码。该库将自动切换到在 Azure 上使用 MSI。你可以在这里找到文档

注意:当开发在当前用户下运行的应用程序时,MSI 场景的本地开发要容易得多,例如应用程序服务。在这种情况下,您可以使用 Azure CLI/Visual Studio 帐户进行本地开发。您不需要创建单独的服务主体。Azure CLI/Visual Studio 不适用于 Service Fabric 本地开发,因为本地群集在网络服务帐户下运行。

对于 Service Fabric 方案,请按照以下步骤操作:

  1. 创建服务主体并授予对 Key Vault 的访问权限。你有两个选择。证书在安全性方面更好,但稍微难做。

    选项 1:使用证书创建服务主体。确保您为网络服务帐户或用于在本地运行结构的任何帐户提供对证书的访问权限。有关如何授予访问权限的详细信息,请参阅。

    或者

    选项 2:使用密码创建服务主体

  2. 创建一个名为“AzureServicesAuthConnectionString”的环境变量。 有关为服务结构创建环境变量的信息,请参阅此内容。

    如果使用证书,请将“AzureServicesAuthConnectionString”设置为

    RunAs=App;AppId={AppId};TenantId={TenantId};CertificateThumbprint= {Thumbprint};CertificateStoreLocation={LocalMachine 或 CurrentUser}

    如果使用密码,请将“AzureServicesAuthConnectionString”设置为

    RunAs=App;AppId={AppId};TenantId={TenantId};AppKey={ClientSecret}

如果上述步骤不起作用,请发布您收到的错误。

于 2018-04-18T20:19:22.967 回答
0

托管服务标识专注于在 Azure 上运行的资源。我们没有办法支持本地开发环境。

谢谢,-阿图罗

于 2018-04-17T20:33:08.047 回答