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

Azure DevOps管道中单元测试访问Azure App Configuration的最佳认证方案

最佳认证方式:托管标识(Managed Identity)

对于Azure Pipeline中运行的单元测试访问Azure App Configuration,托管标识是绝对最优的选择——它完全规避了密钥管理的风险,符合Azure安全最佳实践,且配置后几乎无需维护。

为什么选托管标识?

  • 无需硬编码、存储或传递任何密钥/连接字符串到Pipeline或测试代码中,从根源杜绝密钥泄露可能
  • 身份生命周期由Azure自动管理,密钥自动轮换,不用手动操作
  • 可通过Azure RBAC精准控制权限,比如只给单元测试所需的App Configuration Data Reader最小权限

具体配置与使用步骤

1. 创建并配置用户分配托管标识

推荐用用户分配托管标识(比系统分配更灵活,适合多Pipeline共享或权限隔离):

  • 在Azure门户创建用户分配托管标识,命名比如UnitTest-AppConfig-Reader
  • 进入你的Azure App Configuration资源,到「访问控制(IAM)」页面,添加角色分配:
    • 角色选App Configuration Data Reader
    • 成员类型选「托管标识」,然后选择刚才创建的标识

2. 在Azure Pipeline中启用托管标识访问

编辑Pipeline YAML,确保任务能使用托管标识:
如果用Azure CLI任务运行单元测试,可直接关联带托管标识的服务连接:

- task: AzureCLI@2
  inputs:
    azureSubscription: '你的服务连接名称(需关联用户分配托管标识)'
    scriptType: 'bash'
    inlineScript: |
      # 运行单元测试命令,比如dotnet test
      dotnet test --configuration Release

如果用其他任务,可通过DefaultAzureCredential自动获取标识令牌,无需额外配置环境变量。

3. 单元测试代码中集成托管标识

以.NET为例,用Azure官方SDK自动获取标识令牌访问App Configuration:

using Azure.Identity;
using Azure.AppConfiguration;
using Xunit;

public class AppConfigTests
{
    [Fact]
    public void CanRetrieveConfigValue()
    {
        var configUri = "https://你的AppConfig名称.azconfig.io";
        var client = new ConfigurationClient(new Uri(configUri), new DefaultAzureCredential());
        
        var setting = client.GetConfigurationSetting("TestKey");
        Assert.NotNull(setting.Value);
    }
}

DefaultAzureCredential会自动识别Azure Pipeline环境,使用托管标识获取访问令牌,无需手动传入任何凭据。


不推荐的替代方案

如果临时无法使用托管标识,也可以将App Configuration的连接字符串存为Azure Pipeline的安全变量,在测试代码中读取该变量。但这种方式需要手动轮换密钥,且存在变量泄露风险,仅作为临时过渡方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:12:37