Check ID:
Provider: AWS
Service:
Severity: MEDIUM
Categories:
Resource type:
iam_policy_no_full_access_to_kmsProvider: AWS
Service:
iamSeverity: MEDIUM
Categories:
identity-accessResource type:
AwsIamPolicyWhat this check verifies
Customer-managed IAM policies are examined for statements that grant AWS KMS full access usingkms:*. The focus is on policies allowing service-wide actions rather than narrowly scoped, key-specific permissions.
Risk
Allowingkms:* lets principals decrypt data, change key policies, and disable or delete keys. Impact: Confidentiality-unauthorized decryption; Integrity-manipulation of cryptographic controls; Availability-data unreadable if keys are disabled/deleted. It can also enable privilege escalation.
Recommendation
Adopt least privilege and separation of duties:- Replace
kms:*with only needed actions scoped to specific key ARNs - Apply policy conditions (e.g.,
kms:ViaService) and guardrails (permissions boundaries/SCPs) - Monitor KMS usage and refine access based on activity
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- http://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html
- https://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/encryption-best-practices/kms.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = iam_policy_no_full_access_to_kms. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks