【问题标题】:Insufficient privileges to complete the operation when using an Azure service principal to create Azure resources使用 Azure 服务主体创建 Azure 资源时权限不足,无法完成操作
【发布时间】:2016-02-11 02:12:17
【问题描述】:

按照this article about doing so when provisioning via TeamCity 中的建议,我想使用服务主体帐户来运行创建 Azure 资源的 Powershell 脚本

我能够创建服务主体并为其分配订阅的“所有者”角色,因此理论上它应该有权在 Azure 帐户中执行任何操作。 (我稍后会根据委托人的要求调整权限。)命令基本上如下:

Login-AzureRmAccount # using my Azure admin account
$azureAdApplication = New-AzureRmADApplication -DisplayName "Deploy" -HomePage "https://deploy" -IdentifierUris "https://deploy" -Password "password"
New-AzureRmADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
New-AzureRmRoleAssignment -RoleDefinitionName Owner -ServicePrincipalName $azureAdApplication.ApplicationId
$subscription = Get-AzureRmSubscription
$creds = Get-Credential
Login-AzureRmAccount -Credential $creds -ServicePrincipal -Tenant $subscription.TenantId

但是,当我随后运行配置资源的 Powershell 脚本时,在创建 Key Vault 时收到以下警告:

  • 权限不足,无法完成操作
  • 未设置访问策略。没有用户或应用程序有权使用此保管库。请使用 Set-AzureRmKeyVaultAccessPolicy 设置访问策略

通过我自己的管理员帐户创建 Key Vault 时,我没有收到这些警告。如何为服务主体提供足够的权限,以便能够在 Azure 订阅中创建资源而不会出现权限问题?

【问题讨论】:

    标签: azure continuous-integration teamcity


    【解决方案1】:

    这是因为您创建了服务主体而不是用户,并且正在尝试与 Azure Vault 交互。 (其他一切都应该按预期工作)

    作为用户,您可以访问 Vault,但由于您以服务主体的身份访问它,因此需要找到相关的访问策略。

    【讨论】:

    • 这是有道理的。我尝试将服务主体的访问权限添加到 Key Vault,这似乎奏效了——主体可以将机密添加到保管库,然后读取它们。你说其他一切都应该按预期工作,但有趣的是我不能使用 Principal 帐户来查询主体信息:'Get-AzureRmAdServicePrincipal -SearchString "someString"'。错误是“拒绝访问指定的 API 版本”。
    • @stevejay 啊,是的!也有那个 - 你需要使用 MSOL 将它添加到 AD - 我不记得命令,但这里有关于它的问题
    • 感谢您提供额外信息;我会调查的。
    • @stevejay 嗨,史蒂夫!在以服务主体身份登录后查询主体信息时,我遇到了同样的问题。你是怎么解决的?
    猜你喜欢
    • 2020-07-06
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2019-05-08
    • 2021-07-15
    相关资源
    最近更新 更多