1. Introduction
While reviewing recent AWS feature updates, I came across an article about "VPC Encryption Control." It was released in November 2025 and is set to become a paid feature starting March 2026.
I was curious about how exactly it "enforces" encryption, so I decided to test its behavior myself.
2. What is VPC Encryption Control? (My Understanding)
Initially, I wondered: "Does this mean all traffic within the VPC must be encrypted? Will it detect if I'm using SSH/HTTPS (OK) versus Telnet/HTTP (NG) by inspecting packets?"
As it turns out, thatβs not quite how it works. Instead, it monitors or enforces whether resources within the VPC are using Nitro-based EC2 instances or RDS that support transparent encryption at the AWS infrastructure layer.
3. What I Did
- Created a VPC with VPC Encryption Control enabled (Monitor mode).
- Set up VPC Flow Logs with specific fields required to identify whether traffic is encrypted.
- Verified how the following traffic patterns are judged by Encryption Control:
| # | SRC | DST | Protocol |
|---|---|---|---|
| 1 | Local PC | nginx(t3.micro) | http |
| 2 | Local PC | nginx(m7i.large) | http |
| 3 | Local PC | nginx(t3.micro) | https |
| 4 | Local PC | nginx(m7i.large) | https |
| 5 | in-VPC curl client(t3.micro) | nginx(t3.micro) | http |
| 6 | in-VPC curl client(m7i.large) | nginx(m7i.large) | http |
| 7 | in-VPC curl client(t3.micro) | nginx(t3.micro) | https |
| 8 | in-VPC curl client(m7i.large) | nginx(m7i.large) | https |
- Switched the VPC Encryption Control mode to Enforce mode.
4. Architecture Diagram
5. Procedure
5.1 Creating a VPC with Encryption Control
Create a VPC with VPC Encryption Control enabled (start with Monitor mode). This can be specified simply during the VPC creation process.
π image.pngConfirm that the created VPC has an Encryption Control ID and is set to Monitor mode.
π image.png
5.2 Creating Test Instances
- Launch two instances with nginx installed (t3.micro and m7i.large).
Configure nginx with a server certificate to accept HTTPS (Reference: "Automatic SSL Certificate Renewal on EC2 using ACM Exported Certificates(in Japanese)").
Launch two instances for the curl client (t3.micro and m7i.large).
Note: Not all Nitro-based instances support automatic encryption. There is a specific list of supported instance types. For example, while t3 is Nitro-based, it is not supported for this feature.
5.3 Creating VPC Flow Logs
- To determine if the traffic is judged as "encrypted," configure VPC Flow Logs using a custom format that includes the ${encryption-status} field.
5.4 Test Traffic and Results
Run curl from the local PC and the in-VPC instances to the nginx servers.
Example commands:
> curl http://x.x.x.x
> curl -k https://x.x.x.x (using -k to skip certificate validation when accessing via IP)
`
- Results for the encryption-status field:
- 0: Not encrypted at the infrastructure layer.
- 1: Encrypted by the Nitro hardware.
| # | SRC | DST | Protocol | Result |
|---|---|---|---|---|
| 1 | Local PC | nginx(t3.micro) | http | 0 |
| 2 | Local PC | nginx(m7i.large) | http | 0 |
| 3 | Local PC | nginx(t3.micro) | https | 0 |
| 4 | Local PC | nginx(m7i.large) | https | 0 |
| 5 | in-VPC curl client(t3.micro) | nginx(t3.micro) | http | 0 |
| 6 | in-VPC curl client(m7i.large) | nginx(m7i.large) | http | 1 |
| 7 | in-VPC curl client(t3.micro) | nginx(t3.micro) | https | 0 |
| 8 | in-VPC curl client(m7i.large) | nginx(m7i.large) | https | 1 |
- Key Takeaway:
- Only traffic between two supported Nitro instances is flagged as 1.
- Even if you use HTTPS, if the underlying infrastructure doesn't support the Nitro-level encryption, the VPC Encryption Control check does not consider it "encrypted."
5.5 Switching to Enforce Mode
To switch to Enforce mode, you must address any non-compliant resources. This includes the Internet Gateway and any non-compatible ENIs (like those belonging to the t3.micro).
π image.pngBy upgrading instances to m7i.large and setting exclusion rules for the Internet Gateway, you can successfully enable Enforce mode.
π image.png
6. Reference Articles
- Official AWS Blog: Provides a solid overview of the feature (in Japanese).
- Deep Dive Verification: An article exploring what happens when you switch from Monitor to Enforce mode (in Japanese).
https://persol-serverworks.co.jp/blog/vpc/vpcvpc.html
7. Final Thoughts
- While I don't see myself using this for my current systems anytime soon, I was impressed by the Nitro system's ability to transparently encrypt all inter-instance traffic. It's a powerful tool for high-compliance environments.
For further actions, you may consider blocking this person and/or reporting abuse
