【问题标题】:Pulumi cannot access just created keyvault when running as serviceprinciple作为服务原理运行时,Pulumi 无法访问刚刚创建的密钥库
【发布时间】:2021-05-24 19:46:46
【问题描述】:

我使用 Pulumi 创建了一个 Azure KeyVault:

 var currentConfig = Output.Create(GetClientConfig.InvokeAsync());
 var keyvault = new KeyVault(vaultname, new KeyVaultArgs
{
  Name = vaultname,
  Location = _resourceGroup.Location,
  ResourceGroupName = _resourceGroup.Name,
  TenantId = currentConfig.Apply(q => q.TenantId),
  SkuName = "standard",
  AccessPolicies =
  {
    new Pulumi.Azure.KeyVault.Inputs.KeyVaultAccessPolicyArgs
    {
      TenantId=currentConfig.Apply(q=>q.TenantId),
      ObjectId=currentConfig.Apply(q=>q.ObjectId),
      KeyPermissions={"get", "create", "list"},
      SecretPermissions={"set","get","delete","purge","recover", "list"}
    }, new Pulumi.Azure.KeyVault.Inputs.KeyVaultAccessPolicyArgs    
  }
});

如您所见,我不仅创建了 KeyVault,还添加了当前的 ObjectId 作为访问策略。

紧接着我尝试向 KeyVault 添加一个条目:

new Secret("secret",new SecretArgs
{
  Name = "secret",
  Value = "value",
  KeyVaultId = keyVault.Id
});

当使用用户登录 (az login) 时,这在本地可以正常工作,但是当使用服务原则 (DevOps) 时,Vault-Creation 仍然有效,但由于权限问题,添加密码失败:

azure:keyvault:Secret connectionstrings-blobstorageaccountkey 创建错误:检查现有秘密的存在 “connectionstrings-blobstorageaccountkey”(Key Vault “https://(vaultname).vault.azure.net/”): keyvault.BaseClient#GetSecret:响应请求失败: StatusCode=403 -- 原始错误:autorest/azure:服务返回一个 错误。 Status=403 Code="Forbidden" Message="用户、组或 应用 'appid=;oid=(objectId);iss=https://sts.windows.net/***/' 没有秘密获得密钥保管库的许可 ';location=westeurope'。

我在Pulumi.Azure使用“经典”(非nextgen)变体

【问题讨论】:

    标签: c# azure pulumi


    【解决方案1】:

    这个问题的原因是我在本地使用我的个人 azure 帐户pulumi up。当将pulumi up 作为服务连接运行后,由于凭据不同,无法访问。

    当为服务使用不同的堆栈(和不同的资源)时,一切正常。

    因此,如果测试 pulumi 配置,在本地测试是否需要权限时,您应该始终使用不同的堆栈(几乎从来都是)。

    我将把这个问题留在这里,因为我怀疑会有更多人落入同一个坑。

    【讨论】:

      猜你喜欢
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多