SSM Parameter Store parameter is not encrypted (not SecureString)
- Severity
- Medium
- Service
- Systems Manager
- Check ID
- SSM_PARAM_NOT_ENCRYPTED
What this check finds
This Systems Manager parameter is stored as a plaintext String/StringList rather than a SecureString, so its value is not encrypted at rest with KMS. Sensitive values (tokens, connection strings) stored this way are readable by any principal with ssm:GetParameter. Detected from metadata only — the parameter value is never read.
Passing looks like: SSM parameters use SecureString encryption.
How to fix it
Recreate the parameter as a SecureString backed by a KMS key.
AWS CLI
aws ssm put-parameter --name NAME --value VALUE --type SecureString --key-id alias/aws/ssm --overwrite
Names in capitals are placeholders for your own resource. Review a command before you run it.
AWS console
Systems Manager → Parameter Store → parameter → recreate as SecureString.
Compliance controls it is evidence for
A failing result counts against these controls in KloudLytics; a passing one is evidence towards them. How compliance mapping works
| Framework | Controls |
|---|---|
| NIST SP 800-53 Rev5 (Moderate) |
|
| NIST Cybersecurity Framework 2.0 |
|
| ISO/IEC 27001:2022 Annex A |
|
Checked on every scan
KloudLytics runs this check each time it scans a connected AWS account, through a read-only role, and lists every affected resource with its region. On Pro and Business a fix is written for the specific resource rather than the general case above. The exact access it needs