如何使用 Terraform 将动态用户组添加到 Azure 广告企业应用程序
How to add a dynamic user group to an azure ad enterprise app with terraform
我正在尝试将动态用户组添加到我的 azure ad Enterprise 应用程序。
我尝试按照文档步骤进行操作,但在设置 app_roles.
后没有任何反应
自 2021 年 9 月 2 日起,Terraform 添加了动态组支持:
https://github.com/hashicorp/terraform-provider-azuread/issues/132#issuecomment-911843531
资源:azuread_application — 文档:
https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/application
如果我对文档的理解正确,我可以向我的应用程序添加角色的唯一方法是 app_role 功能。所以我的第一次尝试是只添加对象组 ID 并将“allowed_member_types”设置为用户。
resource "azuread_application" "test-app" {
display_name = "test-app"
owners = [data.azuread_client_config.current.object_id]
app_role {
allowed_member_types = ["User"]
description = "Reader"
display_name = "Reader"
enabled = true
id = "#####-####-####-####-######" <- Group Object ID
value = "Reader"
}
web {
logout_url = var.logout_url
redirect_uris = var.redirect_uris
implicit_grant {
access_token_issuance_enabled = true
id_token_issuance_enabled = true
}
}
}
但这不起作用,因为组没有出现在企业应用程序中,也许我在这里误解了什么?
我们还可以 group_membership_claims:
https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/application#group_membership_claims
但是我觉得文档比较难懂,虽然我试着按照文档看,但感觉不适合我。
如果有人可以帮助我离开这里或纠正我,那就太好了。
请注意:
- 以下权限,例如
Group.ReadWrite.All
或
Directory.ReadWrite.All
需要对组执行操作。
- 如果使用
assignable_to_role
属性,此资源另外
需要以下应用程序角色之一:
RoleManagement.ReadWrite.Directory
或 Directory.ReadWrite.All
assignable_to_role which is (Optional) Indicates whether this group
can be assigned to an Azure Active Directory role. Can only be true
for security-enabled groups.
Check if security enable is true and dynamic membership rule are
given: Group with dynamic membership.
参见第 Assign a user and group to an internal application 部分
还要检查版本,因为此功能已 在 Terraform Provider 的 v2.13.0 中发布。
当使用 service principal
进行身份验证时,此资源需要以下应用程序角色之一:AppRoleAssignment.ReadWrite.All
和 Application.Read.Al
l,或(AppRoleAssignment.ReadWrite.All 和 Directory.Read.All),或Application.ReadWrite.All,或Directory.ReadWrite.All
这里尝试加入allowed_member_types = ["Application", "User"]
,security_enabled = true
对于 Azure 广告组和 app_role_assignment_required = true
data "azuread_domains" "example" {
only_initial = true
}
resource "azuread_application" "internal" {
display_name = "internal"
app_role {
allowed_member_types = ["Application", "User"]
description = "Admins can perform all task actions"
display_name = "Admin"
enabled = true
id = "00000000-0000-0000-0000-222222222222"
value = "Admin.All"
}
}
resource "azuread_service_principal" "internal" {
application_id = azuread_application.internal.application_id
app_role_assignment_required = true
}
resource "azuread_group" "example" {
display_name = "example"
security_enabled = true
}
resource "azuread_app_role_assignment" "example" {
app_role_id = azuread_service_principal.internal.app_role_ids["Admin.All"]
principal_object_id = azuread_group.example.object_id
resource_object_id = azuread_service_principal.internal.object_id
}
检查是否可以尝试使用 rest api endpoint
我正在尝试将动态用户组添加到我的 azure ad Enterprise 应用程序。 我尝试按照文档步骤进行操作,但在设置 app_roles.
后没有任何反应自 2021 年 9 月 2 日起,Terraform 添加了动态组支持: https://github.com/hashicorp/terraform-provider-azuread/issues/132#issuecomment-911843531
资源:azuread_application — 文档: https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/application
如果我对文档的理解正确,我可以向我的应用程序添加角色的唯一方法是 app_role 功能。所以我的第一次尝试是只添加对象组 ID 并将“allowed_member_types”设置为用户。
resource "azuread_application" "test-app" {
display_name = "test-app"
owners = [data.azuread_client_config.current.object_id]
app_role {
allowed_member_types = ["User"]
description = "Reader"
display_name = "Reader"
enabled = true
id = "#####-####-####-####-######" <- Group Object ID
value = "Reader"
}
web {
logout_url = var.logout_url
redirect_uris = var.redirect_uris
implicit_grant {
access_token_issuance_enabled = true
id_token_issuance_enabled = true
}
}
}
但这不起作用,因为组没有出现在企业应用程序中,也许我在这里误解了什么?
我们还可以 group_membership_claims: https://registry.terraform.io/providers/hashicorp/azuread/latest/docs/resources/application#group_membership_claims
但是我觉得文档比较难懂,虽然我试着按照文档看,但感觉不适合我。
如果有人可以帮助我离开这里或纠正我,那就太好了。
请注意:
- 以下权限,例如
Group.ReadWrite.All
或Directory.ReadWrite.All
需要对组执行操作。 - 如果使用
assignable_to_role
属性,此资源另外 需要以下应用程序角色之一:RoleManagement.ReadWrite.Directory
或 Directory.ReadWrite.All
assignable_to_role which is (Optional) Indicates whether this group can be assigned to an Azure Active Directory role. Can only be true for security-enabled groups.
Check if security enable is true and dynamic membership rule are given: Group with dynamic membership.
参见第 Assign a user and group to an internal application 部分 还要检查版本,因为此功能已 在 Terraform Provider 的 v2.13.0 中发布。
当使用 service principal
进行身份验证时,此资源需要以下应用程序角色之一:AppRoleAssignment.ReadWrite.All
和 Application.Read.Al
l,或(AppRoleAssignment.ReadWrite.All 和 Directory.Read.All),或Application.ReadWrite.All,或Directory.ReadWrite.All
这里尝试加入allowed_member_types = ["Application", "User"]
,security_enabled = true
对于 Azure 广告组和 app_role_assignment_required = true
data "azuread_domains" "example" {
only_initial = true
}
resource "azuread_application" "internal" {
display_name = "internal"
app_role {
allowed_member_types = ["Application", "User"]
description = "Admins can perform all task actions"
display_name = "Admin"
enabled = true
id = "00000000-0000-0000-0000-222222222222"
value = "Admin.All"
}
}
resource "azuread_service_principal" "internal" {
application_id = azuread_application.internal.application_id
app_role_assignment_required = true
}
resource "azuread_group" "example" {
display_name = "example"
security_enabled = true
}
resource "azuread_app_role_assignment" "example" {
app_role_id = azuread_service_principal.internal.app_role_ids["Admin.All"]
principal_object_id = azuread_group.example.object_id
resource_object_id = azuread_service_principal.internal.object_id
}
检查是否可以尝试使用 rest api endpoint