IAM password policies should require at least one lowercase letter
Brute force and dictionary attacks get easier when passwords lack character diversity. Requiring lowercase letters alongside uppercase, digits, and symbols expands the effective keyspace, making offline cracking and credential stuffing more expensive.
This setting applies account-wide to every IAM user who authenticates with a password. A missing lowercase requirement often signals the password policy was never explicitly configured, meaning other complexity settings are probably also sitting at their weak defaults.
Retrofit consideration
Existing IAM users are not forced to change passwords immediately. Password changes take effect on the next rotation or manual reset, so enforcement may lag until max_password_age triggers a reset.
Implementation
Choose the approach that matches how you manage Terraform.
Use AWS provider resources directly. See docs for the resources involved: aws_iam_account_password_policy.
resource "aws_iam_account_password_policy" "this" {
max_password_age = 90
minimum_password_length = 14
password_reuse_prevention = 24
require_numbers = true
require_symbols = true
require_uppercase_characters = true
require_lowercase_characters = true
}
What this control checks
The control checks that aws_iam_account_password_policy has require_lowercase_characters set to true. One resource governs the entire account. It fails when the resource is absent, when the attribute is explicitly false, or when it is omitted (the default is false). To pass, declare the resource with require_lowercase_characters = true. This resource cannot be scoped to specific users or groups.
Common pitfalls
Singleton resource conflicts
Two Terraform stacks or workspaces that both declare
aws_iam_account_password_policywill fight over the same API object, causing alternating applies. Manage this resource in exactly one root module, typically your account baseline.Default values are not compliant
AWS defaults
require_lowercase_characterstofalse. Importing an existing policy without explicitly setting the attribute totrueleaves you non-compliant even if the resource already exists in state.No retroactive enforcement on existing passwords
Enabling
require_lowercase_charactersonly applies to passwords set after the policy change. Existing IAM user passwords stay valid untilmax_password_agetriggers expiration or someone manually resets them. Withoutmax_password_ageconfigured, non-compliant passwords persist indefinitely.SSO-only accounts still need the policy
Even if your organization uses IAM Identity Center for all human access, compliance frameworks still expect the IAM password policy to be configured. Break-glass IAM users or service accounts with console access inherit whatever policy exists, or the insecure defaults if none does.
Audit evidence
An auditor expects aws iam get-account-password-policy output showing RequireLowercaseCharacters: true. AWS Config rule iam-password-policy evaluation results provide continuous evidence. IAM console screenshots of the Account settings password policy page showing the lowercase requirement checked are also acceptable.
For ongoing assurance, Security Hub findings for this control under AWS Foundational Security Best Practices should show PASSED with a recent evaluation timestamp.
Framework-specific interpretation
PCI DSS v4.0: Requirement 8.3.6 mandates passwords that include a mix of numeric and alphabetic characters. Lowercase letters satisfy part of the alphabetic character diversity expectation.
GDPR: Article 32 asks for 'appropriate technical measures' to protect personal data. GDPR does not specify password rules, but regulators expect enforced authentication controls, and documented password complexity policies are standard audit evidence.
FedRAMP Moderate Baseline Rev 4: IA-5(1) at the Moderate baseline requires mixed character types for password-based authentication. Lowercase letters are one component of that requirement alongside uppercase, digits, and special characters.
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
iam_account_password_policy_one_lowercase_letterAWS Config Managed Rule:
IAM_PASSWORD_POLICYCheckov Check:
CKV_AWS_11Powerpipe Control:
aws_compliance.control.iam_account_password_policy_one_lowercase_letterProwler Check:
iam_password_policy_lowercaseAWS Security Hub Control:
IAM.12Trivy Check:
AWS-0058
Last reviewed: 2026-03-09