User with console password has MFA enabled for console access
OCI IAM users with console password access are expected to have multifactor authentication enabled. The evaluation inspects each local user allowed to sign in to the Console and identifies those without an active second factor.
Risk
Console-password accounts without MFA are exposed to phishing, credential stuffing, and brute force.
A stolen password can grant Console access, enabling privilege escalation, key creation, and data access-compromising confidentiality, integrity, and availability across OCI.
Run this check with Prowler
Run in Prowler Cloudprowler oraclecloud --checks identity_user_mfa_enabled_console_accessRecommendation
Require MFA for all users with Console passwords; prefer phishing-resistant authenticators (e.g., FIDO). Enforce via sign-on policies, prioritizing admins. Apply least privilege, disable Console passwords for service or federated users, and monitor auth logs to confirm ongoing MFA coverage.
Remediation
CLI
oci iam user update-user-capabilities --user-id <USER_OCID> --can-use-console-password falseOther
Check Code
"""Check if MFA is enabled for all users with console password."""
from prowler.lib.check.models import Check, Check_Report_OCI
from prowler.providers.oraclecloud.services.identity.identity_client import (
identity_client,
)
class identity_user_mfa_enabled_console_access(Check):
"""Check if MFA is enabled for all users with console password."""
def execute(self) -> Check_Report_OCI:
"""Execute the identity_user_mfa_enabled_console_access check.
Returns:
List of Check_Report_OCI objects with findings
"""
findings = []
for user in identity_client.users:
# Only check users with console access
if user.can_use_console_password:
report = Check_Report_OCI(
metadata=self.metadata(),
resource=user,
region=user.region,
resource_name=user.name,
resource_id=user.id,
compartment_id=user.compartment_id,
)
if user.is_mfa_activated:
report.status = "PASS"
report.status_extended = (
f"User {user.name} has MFA enabled for console access."
)
else:
report.status = "FAIL"
report.status_extended = f"User {user.name} has console password enabled but MFA is not activated."
findings.append(report)
return findings