如何使自定义角色的范围在 Azure 中成为资源组?



我已经编写了用于创建用户,资源组和角色定义的terraform。

我需要使资源定义的范围是我创建的资源组。

我不知道该怎么做。如果有人能在这方面提供帮助,那就太好了。

########### for creating user ####
# Configure the Azure Provider
provider "azurerm" {
version = "~> 1.30"
subscription_id="723604be-b74b-4473-9d11-1802dbfdb787"
}
provider "azuread" {
version = "~> 0.4"
subscription_id="723604be-b74b-4473-9d11-1802dbfdb787"
}
resource "azuread_user" "test" {
user_principal_name = "user1@catch.whizlabstesting.com"
display_name        = "User1"
mail_nickname       = "User1"
password            = "Muneeshpandi@17"
force_password_change = "false"
}
##### creating resource group #####
resource "azurerm_resource_group" "terraform_rg" {
name = "user1_rgp"
location = "East US"
}
########## creating role definition ##########
data "azurerm_subscription" "primary" {}
resource "azurerm_role_definition" "sql_role" {
name        = "sql_role"
scope       = "data.azurerm_subscription.primary.id"
description = "This is a custom role to create sql database"
permissions {
actions     = ["*"]
not_actions = []
}
assignable_scopes =  [
"/subscriptions/723604be-b74b-4473-9d11-1802dbfdb787/resourceGroups/user1_rgp"
]
}

执行上述代码时出现以下错误:

错误:授权。角色定义客户端#创建或更新:响应请求失败:状态代码 = 404 -- 原始错误:autorest/azure:服务返回错误。状态 = 404 代码="缺少订阅" 消息="请求没有订阅或有效的租户级别资源提供程序。

如何使自定义角色的范围在 Azure 中成为资源组?

若要为资源组创建自定义角色,需要具有权限Microsoft.Authorization/roleDefinitions/write,要将自定义角色分配给用户,需要具有权限Microsoft.Authorization/roleAssignments/write。最简单的方法是你具有订阅的Onwer角色。

若要创建 Azure AD 用户,请执行以下操作:

要添加或删除用户,您必须是用户管理员或全局 管理员。

当您拥有所有必需的权限时。让我们专注于您的代码。还需要将自定义角色分配给使用资源组范围创建的用户。然后你可以像这样更改代码:

resource "azurerm_role_definition" "sql_role" {
name        = "sql_role"
scope       = data.azurerm_subscription.primary.id
description = "This is a custom role to create sql database"
permissions {
actions     = ["*"]
not_actions = []
}
assignable_scopes =  [
data.azurerm_subscription.primary.id
]
}
resource "azurerm_role_assignment" "example" {
scope              = azurerm_resource_group.terraform_rg.id
role_definition_id = azurerm_role_definition.sql_role.id
principal_id       = azuread_user.test.id
}

如果只希望自定义可用于资源组,则可以将资源组 Id 更改为azurerm_resource_group.terraform_rg.idassignable_scopes

最新更新