Back to Checks
Anonymous users cannot join Teams meetings
teams_meeting_anonymous_user_join_disabled
Service: teamsSeverity: critical
OfficialBuilt-inVerified
Categories:identity-accesse3
Resource Type:NotDefined
Microsoft 365 Teams org-wide meeting policy is evaluated to ensure anonymous meeting join is disabled, preventing non-authenticated participants from joining.
Risk
Anonymous meeting access allows unaccountable attendees to join, eavesdrop, capture shared content, and impersonate others.
This undermines confidentiality and integrity, and threatens availability via meeting hijacking, spam, and disruption.
Run this check with Prowler
Run in Prowler CloudRun
prowler m365 --checks teams_meeting_anonymous_user_join_disabledRecommendation
Disable anonymous meeting join tenant-wide and require authenticated users or managed guests.
Use lobby admission for externals, limit presenter rights per least privilege, and enforce conditional access or registration to control who enters.
Remediation
CLI
Set-CsTeamsMeetingPolicy -Identity Global -AllowAnonymousUsersToJoinMeeting $falseOther
1Sign in to the Microsoft Teams admin center (https://admin.teams.microsoft.com)
2Go to Meetings > Meeting policies
3Select Global (Org-wide default)
4Set "Anonymous users can join a meeting" to Off
5Click Save
Check Code
from typing import List
from prowler.lib.check.models import Check, CheckReportM365
from prowler.providers.m365.services.teams.teams_client import teams_client
class teams_meeting_anonymous_user_join_disabled(Check):
"""Check if anonymous users are not able to join meetings.
Attributes:
metadata: Metadata associated with the check (inherited from Check).
"""
def execute(self) -> List[CheckReportM365]:
"""Execute the check for anonymous users are not able to join meetings.
This method checks if anonymous users are not able to join meetings.
Returns:
List[CheckReportM365]: A list of reports containing the result of the check.
"""
findings = []
global_meeting_policy = teams_client.global_meeting_policy
if global_meeting_policy:
report = CheckReportM365(
metadata=self.metadata(),
resource=global_meeting_policy if global_meeting_policy else {},
resource_name="Teams Meetings Global (Org-wide default) Policy",
resource_id="teamsMeetingsGlobalPolicy",
)
report.status = "FAIL"
report.status_extended = "Anonymous Teams users can join meetings."
if not global_meeting_policy.allow_anonymous_users_to_join_meeting:
report.status = "PASS"
report.status_extended = "Anonymous Teams users can not join meetings."
findings.append(report)
return findings