在 Terraform 中使用时,Azure 服务主体获得 "Authorization_RequestDenied"

Azure Service Principal gets "Authorization_RequestDenied" when used in Terraform

我有一个服务主体,它在 运行我的 Terraform 脚本时使用,它可以完成我需要做的 99% 的工作。但是,然后我需要 运行 以下脚本与 terraform 来更新应用程序注册上的 属性 - 因为这是唯一可以完成的方法(此处供参考 - https://github.com/hashicorp/terraform-provider-azuread/issues/188)。

resource "null_resource" "access_token_accepted_version" {
   depends_on = [
   azuread_application.appname
]
provisioner "local-exec" {
command = <<EOF
  az login --service-principal --username ${var.az_client_id} --password 
${var.az_client_secret} --tenant ${var.az_tenant_id}
  az rest \
    --method PATCH \
    --headers "Content-Type=application/json" \
    --uri "https://graph.microsoft.com/v1.0/applications/${azuread_application.appname.id}" \
    --body '{"api":{"requestedAccessTokenVersion":2}}'
EOF
  }
}

Az登录部分好像运行成功了,但是之后调用PATCH总是会报下面的错误-

ERROR: Forbidden({"error":{"code":"Authorization_RequestDenied","message":"Insufficient privileges to complete the operation."

我想有一个权限可以添加到服务主体的关联应用程序注册中,但我找不到合适的权限。这是我目前拥有的(有些是需要的,有些是在黑暗中刺伤的)

有人能想出办法解决这个问题吗?

您需要在 Microsoft Graph 下授予 Application.ReadWrite.All 权限。目前您已在 Azure Active Directory Graph.

下授予该权限

一旦你这样做,你就不应该得到这个错误。