@@ -232,6 +232,14 @@ resource "azuread_app_role_assignment" "meshcloud_replicator-administrativeunit"
232232 depends_on = [azuread_application . meshcloud_replicator ]
233233}
234234
235+ resource "azuread_app_role_assignment" "meshcloud_replicator-users_read_all" {
236+ count = var. administrative_unit_name == null ? 0 : 1
237+ app_role_id = data. azuread_service_principal . msgraph . app_role_ids [" User.Read.All" ]
238+ principal_object_id = azuread_service_principal. meshcloud_replicator . object_id
239+ resource_object_id = data. azuread_service_principal . msgraph . object_id
240+ depends_on = [azuread_application . meshcloud_replicator ]
241+ }
242+
235243// ---------------------------------------------------------------------------
236244// Policy Definition for preventing the Application from assigning other privileges to itself
237245// Assign it to the specified scope
@@ -311,35 +319,38 @@ resource "azuread_administrative_unit" "meshcloud_replicator_au" {
311319}
312320
313321// --------------------------------------------------------------------------
314- // Custom AU-scoped Role
322+ // AU Role Assignment for meshcloud_replicator
315323// --------------------------------------------------------------------------
316324
317- resource "azuread_custom_directory_role" "meshcloud_replicator_au_role" {
325+
326+ /*
327+
328+ There is an issue when assigning the replicator a custom role in the AU scope, where the role is not found.
329+
330+ See https://github.com/hashicorp/terraform-provider-azuread/issues/1546.
331+
332+ For now we assign User Administrator and Groups Administrator roles as that is already restricted to the AU scope.
333+ */
334+ resource "azuread_directory_role" "user_administrator" {
318335 count = var. administrative_unit_name == null ? 0 : 1
319- display_name = " meshStack Replicator AU Role"
320- description = " Custom role for meshStack replicator with limited User and Group permissions"
321- enabled = true
322- version = " 1.0"
336+ display_name = " User Administrator"
337+ }
323338
324- # users permissions
325- permissions {
326- allowed_resource_actions = [
327- " microsoft.directory/users/standard/read" ,
328- " microsoft.directory/groups/standard/read" ,
329- " microsoft.directory/groups/create" ,
330- " microsoft.directory/groups/members/update" ,
331- " microsoft.directory/groups/members/read" ,
332- " microsoft.directory/groups/memberOf/read" ,
333- ]
334- }
339+ resource "azuread_directory_role" "groups_administrator" {
340+ count = var. administrative_unit_name == null ? 0 : 1
341+ display_name = " Groups Administrator"
335342}
336343
337- // --------------------------------------------------------------------------
338- // AU Role Assignment for meshcloud_replicator
339- // --------------------------------------------------------------------------
344+ resource "azuread_administrative_unit_role_member" "user_admin_assignment" {
345+ count = var. administrative_unit_name == null ? 0 : 1
346+ role_object_id = azuread_directory_role. user_administrator [0 ]. object_id
347+ administrative_unit_object_id = azuread_administrative_unit. meshcloud_replicator_au [0 ]. object_id
348+ member_object_id = azuread_service_principal. meshcloud_replicator . object_id
349+ }
340350
341- resource "azuread_directory_role_assignment" "meshcloud_replicator_au_assignment" {
342- count = var. administrative_unit_name == null ? 0 : 1
343- role_id = azuread_custom_directory_role. meshcloud_replicator_au_role [0 ]. object_id
344- principal_object_id = azuread_service_principal. meshcloud_replicator . object_id
351+ resource "azuread_administrative_unit_role_member" "groups_admin_assignment" {
352+ count = var. administrative_unit_name == null ? 0 : 1
353+ role_object_id = azuread_directory_role. groups_administrator [0 ]. object_id
354+ administrative_unit_object_id = azuread_administrative_unit. meshcloud_replicator_au [0 ]. object_id
355+ member_object_id = azuread_service_principal. meshcloud_replicator . object_id
345356}
0 commit comments