Terraform创建的服务主体不在输出中提供密码/秘密

时间:2019-01-28 20:27:10

标签: terraform-provider-azure service-principal

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

不是这种情况,但是如果我使用Terraform创建服务主体,则密码不在此模块的输出之内:

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

有什么我想念的吗?与CLI相比,为什么Terraform行为的输出有所不同?

2 个答案:

答案 0 :(得分:1)

在terraform文档中,azuread_service_principal块仅定义了参数df.groupby(['A','B',(df.C%100==0).cumsum().shift().fillna(0)]).\ agg({'D':'sum','C':lambda x: x[x%100==0]}).reset_index(level=[0,1]).sort_values('A',ascending=False).reset_index(drop=True) A B D C 0 11035 20190101 10.7 100 1 11035 20190101 7.7 200 2 11001 20190109 9.3 200 和属性application_idid,因此您只能看到这些资源。另外,azuread_service_principal_password块允许您导出服务主体密码的密钥ID。您仍然看不到真实密码。

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

答案 1 :(得分:1)

必须将

password输入到azuread_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
}