繁体   English   中英

如何将 Azure AD 服务主体密码导入 Terraform?

[英]How do I import an Azure AD Service Principal Password into Terraform?

我们正在使用 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 会破坏以前的值并在生产中下降。

此外,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 门户上找不到后一个值(它在哪里?)。

你将如何进行?

不幸的是,据我所知,服务主体只能有一个密码。 因此,您不能保留旧配置文件的密码,也不能为新配置文件生成新密码。

我建议您使用应用程序注册表密钥进行身份验证。 与服务主体关联的应用程序注册表的秘密也可以用于服务主体,应用程序注册表可以有多个秘密。 因此,您需要创建资源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"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM