Check ID:
Provider: AWS
Service:
Severity: CRITICAL
Categories:
Resource type:
kms_key_not_publicly_accessibleProvider: AWS
Service:
kmsSeverity: CRITICAL
Categories:
internet-exposed, identity-accessResource type:
AwsKmsKeyWhat this check verifies
KMS keys are assessed for excessive access in key policies or grants, including* principals and broadly scoped permissions to multiple identities.
Risk
Broad access to a KMS key enables unauthorizedkms:Decrypt and data-key generation, breaking confidentiality. With admin rights, attackers can change policies or schedule deletion, undermining control integrity and threatening availability of data dependent on the key.
Recommendation
Apply least privilege to KMS keys:- Restrict principals to specific roles and accounts
- Prefer narrow, time-bound grants
- Separate key administration from usage
- Use conditions to limit context
- Review regularly and remove wildcard or cross-account exposure
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/gcp/CloudKMS/publicly-accessible-kms-cryptokeys.html
- https://support.icompaas.com/support/solutions/articles/62000232904-1-9-ensure-cloud-kms-cryptokeys-are-not-accessible-to-anonymous-or-public-users-automated-
- https://docs.aws.amazon.com/kms/latest/developerguide/determining-access.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 = kms_key_not_publicly_accessible. 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