如何修复 Authorization_RequestDenied:权限不足,无法完成操作?

How can I fix Authorization_RequestDenied: Insufficient privileges to complete the operation?

我创建了一个具有 Owner 角色的服务主体:

➜  ~ az account set --subscription="47a..."
➜  ~ az ad sp create-for-rbac --role="Owner" --scopes="/subscriptions/47a...

然后我复制了

{
  "appId": "bc8a...",
  "displayName": "azure-cli-2022-04-25-23-55-25",
  "password": "...",
  "tenant": "..."
}

azuread TF Provider 的授权参数,具有以下代码:

data "azuread_service_principal" "peering_creator" {
  # Harcoded custom client_id
  application_id = "abc..."
}

并得到

Error: Listing service principals for filter "appId eq '...'"

  on main.tf line 248, in data "azuread_service_principal" "peering_creator":
 248: data "azuread_service_principal" "peering_creator" {

ServicePrincipalsClient.BaseClient.Get(): unexpected status 403 with OData
error: Authorization_RequestDenied: Insufficient privileges to complete the
operation.

Terraform 不支持通过 Azure CLI 使用服务主体进行身份验证;您需要通过环境变量或在 Provider 块中指定凭据。

此外,如 azurerm_azuread_application page 中所列 - 使用的服务主体需要对 Azure Active Directory(与 Azure 订阅无关)具有适当的权限:

注意:如果您使用服务主体进行身份验证,那么它必须具有读取和写入所有应用程序以及登录和读取 [=21] 中的用户配置文件的权限=] Azure 活动目录 API.

如果您更新此服务主体的权限,那么应该可以创建应用程序。