AWS IAM global condition keys
IAM policy conditions let you grant access only when request context matches.
Global condition keys are the aws:-prefixed keys available across nearly every
service — source IP, MFA state, request time, TLS, and request/principal tags.
This reference lists the most-used keys with their value type and the matching
operator family, plus a copyable example.
How it works
A Condition block maps an operator to a key and one or more values; the
statement only applies when the test passes. Pick the operator family from the
key’s value type:
"Condition": {
"IpAddress": { "aws:SourceIp": ["203.0.113.0/24"] },
"Bool": { "aws:MultiFactorAuthPresent": "true" },
"DateGreaterThan": { "aws:CurrentTime": "2026-01-01T00:00:00Z" }
}
- String keys (e.g.
aws:PrincipalTag/team) →StringEquals,StringLike. - IP keys (
aws:SourceIp) →IpAddress/NotIpAddresswith CIDR. - Bool keys (
aws:SecureTransport,aws:MultiFactorAuthPresent) →Bool. - Date keys (
aws:CurrentTime) →DateGreaterThanfamily. - Numeric keys (
aws:MultiFactorAuthAge) →NumericLessThanfamily.
Tips and notes
- Pair tag keys:
aws:RequestTag/*checks tags in the request, whileaws:ResourceTag/*checks tags already on the target resource. - Use the
IfExistssuffix (e.g.BoolIfExists) so aDenydoes not accidentally block contexts where the key is absent. aws:SourceIpevaluates the apparent public IP and breaks for VPC-endpoint traffic — switch toaws:VpcSourceIpthere.aws:PrincipalOrgIDis the cleanest way to limit a resource policy to your whole AWS Organization without listing account IDs.