【问题标题】:Service Principal Creation by Terraform doesn't provide password/secret in the outputTerraform 创建的服务主体未在输出中提供密码/秘密
【发布时间】:2019-01-28 20:27:09
【问题描述】:

在 Azure manually 中生成服务主体时,作为操作的结果,我提供了一个密码。

但如果我使用 Terraform 创建服务主体,则情况并非如此,密码不在此模块的输出中:

  + azuread_service_principal.k8s_principal
      id:                <computed>
      application_id:    "${azuread_application.app.application_id}"
      display_name:      <computed>

有什么我错过的吗?为什么 Terraform 的输出行为与 CLI 不同?

【问题讨论】:

  • 将密码连接到其他地方,或者获取密码作为数据连接到其他地方,或者查看状态文件 - 在这里。你不能导出它,它会给

标签: terraform-provider-azure service-principal


【解决方案1】:

passwordazuread_service_principal_password 块的输入。因此,您可以生成一个随机密码并自行导出。完整的 Terraform 代码是这样的:

resource "azuread_application" "app" {
  name = "${local.application_name}"
}

# Create Service Principal
resource "azuread_service_principal" "app" {
  application_id = "${azuread_application.app.application_id}"
}

resource "random_string" "password" {
  length  = 32
  special = true
}

# Create Service Principal password
resource "azuread_service_principal_password" "app" {
  end_date             = "2299-12-30T23:00:00Z"                        # Forever
  service_principal_id = "${azuread_service_principal.app.id}"
  value                = "${random_string.password.result}"
}

output "sp_password" {
  value = "${azuread_service_principal_password.app.value}"
  sensitive = true
}

【讨论】:

    【解决方案2】:

    在 terraform 文档中,azuread_service_principal 块只定义了 Argument application_id 和 Attributes iddisplay_name,所以你只能看到这些资源。此外,azuread_service_principal_password 块允许您导出服务主体密码的密钥 ID。你还是看不到真正的密码。

    在 Azure CLI az ad sp create-for-rbac 中有一个可选参数 --Password。这样你就可以看到密码输出了。

    【讨论】:

    • 你基本上证实了我的观察。谢谢你。也可以为azuread_service_principal_password 信息 +1。
    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2020-11-11
    • 2020-06-05
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多