Как создать секрет клиента для субъекта-службы Azure с помощью Terraform
Я новичок в Azure и Terraform и пытаюсь создать секретный клиент для субъекта-службы Azure с помощью Terraform. Я не могу понять этого.
Вот что у меня сейчас:
provider "azuread" {
version = "=0.7.0"
client_id = var.aws_client_id
subscription_id = var.aws_subscription_id
tenant_id = var.aws_tenant_id
client_secret = var.aws_client_secret
}
# Create an application
resource "azuread_application" "app" {
name = var.azurerd_app_name
}
# Create a 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
}
Это, очевидно, не работает. Это не вызывает никаких ошибок, но секреты не отображаются на консоли Azure. Похоже, это для прикрепления пароля к принципалу службы, но я не очень уверен, что он делает.
Пожалуйста, дайте мне знать, что можно с этим сделать. Любая помощь будет оценена. Благодарность
3 ответа
Фактически, azuread_service_principal_password
работал хорошо, но пароль не отображался на портале.
Вы могли бы использовать azuread_application_password
для управления паролем, связанным с приложением в Azure AD. см. ПРИМЕЧАНИЕ, убедитесь, что приложение имеет указанные разрешения.
Секрет клиента для принципа обслуживания, созданного в вашем примере, будет работать. Секрет клиента будет иметь значениеrandom_string.password.result
как вы назначаете это azuread_service_principal_password.app.value
что является секретом клиента.
Если вы хотите вывести секрет клиента на консоль, чтобы увидеть его, вы можете создать вывод terraform:
output "client_secret" {
value = random_string.password.result
sensitive = false # Note that you might not want to print this in out in the console all the time
}
Вы также можете в любое время попросить terraform распечатать значение из своего состояния:
$ terraform state show random_string.password.result
Вы можете позволить Terraform и Azure создать пароль для вас, а затем использовать
terraform output
чтобы получить его. Вы, вероятно, хотите, чтобы он был помечен как конфиденциальный .
# Create Azure AD App Registration
resource "azuread_application" "app" {
display_name = "my-app"
}
# Create Service Principal
resource "azuread_service_principal" "app" {
application_id = azuread_application.app.application_id
}
# Create Service Principal password
resource "azuread_service_principal_password" "app" {
service_principal_id = azuread_service_principal.app.id
}
# Output the Service Principal and password
output "sp" {
value = azuread_service_principal.app.id
sensitive = true
}
output "sp_password" {
value = azuread_service_principal_password.app.value
sensitive = true
}
затем
terraform output sp_password
получит его для вас, и вы не будете распечатывать его на консоли каждый раз
plan
а также
apply
.