A financial services company hosts a compliance reporting application on Amazon EC2 instances. The application requires access to a static third-party API token. The security team mandates that the token must be encrypted at rest using a customer managed key that undergoes automatic annual rotation. However, to maintain data integrity, historical records encrypted with older versions of the key must remain decryptable without being re-encrypted. Which solution meets these requirements with the lowest operational overhead and cost?
- Store the API token in AWS Systems Manager Parameter Store as a SecureString parameter. Encrypt the parameter using an AWS KMS customer managed key with automatic key rotation enabled.Answer
- BStore the API token in AWS Systems Manager Parameter Store as a String parameter type, and configure the default parameter encryption option using a custom KMS key that rotates annually.
- CStore the API token in AWS Secrets Manager. Configure an AWS KMS customer managed key, and write a custom AWS Lambda function to decrypt and re-encrypt all historical logs and parameters whenever the KMS key is rotated.
- DStore the API token in a configuration file on the EC2 instances. Encrypt the configuration file using AWS KMS, and embed the AWS account's root user credentials in the application code to decrypt the key.
Answer
Store the API token in AWS Systems Manager Parameter Store as a SecureString parameter, encrypting it with a customer managed KMS key that has automatic rotation enabled.
Storing the token as a SecureString in Systems Manager Parameter Store provides secure encryption at rest without the cost overhead of AWS Secrets Manager. Utilizing a customer managed KMS key with automatic rotation enabled satisfies the annual key rotation requirement, and because KMS natively manages historical key versions to decrypt old data, no manual re-encryption of historical records is needed.
Step-by-Step Solution
Key Concept
Secrets vs Parameter Management and KMS Key Rotation Mechanics