Назначение случайных паролей при создании нескольких пользователей Azure Active Directory с помощью Terraform, считывающего CSV-файл.

Я пытаюсь назначить случайные пароли нескольким пользователям AAD - в файле csv - с помощью Terraform и ресурсов "azuread_user"

Во-первых, у меня есть этот CSV-файл с некоторыми пользователями:

user_name
User1
User2
User3
User4

Далее я прочитал этот файл CSV, используя:

locals {
  users = csvdecode(file("${path.module}/users.csv"))
}

Затем, используя ресурс random_password, я генерирую новый пароль:

resource "random_password" "password" {
  length           = 16
  special          = true
  override_special = "!#$%&*()-_=+[]{}<>:?"
}

Затем с помощью «azuread_user» я пытаюсь создать пользователя со сгенерированным паролем:

resource "azuread_user" "users" {
  for_each = { for user in local.users : user.first_name => user }

  user_principal_name = format(
    "%s@%s",
    each.value.user_name,
    "mydomain.com"
  )
  password = each.value.password
  display_name = "${each.value.first_name} ${each.value.last_name}"

}

Но проблема в том, что у каждого пользователя один и тот же пароль от ресурса "random_password" "пароль".

Как я могу назначить случайный пароль для каждого пользователя?

Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги &lt;ul&gt; и &lt;li&gt; для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попытался создать пользователей со случайными паролями, как показано ниже:

locals {
  users = {
    "divv@xxxxxxx.onmicrosoft.com" = { first_name = "John", last_name = "Doe" , department = "Marketing Department" },
    "shrav@xxxxxxxxxx.onmicrosoft.com" = { first_name = "Jane", last_name = "Doe" , department = "IT Department"}
  }
}


resource "random_password" "passwords" {
  for_each = local.users
  length  = 16
  special = true
}


resource "azuread_user" "users" {
  for_each = local.users

  display_name         = "${each.value.first_name} ${each.value.last_name}"
  mail_nickname        = each.value.first_name
  user_principal_name = each.key
  password            = random_password.passwords[each.key].result
  department = each.value.department
}

Чтобы проверить, генерируются ли случайные пароли, я сохранил их в хранилище ключей и проверил . Они кажутся разными для разных пользователей.

resource "azurerm_key_vault" "example" {
  name                        = "kavyaexmplekeyvault"
  location                    = data.azurerm_resource_group.example.location
  resource_group_name         = data.azurerm_resource_group.example.name
  enabled_for_disk_encryption = true
  tenant_id                   = data.azurerm_client_config.current.tenant_id
  soft_delete_retention_days  = 7
  purge_protection_enabled    = false

  sku_name = "standard"

  access_policy {
    tenant_id = data.azurerm_client_config.current.tenant_id
    object_id = data.azurerm_client_config.current.object_id

   
    key_permissions = [
      "Create",
      "Get",
    ]

    secret_permissions = [
      "Set",
      "Get",
      "Delete",
      "Purge",
      "Recover",
      "List"
    ]

    storage_permissions = [
      "Get","Set"
    ]
  }
}

resource "azurerm_key_vault_secret" "password_one" {
  for_each = local.users
  name         = "passwrdone${each.value.first_name}"
  value        =  random_password.passwords[each.key].result
  key_vault_id = azurerm_key_vault.example.id
}

Пароль для Джейн:

Пароль для Джона:

Другие вопросы по теме