Encryption of each information at relaxation and in transit is a non-negotiable characteristic for many organizations. Moreover, organizations working in extremely regulated and security-sensitive environments—resembling these within the monetary sector—usually require full management over the cryptographic keys used for his or her workloads.
Amazon Managed Service for Apache Flink makes it simple to course of real-time information streams with sturdy safety features, together with encryption by default to assist defend your information in transit and at relaxation. The service removes the complexity of managing the important thing lifecycle and controlling entry to the cryptographic materials.
If it is advisable to retain full management over your key lifecycle and entry, Managed Service for Apache Flink now helps the usage of buyer managed keys (CMKs) saved in AWS Key Administration Service (AWS KMS) for encrypting utility information.
This characteristic helps you handle your personal encryption keys and key insurance policies, so you’ll be able to meet strict compliance necessities and keep full management over delicate information. With CMK integration, you’ll be able to benefit from the scalability and ease of use that Managed Service for Apache Flink affords, whereas assembly your group’s safety and compliance insurance policies.
On this publish, we discover how the CMK performance works with Managed Service for Apache Flink functions, the use instances it unlocks, and key concerns for implementation.
Knowledge encryption in Managed Service for Apache Flink
In Managed Service for Apache Flink, there are a number of features the place information needs to be encrypted:
- Knowledge at relaxation instantly managed by the service – Sturdy utility storage (checkpoints and snapshots) and working utility state storage (disk volumes utilized by RocksDB state backend) are robotically encrypted
- Knowledge in transit inner to the Flink cluster – Mechanically encrypted utilizing TLS/HTTPS
- Knowledge in transit to and at relaxation in exterior techniques that your Flink utility accesses – For instance, an Amazon Managed Streaming for Apache Kafka (Amazon MSK) matter by means of the Kafka connector or calling an endpoint by means of a customized AsyncIO); encryption is dependent upon the exterior service, person settings, and code
For information at relaxation managed by the service, checkpoints, snapshots, and working utility state storage are encrypted by default utilizing AWS owned keys. In case your safety necessities require you to instantly management the encryption keys, you should utilize the CMK held in AWS KMS.
Key elements and roles
To know how CMKs work in Managed Service for Apache Flink, we first must introduce the elements and roles concerned in managing and working an utility utilizing CMK encryption:
- Buyer managed key (CMK):
- Resides in AWS KMS inside the similar AWS account as your utility
- Has an connected key coverage that defines entry permissions and utilization rights to different elements and roles
- Encrypts each sturdy utility storage (checkpoints and snapshots) and working utility state storage
- Managed Service for Apache Flink utility:
- The applying whose storage you need to encrypt utilizing the CMK
- Has an connected AWS Id and Entry Administration (IAM) execution function that grants permissions to entry exterior companies
- The execution function doesn’t have to supply any particular permissions to make use of the CMK for encryption operations
- Key administrator:
- Manages the CMK lifecycle (creation, rotation, coverage updates, and so forth)
- Could be an IAM person or IAM function, and utilized by a human operator or by automation
- Requires administrative entry to the CMK
- Permissions are outlined by the connected IAM insurance policies and the important thing coverage
- Utility operator:
- Manages the appliance lifecycle (begin/cease, configuration updates, snapshot administration, and so forth)
- Could be an IAM Person or IAM function, and utilized by a human operator or by automation
- Requires permissions to handle the Flink utility and use the CMK for encryption operations
- Permissions are outlined by the connected IAM insurance policies and the important thing coverage
The next diagram illustrates the answer structure.

Enabling CMK following the precept of least privilege
When deploying functions in manufacturing environments or dealing with delicate information, you need to observe the precept of least privilege. CMK help in Managed Service for Apache Flink has been designed with this precept in thoughts, so every element receives solely the minimal permissions essential to perform.
For detailed details about the permissions required by the appliance operator and key coverage configurations, seek advice from Key administration in Amazon Managed Service for Apache Flink. Though these insurance policies may seem advanced at first look, this complexity is intentional and vital. For extra particulars in regards to the necessities for implementing essentially the most restrictive key administration potential whereas sustaining performance, seek advice from Least-privilege permissions.
For this publish, we spotlight some essential factors about CMK permissions:
- Utility execution function – Requires no extra permissions to make use of a CMK. You don’t want to vary the permissions of an current utility; the service handles CMK operations transparently throughout runtime.
- Utility operator permissions – The operator is the person or function who controls the appliance lifecycle. For the permissions required to function an utility that makes use of CMK encryption, seek advice from Key administration in Amazon Managed Service for Apache Flink. Along with these permissions, an operator usually has permissions on actions with the
kinesisanalyticsprefix. It’s a greatest observe to limit these permissions to a particular utility defining theUseful resource. The operator should even have theiam:PassRolepermission to cross the service execution function to the appliance.
To simplify managing the permissions of the operator, we advocate creating two separate IAM insurance policies, to be connected to the operator’s function or person:
- A base operator coverage defining the fundamental permissions to function the appliance lifecycle with out a CMK
- A further CMK operator coverage that provides permissions to function the appliance with a CMK
The next IAM coverage instance illustrates the permissions that needs to be included within the base operator coverage:
Consult with Utility lifecycle operator (API caller) permissions for the permissions to be included with the extra CMK operator coverage.
Separating these two insurance policies has an extra good thing about simplifying the method of organising an utility for the CMK, because of the dependencies we illustrate within the following part.
Dependencies between the important thing coverage and CMK operator coverage
When you fastidiously observe the operator’s permissions and the important thing coverage defined in Create a KMS key coverage, you’ll discover some interdependencies, illustrated by the next diagram.

Particularly, we spotlight the next:
- CMK key coverage dependencies – The CMK coverage requires references to each the appliance Amazon Useful resource Title (ARN) and the important thing administrator or operator IAM roles or customers. This coverage have to be outlined at key creation time by the important thing administrator.
- IAM coverage dependencies – The operator’s IAM coverage should reference each the appliance ARN and the CMK key itself. The operator function is answerable for varied duties, together with configuring the appliance to make use of the CMK.
To correctly observe the precept of least privilege, every element requires the others to exist earlier than it may be accurately configured. This necessitates a fastidiously orchestrated deployment sequence.
Within the following part, we show the exact order required to resolve these dependencies whereas sustaining safety greatest practices.
Sequence of operations to create a brand new utility with a CMK
When deploying a brand new utility that makes use of CMK encryption, we advocate following this sequenced strategy to resolve dependency conflicts whereas sustaining safety greatest practices:
- Create the operator IAM function or person with a base coverage that features utility lifecycle permissions. Don’t embrace CMK permissions at this stage, as a result of the important thing doesn’t exist but.
- The operator creates the appliance utilizing the default AWS owned key. Hold the appliance in a stopped state to stop information creation—there needs to be no information at relaxation to encrypt throughout this part.
- Create the important thing administrator IAM function or person, if not already out there, with permissions to create and handle KMS keys. Consult with Utilizing IAM insurance policies with AWS KMS for detailed permission necessities.
- The important thing administrator creates the CMK in AWS KMS. At this level, you could have the required elements for the important thing coverage: utility ARN, operator IAM function or person ARN, and key administrator IAM function or person ARN.
- Create and connect to the operator an extra IAM coverage that features the CMK-specific permissions. See Utility lifecycle operator (API caller) permissions for the entire operator coverage definition.
- The operator can now modify the appliance configuration utilizing the
UpdateApplicationmotion, to allow CMK encryption, as illustrated within the following part. - The applying is now able to run with all information at relaxation encrypted utilizing your CMK.
Allow the CMK with UpdateApplication
You may configure a Managed Service for Apache Flink utility to make use of a CMK utilizing the AWS Administration Console, the AWS API, AWS Command Line Interface (AWS CLI), or infrastructure as code (IaC) instruments just like the AWS Cloud Growth Equipment (AWS CDK) or AWS CloudFormation templates.
When organising CMK encryption in a manufacturing setting, you’ll in all probability use an automation device somewhat than the console. These instruments ultimately use the AWS API underneath the hood, and the UpdateApplication motion of the kinesisanalyticsv2 API particularly. On this publish, we analyze the additions to the API that you should utilize to manage the encryption configuration.
A further top-level block ApplicationEncryptionConfigurationUpdate has been added to the UpdateApplication request payload. With this block, you’ll be able to allow and disable the CMK.
You should add the next block to the UpdateApplication request:
The KeyIdUpdate worth might be the important thing ARN, key ID, key alias title, or key alias ARN.
Disable the CMK
Equally, the next requests disable the CMK, switching again to the default AWS owned key:
Allow the CMK with CreateApplication
Theoretically, you’ll be able to allow the CMK instantly while you first create the appliance utilizing the CreateApplication motion.
A top-level block ApplicationEncryptionConfiguration has been added to the CreateApplication request payload, with a syntax just like UpdateApplication.
Nevertheless, because of the interdependencies described within the earlier part, you’ll most frequently create an utility with the default AWS owned key and later use UpdateApplication to allow the CMK.
When you omit ApplicationEncryptionConfiguration while you create the appliance, the default conduct is utilizing the AWS owned key, for backward compatibility.
Pattern CloudFormation templates to create IAM roles and the KMS key
The method you employ to create the roles and key and configure the appliance to make use of the CMK will range, relying on the automation you employ and your approval and safety processes. Any automation instance we are able to present will possible not suit your processes or tooling.
Nevertheless, the next GitHub repository offers some instance CloudFormation templates to generate among the IAM insurance policies and the KMS key with the right key coverage:
- IAM coverage for the important thing administrator – Permits managing the important thing
- Base IAM coverage for the operator – Permits managing the traditional utility lifecycle operations with out the CMK
- CMK IAM coverage for the operator – Supplies extra permissions required to handle the appliance lifecycle when the CMK is enabled
- KMS key coverage – Permits the appliance to encrypt and decrypt the appliance state and the operator to handle the appliance operations
CMK operations
We have now described the method of making a brand new Managed Service for Apache Flink utility with CMK. Let’s now study different widespread operations you’ll be able to carry out.
Adjustments to the encryption key change into efficient when the appliance is restarted. When you replace the configuration of a working utility, this causes the appliance to restart and the brand new key for use instantly. Conversely, if you happen to change the important thing of a READY (not working) utility, the brand new key isn’t really used till the appliance is restarted.
Allow a CMK on an current utility
In case you have an utility working with an AWS owned key, the method is just like what we described for creating new functions. On this case, you have already got a working utility state and older snapshots which might be encrypted utilizing the AWS owned key.
Additionally, you probably have a working utility, you in all probability have already got an operator function with an IAM coverage that you should utilize to manage the operator lifecycle.
The sequence of steps to allow a CMK on an current and working utility is as follows:
- When you don’t have already got one, create a key administrator IAM function or person with permissions to create and handle keys in AWS KMS. See Utilizing IAM insurance policies with AWS KMS for extra particulars in regards to the permissions required to handle keys.
- The important thing administrator creates the CMK. The important thing coverage references the appliance ARN, the operator’s ARN, and the important thing administrator’s function or person ARN.
- Create an extra IAM coverage that permits the usage of the CMK and connect this coverage to the operator. Alternatively, modify the operator’s current IAM coverage by including these permissions.
- Lastly, the operator can replace the appliance and allow the CMK.The next diagram illustrates the method that happens while you execute an
UpdateApplicationmotion on the working utility to allow a CMK.
The workflow consists of the next steps:
- While you replace the appliance to arrange the CMK, the next occurs:
- The applying working state, for the time being it’s encrypted with the AWS owned key, is saved in a snapshot whereas the appliance is stopped. This snapshot is encrypted with the default AWS owned key. The working utility state storage is risky and destroyed when the appliance is stopped.
- The applying is redeployed, restoring the snapshot into the working utility state.
- The working utility state storage is now encrypted with the CMK.
- New snapshots created from this level on are encrypted utilizing the CMK.
- You’ll in all probability need to delete all of the outdated snapshots, together with the one created robotically by the
UpdateApplicationthat enabled the CMK, as a result of they’re all encrypted utilizing the AWS owned key.
Rotate the encryption key
As with every cryptographic key, it’s a greatest observe to rotate the important thing periodically for enhanced safety. Managed Service for Apache Flink doesn’t help AWS KMS automated key rotation, so you could have two main choices for rotating your CMK.
Choice 1: Create a brand new CMK and replace the appliance
The primary strategy entails creating a wholly new KMS key after which updating your utility configuration to make use of the brand new key. This technique offers a clear separation between the outdated and new encryption keys, making it simpler to trace which information was encrypted with which key model.
Let’s assume you could have a working utility utilizing CMK#1 (the present key) and need to rotate to CMK#2 (the brand new key) for enhanced safety:
- Conditions and preparation – Earlier than initiating the important thing rotation course of, you have to replace the operator’s IAM coverage to incorporate permissions for each CMK#1 and CMK#2. This dual-key entry helps uninterrupted operation throughout the transition interval. After the appliance configuration has been efficiently up to date and verified, you’ll be able to safely take away all permissions to CMK#1.
- Utility replace course of – The
UpdateApplicationoperation used to configure CMK#2 robotically triggers an utility restart. This restart mechanism makes positive each the appliance’s working state and any newly created snapshots are encrypted utilizing the brand new CMK#2, offering fast safety advantages from the up to date encryption key. - Vital safety concerns – Present snapshots, together with the automated snapshot created throughout the CMK replace course of, stay encrypted with the unique CMK#1. For full safety hygiene and to reduce your cryptographic footprint, contemplate deleting these older snapshots after verifying that your utility is functioning accurately with the brand new encryption key.
This strategy offers a clear separation between outdated and new encrypted information whereas sustaining utility availability all through the important thing rotation course of.
Choice 2: Rotate the important thing materials of the present CMK
The second possibility is to rotate the cryptographic materials inside your current KMS key. For a CMK used for Managed Service for Apache Flink, we advocate utilizing on-demand key materials rotation.
The advantage of this strategy is simplicity: no change is required to the appliance configuration nor to the operator’s IAM permissions.
Vital safety concerns
The brand new encryption key’s utilized by the Managed Service for Apache Flink utility solely after the subsequent utility restart. To make the brand new key materials efficient, instantly after the rotation, it is advisable to cease and begin utilizing snapshots to protect the appliance state or execute an UpdateApplication, which additionally forces a stop-and-restart. After the restart, you need to contemplate deleting the outdated snapshots, together with the one taken robotically within the final stop-and-restart.
Change again to the AWS owned key
At any time, you’ll be able to determine to modify again to utilizing an AWS owned key. The applying state remains to be encrypted, however utilizing the AWS owned key as an alternative of your CMK.
If you’re utilizing the UpdateApplication API or AWS CLI command to modify again to CMK, you have to explicitly cross ApplicationEncryptionConfigurationUpdate, setting the important thing kind to AWS_OWNED_KEY as proven within the following snippet:
While you execute UpdateApplication to modify off the CMK, the operator should nonetheless have permissions on the CMK. After the appliance is efficiently working utilizing the AWS owned key, you’ll be able to safely take away any CMK-related permissions from the operator’s IAM coverage.
Check the CMK in improvement environments
In a manufacturing setting—or an setting containing delicate information—you need to observe the precept of least privilege and apply the restrictive permissions described to this point.
Nevertheless, if you wish to experiment with CMKs in a improvement setting, resembling utilizing the console, strictly following the manufacturing course of may change into cumbersome. In these environments, the roles of key administrator and operator are sometimes stuffed by the identical particular person.
For testing functions in improvement environments, you may need to use a permissive key coverage like the next, so you’ll be able to freely experiment with CMK encryption:
This coverage must not ever be utilized in an setting containing delicate information, and particularly not in manufacturing.
Frequent caveats and pitfalls
As mentioned earlier, this characteristic is designed to maximise safety and promote greatest practices such because the precept of least privilege. Nevertheless, this focus can introduce some nook instances you have to be conscious of.
The CMK have to be enabled for the service to encrypt and decrypt snapshots and working state
With AWS KMS, you’ll be able to disable one key at any time. When you disable the CMK whereas the appliance is working, it’d trigger unpredictable failures. For instance, an utility won’t be able to revive a snapshot if the CMK used to encrypt that snapshot has been disabled. For instance, if you happen to try and roll again an UpdateApplication that modified the CMK, and the earlier key has since been disabled, you won’t have the ability to restore from an outdated snapshot. Equally, you won’t have the ability to restart the appliance from an older snapshot if the corresponding CMK is disabled.
When you encounter these eventualities, the answer is to reenable the required key and retry the operation.
The operator requires permissions to all keys concerned
To carry out an motion on the appliance (resembling Begin, Cease, UpdateApplication, or CreateApplicationSnapshot), the operator will need to have permissions for all CMKs concerned in that operation. AWS owned keys don’t require express permission.
Some operations implicitly contain two CMKs—for instance, when switching from one CMK to a different, or when switching from a CMK to an AWS owned key by disabling the CMK. In these instances, the operator will need to have permissions for each keys for the operation to succeed.
The identical rule applies when rolling again an UpdateApplication motion that concerned a number of CMKs.
A brand new encryption key takes impact solely after restart
A brand new encryption key’s solely used after the appliance is restarted. That is essential while you rotate the important thing materials for a CMK. Rotating the important thing materials in AWS KMS doesn’t require updating the Managed Flink utility’s configuration. Nevertheless, you have to restart the appliance as a separate step after rotating the important thing. When you don’t restart the appliance, it can proceed to make use of the outdated encryption key for its working state and snapshots till the subsequent restart.
Because of this, it is suggested to not allow automated key rotation for the CMK. When automated rotation is enabled, AWS KMS may rotate the important thing materials at any time, however your utility won’t begin utilizing the brand new key till it’s subsequent restarted.
CMKs are solely supported with Flink runtime 1.20 or later
CMKs are solely supported when you find yourself utilizing the Flink runtime 1.20 or later. In case your utility is at present utilizing an older runtime, you need to improve to Flink 1.20 first. Managed Service for Apache Flink makes it simple to improve your current utility utilizing the in-place model improve.
Conclusion
Managed Service for Apache Flink offers sturdy safety by enabling encryption by default, defending each the working state and persistently saved state of your functions. For organizations that require full management over their encryption keys (usually as a consequence of regulatory or inner coverage wants), the power to make use of a CMK built-in with AWS KMS affords a brand new stage of assurance.
Through the use of CMKs, you’ll be able to tailor encryption controls to your particular compliance necessities. Nevertheless, this flexibility comes with the necessity for cautious planning: the CMK characteristic is deliberately designed to implement the precept of least privilege and powerful function separation, which may introduce complexity round permissions and operational processes.
On this publish, we reviewed the important thing steps for enabling CMKs on current functions, creating new functions with a CMK, and managing key rotation. Every of those processes provides you larger management over your information safety but additionally requires consideration to entry administration and operational greatest practices.
To get began with CMKs and for extra complete steerage, seek advice from Key administration in Amazon Managed Service for Apache Flink.
Concerning the authors
