Checks/EntraID/ARG.ENT.003.ps1
|
Register-ArgusCheck @{ Id = 'ARG.ENT.003' Title = 'Guest invitations are restricted' Area = 'EntraID' Category = 'External identities' Severity = 'Medium' Description = 'Reads who can invite guests (`authorizationPolicy.allowInvitesFrom`): **none** or **adminsAndGuestInviters** pass; **adminsGuestInvitersAndAllMembers** (all members can invite) needs review; **everyone** (guests can invite other guests too) fails.' Rationale = 'Who can bring external people into the tenant is a governance decision. Letting guests invite other guests removes the organisation from that decision.' Remediation = @{ Steps = "1. In the Microsoft Entra admin center, go to External Identities > External collaboration settings.`n2. Under Guest invite settings, choose 'Only users assigned to specific admin roles can invite guest users', or at least prevent guests from inviting.`n3. Give the Guest Inviter role to the people who need to invite partners." PowerShell = "# Sample only - review before running.`nConnect-MgGraph -Scopes 'Policy.ReadWrite.Authorization'`nUpdate-MgPolicyAuthorizationPolicy -AllowInvitesFrom 'adminsAndGuestInviters'" PortalUrl = 'https://entra.microsoft.com/' } References = @( @{ Title = 'Configure external collaboration settings'; Url = 'https://learn.microsoft.com/en-us/entra/external-id/external-collaboration-settings-configure' } ) Requires = @{ Services = @('Graph') GraphScopes = @('Policy.Read.All') DataSets = @('AuthorizationPolicy') } Tags = @('Guests', 'Policy') Test = { param($Context) $value = [string](Get-ArgusProperty $Context.Data['AuthorizationPolicy'] 'allowInvitesFrom' '') switch ($value) { 'none' { New-ArgusResult -Status Passed -Summary 'Nobody can invite guests (allowInvitesFrom = none).' } 'adminsAndGuestInviters' { New-ArgusResult -Status Passed -Summary 'Only admins and users with the Guest Inviter role can invite guests.' } 'adminsGuestInvitersAndAllMembers' { New-ArgusResult -Status Investigate -Summary 'All member users can invite guests (allowInvitesFrom = adminsGuestInvitersAndAllMembers). Acceptable in some organisations: confirm it is intended.' } 'everyone' { New-ArgusResult -Status Failed -Summary 'Everyone, including guests, can invite guests (allowInvitesFrom = everyone).' } default { New-ArgusResult -Status Investigate -Summary "Guest invitation setting could not be interpreted (allowInvitesFrom = '$value')." } } } } |