You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Azure虚拟机规模集上的Service Fabric正确配置ARM托管标识

问题排查与解决方案

1. 验证VMSS托管标识配置有效性

  • 登录Azure门户,进入目标VMSS资源,查看标识选项卡,确认用户分配的标识已添加且状态为「已分配」
  • 使用Azure CLI验证配置:
    az vmss identity show --resource-group <你的资源组名> --name <VMSS名称>
    
    输出应包含你配置的用户分配标识的ID和ClientId

2. 检查KeyVault访问权限

  • 进入目标KeyVault的访问策略页面,添加用户分配标识,并授予所需权限(如机密的「获取」「列出」权限)
  • 确保权限配置已保存并生效

3. 确保VMSS节点可访问托管标识元数据服务

  • 托管标识依赖内部元数据服务http://169.254.169.254,需确认:
    • VMSS节点的NSG未阻止出站到169.254.169.254的流量
    • 若节点使用代理,需配置允许访问该元数据端点,或在代码中设置代理:
      var handler = new HttpClientHandler
      {
          Proxy = new WebProxy("http://your-proxy:port"),
          UseProxy = true
      };
      var credential = new ManagedIdentityCredential(new ManagedIdentityCredentialOptions { HttpClient = new HttpClient(handler) });
      

4. 优化代码中的Credential配置

  • 显式使用ManagedIdentityCredential并指定用户分配标识的ClientId,避免DefaultAzureCredential尝试无效认证方式:
    // 替换为你的用户分配标识的ClientId
    var clientId = "<用户分配标识的ClientId>";
    var credential = new ManagedIdentityCredential(clientId);
    var keyVaultClient = new SecretClient(new Uri(this.keyVaultUrl), credential);
    
  • 更新Azure.Identity NuGet包至最新版本,修复已知兼容性问题

5. 测试VMSS节点上的托管标识服务

  • 远程登录VMSS节点,执行PowerShell命令测试元数据服务:
    Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://vault.azure.net' -Headers @{Metadata="true"}
    
    • 若返回包含access_token的JSON,说明服务正常;若返回错误,尝试重启VMSS实例或重新部署VMSS

6. 确认Service Fabric应用运行上下文

  • Service Fabric默认使用LocalSystem账户运行应用,该账户有权限访问托管标识,无需额外配置;若自定义了运行账户,需确保该账户有访问托管标识的权限

内容的提问来源于stack exchange,提问作者Jordan McDonald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:19:54