Back to Checks
IAM password policy requires at least 3 character types
iam_password_policy_char_combination
Service: iamSeverity: medium
OfficialBuilt-inVerified
Categories:identity-access
Resource Type:NotDefined
Huawei Cloud IAM password policies can enforce character complexity by requiring multiple character types (uppercase, lowercase, digits, special characters). It is recommended that at least 3 character types be required to increase password strength.
Risk
Passwords with limited character types are more susceptible to brute force and dictionary attacks. Requiring only 1 or 2 character types significantly reduces the effective keyspace, making passwords easier to crack.
Run this check with Prowler
Run in Prowler CloudRun
prowler huaweicloud --checks iam_password_policy_char_combinationRecommendation
Configure the IAM password policy to require at least 3 character types in passwords.
Remediation
CLI
hcloud IAM UpdateDomainPasswordPolicy --domain_id=<domain_id> --password_policy.password_char_combination=3Other
1Log on to the **Huawei Cloud console**.
2Choose **IAM & Security**.
3Click the **Password Policy** tab.
4Set **Password Character Combination** to `3` or greater.
5Click **OK**.
Check Code
from prowler.lib.check.models import Check, CheckReportHuaweiCloud
from prowler.providers.huaweicloud.services.iam.iam_client import iam_client
class iam_password_policy_char_combination(Check):
"""Check if Huawei Cloud IAM password policy requires at least 3 character types."""
def execute(self) -> list[CheckReportHuaweiCloud]:
findings = []
if iam_client.password_policy:
report = CheckReportHuaweiCloud(
metadata=self.metadata(), resource=iam_client.password_policy
)
report.region = iam_client.region
report.resource_id = f"{iam_client.audited_account}-password-policy"
report.resource_name = report.resource_id
report.resource_arn = (
f"HUAWEICLOUD::IAM::{iam_client.audited_account}:password-policy"
)
if iam_client.password_policy.password_char_combination >= 3:
report.status = "PASS"
report.status_extended = f"IAM password policy requires at least {iam_client.password_policy.password_char_combination} character types in passwords."
else:
report.status = "FAIL"
report.status_extended = f"IAM password policy only requires {iam_client.password_policy.password_char_combination} character type(s), which is less than the recommended 3 (uppercase, lowercase, digits, special characters)."
findings.append(report)
return findings