Skip to content

Find teams with excessive owners — security risk and least-privilege

violation.

A team should typically have 2-5 owners. More than 5 is a red flag.

Permissions

Requires application permission TeamMember.Read.All.

Reference

View source

from office365.graph_client import GraphClient
from tests.settings import client_id, client_secret, tenant

MAX_OWNERS = 5

client = GraphClient(tenant=tenant).with_client_secret(client_id, client_secret)

for team in client.teams.get_all().execute_query():
    members = team.members.get().execute_query()
    owners = [m for m in members if "owner" in (m.properties.get("roles") or [])]
    if len(owners) > MAX_OWNERS:
        print(f"  {team.display_name:45s}  {len(owners)} owners")
        for o in owners:
            email = o.properties.get("email", "?")
            print(f"      {o.display_name:30s}  {email}")

← Back to Microsoft Teams