Free Tool · CIS · SOC 2 · ISO 27001 · NIST
CIS M365 & Google Workspace Baseline Explorer
Inspect every automated check in the Pistos Pharos catalogue, including plain-English risk explanations, multi-framework compliance mappings, and step-by-step remediation commands.
Require phishing-resistant MFA for all privileged administrator roles
Administrator accounts hold keys to every mailbox, SharePoint site, and directory setting. Requiring FIDO2/WebAuthn or Microsoft Authenticator number-matching blocks credential stuffing and adversary-in-the-middle token theft.
Entra Admin Center → Protection → Conditional Access → Policies
- Create or edit a Conditional Access policy targeting all built-in Entra directory admin roles.
- Under Grant controls, require Authentication strength → Phishing-resistant MFA.
- Exclude only your two monitored emergency-access (break-glass) accounts.
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess" New-MgIdentityConditionalAccessPolicy -DisplayName "Pharos: Require Admin Phishing-Resistant MFA" -State "enabled"
Enforce MFA for 100% of active member and guest users
Even a single unlicensed or shared user account without MFA allows an attacker to pivot inside Microsoft Teams, read internal SharePoint sites, and launch internal phishing.
Entra Admin Center → Identity → Overview → Properties → Security defaults (or Conditional Access)
- Verify every active member and guest user is covered by Conditional Access MFA or Security Defaults.
- Review excluded groups to ensure temporary onboarding exemptions have been removed.
Get-MgReportAuthenticationMethodUserRegistrationDetail -All | Where-Object { -not $_.IsMfaRegistered }Keep standing Global Administrators between 2 and 4 accounts
More than 4 Global Administrators multiplies your blast radius; fewer than 2 risks tenant lockout if one admin is unavailable. Daily administrative work should use scoped roles (Exchange Admin, User Admin).
Entra Admin Center → Identity → Roles & admins → Global Administrator
- Review all accounts permanently assigned the Global Administrator role.
- Downgrade day-to-day admins to least-privilege roles such as User Administrator or Exchange Administrator.
- Retain 2 dedicated cloud-only emergency access accounts protected by FIDO2 hardware keys.
$role = Get-MgDirectoryRole -Filter "DisplayName eq 'Global Administrator'" Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id
Ensure Global Administrator accounts are cloud-only (not hybrid synced)
If an on-premises Active Directory account is synced to Entra ID with Global Admin rights, an on-prem domain compromise immediately compromises the entire cloud tenant.
Entra Admin Center → Identity → Users → All users
- Inspect Global Administrator accounts and verify OnPremisesSyncEnabled is false.
- Create dedicated cloud-only admin accounts (*.onmicrosoft.com) separate from daily email accounts.
Block legacy authentication protocols (IMAP, POP3, SMTP Basic, ActiveSync)
Legacy authentication protocols cannot enforce MFA. Over 90% of successful password-spray attacks against Microsoft 365 authenticate through legacy IMAP, POP3, or older Office clients.
Entra Admin Center → Protection → Conditional Access → Block Legacy Authentication
- Create a Conditional Access policy targeting All users.
- Under Conditions → Client apps, check Exchange ActiveSync clients and Other clients.
- Under Access controls → Grant, select Block access.
Set-OrganizationConfig -DefaultAuthenticationPolicy "Block-Legacy-Auth"
Disable automatic external mail forwarding on outbound spam policies and inbox rules
Attackers who compromise a mailbox routinely add silent inbox rules or SMTP forwarding to exfiltrate invoices, wire instructions, and password reset emails to an external address.
Microsoft Defender Portal → Email & collaboration → Policies & rules → Threat policies → Anti-spam → Outbound spam
- Edit the default Outbound spam filter policy.
- Set Automatic forwarding rules to Off — Forwarding is disabled.
- Audit existing mailbox ForwardingSmtpAddress values and remove unauthorized external targets.
Set-HostedOutboundSpamFilterPolicy -Identity Default -AutoForwardingMode Off
Restrict SharePoint & OneDrive anonymous "Anyone with the link" sharing
Anonymous "Anyone" links can be forwarded outside the intended recipient list and indexed or accessed without authentication, exposing customer contracts and internal spreadsheets.
SharePoint Admin Center → Policies → Sharing
- Slide SharePoint and OneDrive external sharing down from "Anyone" to "New and existing guests" or "Existing guests".
- Set default sharing link type to "Specific people (only the people the user specifies)".
Set-SPOTenant -SharingCapability ExistingExternalUserSharingOnly -DefaultSharingLinkType Direct
Restrict Entra ID guest user invite permissions and directory visibility
By default, guests can enumerate all users and groups in your Entra directory. Restricting guest access to their own profile properties prevents external recon.
Entra Admin Center → Identity → External Identities → External collaboration settings
- Set Guest user access restrictions to "Guest user access is restricted to properties and memberships of their own directory objects".
- Set Guest invite settings to "Only users assigned to specific admin roles can invite guest users".
Require administrator consent for third-party OAuth applications requesting high-risk scopes
Illicit consent grant attacks trick users into clicking "Accept" on a third-party OAuth prompt, granting attackers persistent API access to Mail.ReadWrite and Files.ReadWrite.All without ever needing the user’s password or MFA.
Entra Admin Center → Identity → Applications → Enterprise applications → Consent and permissions
- Select "Do not allow user consent" or "Allow user consent for apps from verified publishers, for selected permissions (Low impact)".
- Enable the Admin consent workflow so users can request review with a business justification.
Update-MgPolicyAuthorizationPolicy -DefaultUserRolePermissions @{PermissionGrantPoliciesAssigned = @()}Enable Microsoft Purview Unified Audit Log ingestion and mailbox auditing
Without Unified Audit Logging enabled, forensic responders cannot determine which emails or SharePoint files were accessed during an incident, failing SOC 2 and ISO 27001 logging requirements.
Microsoft Purview Portal → Solutions → Audit
- Verify Unified Audit Logging is turned On for the organization.
- Enable mailbox auditing by default across all user and shared mailboxes.
Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true Set-OrganizationConfig -AuditDisabled $false
Enforce 2-Step Verification (2SV) for all Super Admins with security keys
Google Workspace Super Admins bypass almost all organizational restrictions. Enforcing 2-Step Verification with FIDO2 Security Keys or passkeys prevents takeover of your entire Google Workspace domain.
Google Admin Console → Security → Authentication → 2-Step Verification
- Select your Admin organizational unit (OU) or group.
- Turn Enforcement ON and set Allowed methods to "Only security key".
- Verify backup security keys are registered for each Super Admin.
gam update org "/Admins" twostepverification enforcement on method security_key
Enforce 2-Step Verification across all organizational units (disallow SMS/Voice)
SIM-swapping and SS7 interception make SMS and voice call codes vulnerable. Enforcing Google Prompt, authenticator apps, or security keys across all users eliminates password-only and SMS-based compromise.
Google Admin Console → Security → Authentication → 2-Step Verification
- At the root Organizational Unit, check "Allow users to turn on 2-Step Verification".
- Set Enforcement to ON with a 7–14 day enrollment grace period for new hires.
- Set Allowed methods to "Any except verification codes via text, phone call".
Limit Google Workspace Super Admins to between 2 and 4 dedicated accounts
Super Admins have irrevocable control over every user, Google Drive file, and Google Cloud project linked to the domain. Keeping Super Admin count between 2 and 4 reduces attack surface.
Google Admin Console → Account → Admin roles → Super Admin
- Audit all users assigned the Super Admin role.
- Reassign routine administrators to delegated roles (User Management Admin, Groups Admin, Help Desk Admin).
- Remove daily Gmail/Calendar licenses from dedicated Super Admin accounts.
gam print admins role "Super Admin"
Disable Less Secure Apps and restrict IMAP/POP access for end users
Legacy IMAP/POP clients and app-specific passwords bypass modern session controls and context-aware access policies.
Google Admin Console → Apps → Google Workspace → Gmail → End User Access
- Disable POP and IMAP access for all standard user organizational units, allowing only approved OAuth mail clients.
- Ensure Less Secure Apps access remains disabled across the domain.
Disable automatic user-configured external Gmail forwarding
Preventing end users from configuring silent automatic forwarding to external domains stops data exfiltration and persistent mailbox spying.
Google Admin Console → Apps → Google Workspace → Gmail → End User Access → Automatic forwarding
- Uncheck "Allow users to automatically forward incoming email to another address".
- Review existing user forwarding addresses and filters via GAM or Admin audit logs.
gam all users print forward
Restrict Google Drive default link sharing and disallow public "Anyone with the link" defaults
When default link sharing is open or external sharing is unrestricted, sensitive Google Docs and Sheets can be accessed by anyone with the URL.
Google Admin Console → Apps → Google Workspace → Drive and Docs → Sharing settings
- Set Default link sharing for new files to "OFF — Only specific people can access".
- Under Sharing outside of organization, require warning prompts and restrict sharing to allowlisted domains or authenticated guests.
Block unverified third-party OAuth apps from accessing restricted Google Workspace scopes
Users frequently sign into AI note-takers, Chrome extensions, and productivity tools with "Sign in with Google", inadvertently granting full read/write access to Gmail and Google Drive.
Google Admin Console → Security → Access and data control → API controls → Manage Google Services
- Set Gmail, Google Drive, and Admin Directory Google Services to "Restricted" so only explicitly trusted OAuth apps can request scopes.
- Under Unconfigured third-party apps, select "Don’t allow users to access any third-party apps" or allow only internal/trusted apps.
Enable Google Admin alert rules for Super Admin grants, 2SV changes, and anomalous Drive exports
Real-time alerts when a new Super Admin is promoted, 2SV is disabled, or a user downloads an unusual volume of Drive files allow security teams to contain incidents in minutes instead of weeks.
Google Admin Console → Rules → System defined rules
- Enable email notifications and Alert Center severity High for Admin privilege granted, User suspended, and Government-backed attack warning.
- Configure Drive data exfiltration threshold rules.