首页 > 解决方案 > 如何为现有 Azure Service Fabric 群集启用用户分配的托管标识并连接到 Azure Key Vault 以读取机密?

问题描述

拥有一个现有的 Azure 服务结构实例,该实例托管除我们的应用程序之外的多个应用程序。目前,托管在 Azure 服务结构上的应用程序正在使用 Azure AD 应用程序使用证书连接到 Keyvault。

希望通过使用托管标识连接到 Azure Key Vault 进行升级。但是启用系统分配的托管标识不是选项,因为目标 Azure 服务结构实例不仅仅专用于我们的应用程序,而是一个共享环境,它也托管其他项目的多个应用程序。

所以其他选项是启用用户分配的托管身份。

但是,如何通过 Power-shell 或其他最简单的方式在现有 Azure 服务结构实例上启用用户分配的托管标识?

现有 Azure 服务结构实例上的应用程序如何以编程方式 (c#) 对 Azure Key Vault 实例进行身份验证以访问其机密?

标签: azureazure-active-directoryazure-service-fabricidentityazure-managed-identity

解决方案


如何通过 Power-shell 或其他最简单的方式在现有 Azure 服务结构实例上启用用户分配的托管标识?

如果要在服务结构中使用用户分配的 MSI,有两种方法:

  1. Azure Service Fabric 群集托管在虚拟机规模集上,因此您可以通过powershell门户利用 VMSS 的 MSI(参考此处) 。

  2. 首先在集群上启用 Managed Identity Token Service,然后使用 User-Assigned Managed Identity 部署 Service Fabric 应用程序,它们目前只能通过 ARM 模板使用。

现有 Azure 服务结构实例上的应用程序如何以编程方式 (c#) 对 Azure Key Vault 实例进行身份验证以访问其机密?

要访问 azure keyvault secret,您可以使用ManagedIdentityCredentialto Azure.Identityauth,确保您已将MSI 添加到 keyvault 的访问策略中

var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential: new ManagedIdentityCredential());
KeyVaultSecret secret = client.SetSecret("secret-name", "secret-value");
secret = client.GetSecret("secret-name");

在此处此处查看示例。


推荐阅读