Back to Checks
Prowlerprowler-provider-googleworkspace
Super Admin account recovery is disabled
security_super_admin_recovery_disabled
Service: securitySeverity: high
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:NotDefined
The domain-level policy disables self-service account recovery for Super Admin accounts. When disabled, Super Admins cannot use recovery options (phone, email) to regain access, reducing the risk of account takeover through compromised recovery channels.
Risk
If Super Admin account recovery is enabled, an attacker who compromises a Super Admin's recovery phone or email could use the self-service recovery flow to take over the account, gaining full administrative control over the entire Google Workspace organization.
Run this check with Prowler
Run in Prowler CloudRun
prowler googleworkspace --checks security_super_admin_recovery_disabledRecommendation
Disable Super Admin account recovery to prevent attackers from exploiting the self-service recovery flow to take over privileged accounts.
Remediation
Other
1Sign in to the Google **Admin console** at https://admin.google.com
2Navigate to **Security** > **Authentication** > **Account recovery**
3Select **Super admin account recovery**
4Uncheck **Allow super admins to recover their account**
5Click **Save**
Check Code
from typing import List
from prowler.lib.check.models import Check, CheckReportGoogleWorkspace
from prowler.providers.googleworkspace.services.security.security_client import (
security_client,
)
class security_super_admin_recovery_disabled(Check):
"""Check that Super Admin account recovery is disabled.
This check verifies that the domain-level policy prevents Super Admin
users from recovering their account through self-service, reducing the
risk of account takeover through the recovery flow.
"""
def execute(self) -> List[CheckReportGoogleWorkspace]:
findings = []
if security_client.policies_fetched:
report = CheckReportGoogleWorkspace(
metadata=self.metadata(),
resource=security_client.policies,
resource_id="securityPolicies",
resource_name="Security Policies",
customer_id=security_client.provider.identity.customer_id,
)
recovery_enabled = security_client.policies.super_admin_recovery_enabled
if recovery_enabled is False:
report.status = "PASS"
report.status_extended = (
f"Super Admin account recovery is disabled "
f"in domain {security_client.provider.identity.domain}."
)
elif recovery_enabled is None:
report.status = "PASS"
report.status_extended = (
f"Super Admin account recovery uses Google's secure default "
f"configuration (disabled) "
f"in domain {security_client.provider.identity.domain}."
)
else:
report.status = "FAIL"
report.status_extended = (
f"Super Admin account recovery is enabled "
f"in domain {security_client.provider.identity.domain}. "
f"Super Admin account recovery should be disabled to prevent "
f"account takeover through the recovery flow."
)
findings.append(report)
return findings