当 运行 作为 serviceprinciple 时,Pulumi 无法访问刚刚创建的 keyvault
Pulumi cannot access just created keyvault when running as serviceprinciple
我使用 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
creating error: checking for presence of existing Secret
"connectionstrings-blobstorageaccountkey" (Key Vault
"https://(vaultname).vault.azure.net/"):
keyvault.BaseClient#GetSecret: Failure responding to request:
StatusCode=403 -- Original Error: autorest/azure: Service returned an
error. Status=403 Code="Forbidden" Message="The user, group or
application
'appid=;oid=(objectId);iss=https://sts.windows.net/***/'
does not have secrets get permission on key vault
';location=westeurope'.
我在 Pulumi.Azure
使用“经典”(非下一代)变体
这个问题的原因是我 pulumi up
在本地使用我的个人 Azure 帐户。当 运行 pulumi up
作为服务连接之后由于不同的凭据无法访问。
当为服务使用不同的堆栈(和不同的资源)时一切正常。
因此,如果测试 pulumi 配置,如果需要权限(它们几乎永远都是),则在本地测试时应始终使用不同的堆栈。
我把这个问题留在这里,因为我怀疑会有更多人掉进同一个坑。
我使用 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 creating error: checking for presence of existing Secret "connectionstrings-blobstorageaccountkey" (Key Vault "https://(vaultname).vault.azure.net/"): keyvault.BaseClient#GetSecret: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="Forbidden" Message="The user, group or application 'appid=;oid=(objectId);iss=https://sts.windows.net/***/' does not have secrets get permission on key vault ';location=westeurope'.
我在 Pulumi.Azure
这个问题的原因是我 pulumi up
在本地使用我的个人 Azure 帐户。当 运行 pulumi up
作为服务连接之后由于不同的凭据无法访问。
当为服务使用不同的堆栈(和不同的资源)时一切正常。
因此,如果测试 pulumi 配置,如果需要权限(它们几乎永远都是),则在本地测试时应始终使用不同的堆栈。
我把这个问题留在这里,因为我怀疑会有更多人掉进同一个坑。