IAM password policies should require at least one uppercase letter
Passwords composed entirely of lowercase characters occupy a smaller keyspace that automated cracking tools can exhaust quickly. Requiring uppercase characters forces a minimum 52-character alphabet, meaningfully increasing the time needed for brute-force attacks against IAM console credentials.
While MFA and federation reduce reliance on passwords, many AWS accounts still have IAM users who authenticate with passwords. A weak password policy lets a single compromised credential become an entry point, and AWS applies the account-level policy to every IAM user at password creation or rotation.
Retrofit consideration
Existing IAM users are not forced to change their passwords when you update the policy. Users with non-compliant passwords retain them until their next rotation or forced 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_lowercase_characters = true
require_numbers = true
require_symbols = true
require_uppercase_characters = true
}
What this control checks
The control checks that an aws_iam_account_password_policy resource exists with require_uppercase_characters set to true. The resource applies account-wide and only one can exist per AWS account. If require_uppercase_characters is omitted, it defaults to false in the AWS API and the control fails. No other resources or arguments are involved. It passes when require_uppercase_characters is explicitly true; it fails when the argument is false or when no password policy resource exists.
Common pitfalls
Defaults to false when omitted
The
require_uppercase_charactersargument onaws_iam_account_password_policydefaults tofalseif not explicitly specified. A resource block that only setsminimum_password_lengthwill fail this control because the uppercase requirement is not enabled.Existing passwords are not retroactively enforced
Updating the password policy does not invalidate or force rotation of existing IAM user passwords. Users whose current passwords lack uppercase letters keep working until the next password change. Pair the policy update with
max_password_ageor a manual forced reset viaaws iam update-login-profile --password-reset-required.Single resource per account can cause Terraform conflicts
aws_iam_account_password_policyis a singleton. If two Terraform stacks or workspaces both manage it, they will fight over state on every apply. Centralize this resource in a single account-baseline configuration.Federated-only accounts still need the policy
Even if most users authenticate via SSO, any remaining IAM users with console access (including break-glass accounts) are subject to the account password policy. Compliance frameworks expect the policy to exist regardless of federation status.
Audit evidence
An auditor expects to see the output of aws iam get-account-password-policy showing RequireUppercaseCharacters set to true. The Config rule iam-password-policy evaluation results showing COMPLIANT status are also standard evidence. Screenshots from the IAM console under Account settings with the uppercase requirement checked provide supplementary proof.
For continuous compliance, a history of Config compliance timeline entries for this rule shows the policy has stayed enforced across the audit period, not just at a single point in time.
Framework-specific interpretation
PCI DSS v4.0: Requirement 8.3.6 mandates password complexity for accounts used to access the cardholder data environment. Requiring uppercase characters is one component of the complexity parameters PCI assessors verify during a password policy review.
GDPR: Article 32 calls for technical measures proportional to risk. For controllers and processors with personal data accessible via IAM console credentials, password complexity is among the baseline controls data protection authorities have pointed to in enforcement decisions.
FedRAMP Moderate Baseline Rev 4: IA-5(1) calls for password complexity enforcement that includes mixed-case characters. At the Moderate baseline, the information system itself must enforce the requirement, not just document it as policy. The uppercase check directly satisfies part of that composition rule.
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
iam_account_password_policy_one_uppercase_letterAWS Config Managed Rule:
IAM_PASSWORD_POLICYCheckov Check:
CKV_AWS_15Powerpipe Control:
aws_compliance.control.iam_account_password_policy_one_uppercase_letterProwler Check:
iam_password_policy_uppercaseAWS Security Hub Control:
IAM.11Trivy Check:
AWS-0061
Last reviewed: 2026-03-09