Как импортировать основной пароль службы Azure AD в Terraform? - PullRequest
1 голос
/ 21 февраля 2020

Мы используем Terraform для создания нашей облачной инфраструктуры. Ранее у нас было несколько сервисных принципалов, созданных без Terraform, которые сейчас используются в производстве и не могут быть изменены. Теперь мы хотим перейти к созданию Terraform этих принципалов сервиса, но мы не можем импортировать предыдущие, сохраняя структуру для создания новых, используя random_string.

resource "azuread_service_principal_password" "service-images" {
  for_each             = toset(var.profiles)
  service_principal_id = azuread_service_principal.service-images[each.value].id
  end_date             = "2222-01-01T23:00:00Z"
  value                = random_string.images_password[each.value].result
}
resource "random_string" "images_password" {
  for_each = toset(var.profiles)
  length   = 32
  special  = true
}

Когда мы создаем новый сервис принципал (добавив элемент в список var.profiles) работает нормально, но когда он уже используется, мы беспокоимся о том, что Terraform будет иметь sh предыдущее значение и go в рабочем состоянии.

Кроме того, Terraform, похоже, имеет интерфейс импорта для azuread_service_principal_password:

terraform import azuread_service_principal_password.test 00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111

Где первая часть - ServicePrincipalObjectId, а вторая - ServicePrincipalPasswordKeyId, однако я не могу найти это последнее значение на Azure Portal ( где это?).

Как бы вы поступили?

1 Ответ

0 голосов
/ 25 февраля 2020

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

Я рекомендую вам использовать секрет реестра приложения для аутентификации. Секреты реестра приложения, связанные с субъектом службы, также можно использовать для субъекта службы, а реестр приложения может иметь несколько секретов. Поэтому вам нужно создать ресурс azuread_application_password вместо ресурса azuread_service_principal_password.

Вот пример:

data "azuread_application" "example" {
  name = "My First AzureAD Application"
}

resource "azuread_application_password" "example" {
  application_object_id = "${data.azuread_application.example.id}"
  value                 = "VT=uSgbTanZhyz@%nL9Hpd+Tfay_MRV#"
  end_date              = "2020-01-01T01:02:03Z"
}
...