使用MSI从本地Service Fabric群集访问Key Vault

Mik*_*kko 5 azure azure-service-fabric azure-keyvault azure-managed-identity

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

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

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

Var*_*rma 4

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

\n\n
\n

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

\n
\n\n

对于Service Fabric场景,请按照以下步骤操作:

\n\n
    \n
  1. 创建服务主体并授予对 Key Vault 的访问权限。\n你有两个选择。证书的安全性更好,但做起来稍微困难一些。

    \n\n

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

    \n\n

    或者

    \n\n

    选项 2:创建带有密码的服务主体

  2. \n
  3. 创建名为 \xe2\x80\x9cAzureServicesAuthConnectionString\xe2\x80\x9d 的环境变量。\n请参阅有关为服务结构创建环境变量的信息。

    \n\n

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

    \n\n
    \n

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

    \n
    \n\n

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

    \n\n
    \n

    RunAs=应用程序;AppId={AppId};TenantId={TenantId};AppKey={ClientSecret}

    \n
  4. \n
\n\n

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

\n