terraform-provider-azuread icon indicating copy to clipboard operation
terraform-provider-azuread copied to clipboard

Feature: Add support for configuring external collaboration settings

Open ashtmMSFT opened this issue 7 months ago • 1 comments

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritise this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritise the request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Description

Add support for configuring [a subset of] external collaboration settings in Entra ID. Without a proper resource to support this, users must instead configure these settings manually or through REST calls to the appropriate Graph APIs.

For example, an organization could have requirements like these:

  • Set “Guest invite settings” to “Only users assigned to specific admin roles can invite guest users”
  • Set “Guest user access” to “Guest users have limited access to properties and memberships of directory objects”
  • Set “Enable guest self-service sign up via user flows” to “No”

Unfortunately, although these settings are presented grouped together in Entra ID's UI, they are actually configured across two Entra policy objects (authenticationFlowsPolicy and authorizationPolicy) rather than through one API dedicated to external collaboration settings.

New or Affected Resource(s)

I am certainly not an expert on how to best map one or more APIs to Terraform resources, but if we wanted to align with how these settings are organized in the Azure portal or Entra admin center, we could use:

  • azuread_external_collaboration_settings

Another viable approach would be to simply mirror the policy objects exposed by Graph:

  • azuread_authentication_flows_policy
  • azuread_authorization_policy

Potential Terraform Configuration

resource "azuread_external_collaboration_settings" "external_collaboration_settings" {
    allow_guest_invites_from = "adminsGuestInvitersAndAllMembers"
    guest_user_access_level = "limited"
    guest_self_service_sign_up = false
}

References

  • https://learn.microsoft.com/en-us/graph/api/authenticationflowspolicy-update?view=graph-rest-1.0&tabs=http
  • https://learn.microsoft.com/en-us/graph/api/authorizationpolicy-update?view=graph-rest-1.0&tabs=http
  • https://learn.microsoft.com/en-us/entra/identity/users/users-restrict-guest-permissions

ashtmMSFT avatar Jul 10 '24 20:07 ashtmMSFT