带有电子邮件地址的 Terraform azurerm 角色定义

问题描述

我正在使用 terraform 将资源部署到 Azure。我想使用 AD 用户的电子邮件地址为他们分配角色。在 azurerm_role_assignment 资源中,只能使用用户的对象 id。我用电子邮件尝试过,但逻辑上失败了。

resource "azurerm_role_assignment" "example" {
  scope                = data.azurerm_subscription.primary.id
  role_deFinition_name = "Reader"
  principal_id         = data.azurerm_client_config.example.object_id
}

使用 az powershell,可以使用用户登录名分配角色:New-AzRoleAssignment -SignInName <userupn>

有没有办法用 terraform 做到这一点?

解决方法

我找到了答案。数据 azuread_users 可用作解决方案:

data "azuread_users" "users" {
  user_principal_names = ["[email protected]"]
}

resource "azurerm_role_assignment" "rbac_wvd" {
  scope                = data.azurerm_subscription.primary.id
  role_definition_name = "Reader"
  principal_id         = data.azuread_users.wvd_user.object_ids[0]
}