Another new announcement was made by AWS here at re:Invent, this time in the popular security category. AWS has announced new custom key stores backed by CloudHSM. Here’s some background and a summary of what this means.
The Key Management Service (KMS) stores and generates encryption keys that can be used by other AWS services and applications to encrypt your data. A main component of KMS is the Customer Master Key (CMK), and there are there are 2 types of CMKs. One which is managed and created by customers of AWS and two, those that are managed and created by AWS themselves. CMKs are stored in KMS using its own key store to securely maintain and store the CMKs which never leave the perimeter of the service.
CMKs that are created and generated by AWS customers allow for greater flexibility, such as key rotation, governing access, and key policy configuration, along with being able to both enable and disable the key when it is no longer required.
This new feature applies to customer managed CMKs only. Instead of using KMS to store your CMKs, you can now generate a custom key store, which is effectively a cluster of hardware security modules (HSMs) managed by the AWS CloudHSM service.
When creating your customer managed CMK you will now see an option to use a custom key store, where the keys will reside on HSMs outside of KMS.
When selecting this option for your CMK you will be storing your key in a CloudHSM cluster. These CMKs will then never leave your HSM cluster since KMS will be authorized to access the keys. When the CMK is required, KMS will receive the request relating to the key held in your HSM and will communicate with your custom key store. However, it’s important to note that all operations relating to the CMK are performed inside of the HSM and NOT KMS.
You may be thinking, this is a great feature but why would you want to do this in the first place?
In the world of security, your data may need to comply with a huge range of governance controls and compliance, and some of these may require you to store your key material in a dedicated HSM, rather than in a service like KMS. By using a custom key store, you can still use the features and benefits of KMS and its interactions with other services and apps, while adhering to the requirements of having to store your key material in a dedicated HSM cluster. Being able to control and manage your keys independently of KMS provides you with greater management of the keys.
With this additional control comes greater responsibility. KMS is no longer maintaining the availability of your keys, so you need to manage your cluster and high availability of that cluster. Although you must have a minimum of two HSMs in your cluster for a custom key store, you should understand how CloudHSM can provide increased HA across multiple AZs before adopting custom key stores.
Having your CMKs stored outside of KMS prevents them from automatically being rotated by KMS. Also, it’s not possible to import your own key material into a custom key store or migrate existing CMKs from the KMS key store to your custom key store. All other aspects of using CMKs remains the same, so you don’t have to alter any other configurations. Any requests relating to the CMK still go through KMS, and you still use the same KMS APIs as you normally would. It’s simply the location of the key store that’s different.
As expected, this new feature is fully supported by AWS CloudTrail as AWS CloudHSM logs all API activity. Additionally, CloudHSM maintains its own logs covering user and key management access, which are also sent to CloudWatch for further analysis if required.
From a cost perspective, there are no additional KMS charges, but you will be charged for the use of the CloudHSM cluster, depending on how many HSMs you have. More information on CloudHSM pricing can be found here: https://aws.amazon.com/cloudhsm/pricing/
In summary, this is a great new feature that allows you to be more in control of your customer generated CMKs that will enable you to meet specific compliance while utilizing all the benefits from KMS.
For more information on KMS, check out Cloud Academy’s KMS course here.