Least privilege means granting only the minimum permissions needed for a task and for the shortest time. In IAM it means scoped roles, separate accounts for services, and avoiding wildcard permissions.
Least privilege should be enforced at every layer:
Minimal S3 read-only policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::reports-prod/*"]
}
]
}