Use*_*erP 1 azure azure-active-directory terraform-provider-azure
我正在尝试使用以下代码为我的服务主体创建 Client_secret:
data "azuread_service_principal" "existing_SP" {
display_name = "TestAppRegistration"
}
resource "azuread_service_principal_password" "Client_Secret" {
service_principal_id = data.azuread_service_principal.existing_SP.object_id
}
Run Code Online (Sandbox Code Playgroud)
执行 terraform-apply 它已成功创建,但我在应用程序注册的“秘密和证书”部分中没有看到它:
但是当我检查 tfstate 时,它显示为服务主体创建的值,但对象 ID 与同一应用程序注册中存在的企业应用程序相同:
所以,我的问题是:
如何使用 terraform 创建客户端密钥,我做错了什么吗?
是的,你做的一切都是正确的。
但为了消除这里的混乱,您可能已经知道有两种类型的azure ad applicationieapp registrations和enterprise application。在 terraform 或 powershell 或 cli 中,它App Registration被称为Azure AD application,Enterprise Application同一应用程序注册的 被称为Service Principal。因此,如果您是通过转到应用程序注册刀片从 Portal 创建的,那么默认情况下会为其创建一个服务主体,但如果您从 Powershell 或 Terraform 创建应用程序注册,则情况会有所不同。
默认情况下you will be not be able to see the secret or certificate created for service principal from portal,但您绝对可以将它与 client-id 一起用于身份验证目的。
例如 :
我使用您的代码在我的环境中对此进行了测试,并获取了 tfstate 文件中存在的密码值并用它来进行 az 登录:
注意:使用 terraform 创建服务主体密码是安全的,因为它将存储在 tfstate 文件中,因此您在搜索它时不会遇到困难。
如果我做得正确,那么在门户中可以在哪里找到生成的秘密?
但如果您想从门户网站中寻找秘密,那么我建议您使用azuread_application:
data "azuread_application" "example" {
display_name = "postman"
}
resource "azuread_application_password" "example" {
display_name = "terraformgenerated"
application_object_id = data.azuread_application.example.object_id
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |