ご挨拶
師走の季節に入って2週間経つわけですが、1年とは早いですね。
と思って居る白"雪姫"です。
今年はルーター系とフロントエンド系の脆弱性が多かったなぁと思いつつ、
re:Inventでのアップデートにインクルードなのかな?とか思いながら、興味深いアップデートがありましたので試してみることにしました。
今回やる事
VPC Encryptionの強制化コントロールとなります。
何それ?
通信には「平文通信」と「暗号化通信」の2種類があります。
平文通信というのは、周りから丸見えの通信。
暗号化通信というのは、周りから見えないように、送信元と送信先の間で合言葉を決めて中身をわかりにくくした通信
です。
例えるなら、
水族館の水槽トンネルが平文通信
高速道路の山間部を抜けるのが暗号化通信
という感じです。
実際に試しました
-
作成ウィザードの中でこんなものが追加されてます。今回追加されたものです。
どちらもしっかり出てきますね。
今回はVPCのみの「強制モード」で作成します。
そのためここから先は、「VPCのみ」での画像となります。
AWSTemplateFormatVersion: '2010-09-09'
Description: 'VPC with Encryption Control Enforcement Mode'
Resources:
# KMS Key for VPC encryption
VPCEncryptionKey:
Type: AWS::KMS::Key
Properties:
Description: 'KMS Key for VPC encryption control'
KeyPolicy:
Statement:
- Effect: Allow
Principal:
AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root'
Action: 'kms:*'
Resource: '*'
VPCEncryptionKeyAlias:
Type: AWS::KMS::Alias
Properties:
AliasName: alias/vpc-encryption-key
TargetKeyId: !Ref VPCEncryptionKey
# VPC with encryption control
SecureVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
EnableDnsSupport: true
Tags:
- Key: Name
Value: SecureVPC
- Key: EncryptionEnforced
Value: 'true'
# VPC Encryption Control Policy
VPCEncryptionPolicy:
Type: AWS::EC2::VPCEndpointPolicy
Properties:
PolicyDocument:
Statement:
- Effect: Deny
Principal: '*'
Action: '*'
Resource: '*'
Condition:
Bool:
'aws:SecureTransport': 'false'
- terraformでのサンプル
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# KMS Key for VPC encryption
resource "aws_kms_key" "vpc_encryption_key" {
description = "KMS Key for VPC encryption control"
policy = jsonencode({
Statement = [
{
Effect = "Allow"
Principal = {
AWS = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"
}
Action = "kms:*"
Resource = "*"
}
]
})
tags = {
Name = "VPCEncryptionKey"
}
}
resource "aws_kms_alias" "vpc_encryption_key_alias" {
name = "alias/vpc-encryption-key"
target_key_id = aws_kms_key.vpc_encryption_key.key_id
}
# VPC with encryption control enforcement
resource "aws_vpc" "secure_vpc" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
tags = {
Name = "SecureVPC"
EncryptionEnforced = "true"
}
}
# Data source for current AWS account
data "aws_caller_identity" "current" {}
# VPC Encryption Control (using VPC Endpoint Policy as example)
resource "aws_vpc_endpoint_policy" "encryption_enforcement" {
vpc_endpoint_id = aws_vpc_endpoint.s3.id
policy = jsonencode({
Statement = [
{
Effect = "Deny"
Principal = "*"
Action = "*"
Resource = "*"
Condition = {
Bool = {
"aws:SecureTransport" = "false"
}
}
}
]
})
}
resource "aws_vpc_endpoint" "s3" {
vpc_id = aws_vpc.secure_vpc.id
service_name = "com.amazonaws.${data.aws_region.current.name}.s3"
}
data "aws_region" "current" {}
設定はこれだけです。
強制できることで何がいいの?
色々とメリットはありますが、一番わかりやすいのは「暗号化通信以外許可できないため、設定も出来ない」という点になります。
手動でポチポチと作成していたのは、何が出来ない?とか確認したかったからなのですが
つまり、必要な通信以外は全通信を暗号化しなければならないという文言がある金融系の構築規約や決済系の構築規定と言ったものに素早く対応ができるようになるということになります。
AWS-WellArchtectedFrameworkのSecurityの柱でも定義されていることの1つになります。
後からポリシーは変更出来るのか
左ペイン内にある「お使いのVPC」にて右ペインのVPCのタブの横に「VPC暗号化コントロール」が追加されています。

こちらから先ほど除外できなかった設定なども確認することが可能です。
何に役に立つのか
金融や決済と書いてしまいましたが、考えつくものとして以下のクラウドリフトに役に立つのでは?と思ってます。
- 金融機関系の感情システムのクラウドリフト
- もちろん、内部のデータベースなどの関係があると思うのですぐには無理とは考えます。
- 公共システムのクラウド化
- 昨今、マイナンバーカードなどでデジタル化が進む公共システムの安全な通信の確立
- 学校のネットワーク監視システム
- 煩雑化する物理ネットワークと連携を取り(様は大きいProxy化するのですが)により、怪しい通信などの監視も容易に出来るのかな?と思ったりしています。
では。
おまけと追記
料金について
(AWS公式)[https://aws.amazon.com/jp/vpc/pricing/]には新しいタブが増えてます。
本来は2026年3月末にリリース予定だったようで、そこまでは無料と言うことになっています。
以下文言抜粋
VPC 暗号化コントロールの料金は 2026 年 3 月 1 日から適用が開始されます。それまでは、お客様は VPC 暗号化コントロールを無料でご利用いただけます。2026 年 3 月 1 日以降は、暗号化コントロールを有効にした、空でない VPC ごとに、1 時間あたりの固定料金が発生します。







