はじめに
Mitsuoです、ご無沙汰しております。
AWSをご利用になられているインフラエンジニアの皆様にとって切っても切れないAmazon VPCに、何やらアツいアップデートがあったようですね。
その新機能である「VPC Block Public Access (BPA)」について当ブログで紹介します。
対象読者
- Amazon VPC、サブネット、ルートテーブルなど基本的なネットワークコンポーネントの理解がある方
この記事で紹介すること
- 機能の概要
- 設定方法
この記事で紹介しないこと
- 実際の環境を用いた動作検証
当ブログでは機能紹介と最低限の設定方法に留め、試してみた系ブログを別途作成予定です。
機能紹介
「VPC Block Public Access (BPA)」とは?
名前の通りVPCのインターネット通信を制御する機能です。
これまではVPCに対して、インターネットアクセスの設定を個別に行っていましたが、当機能によって包括的に制御できるようになった訳です。
Amazon VPCがローンチされた黎明期、AWSは1アカウントに1VPCを配置するという想定だった様です。
年月が経ち、構築するシステムの複雑化や規模の拡大によって、1アカウント上で複数のVPCを使うことが当たり前になってきました。
このようなニーズに応えるため、「VPC Block Public Access (BPA)」機能がリリースされたようです。
余談ですが、AWS Blogでは「Amazon S3 Block Public AccessのVPCバージョン」の様な表現がされていました。
※ 構成図でVPC内に色々なパターンの構成があると書きたかった。
外部公開するサービスを例に挙げるのは違うかと思いつつ、例えばオンプレミスとの通信が多い場合だと外部公開するVPC自体が少なくなりますよね、と言いたい。
何が嬉しいのか
- リージョン単位でVPCにおけるインターネットアクセスの制御をまとめて設定できる
- 設定内容の簡略化、管理の集約
- セキュリティ要件の厳しいニーズに応えることができる
- 大手エンプラに刺さる印象、説明、合意がしやすい/取りやすいと表現した方が適切な気も
対応リージョン
GovCloudと中国リージョンを含め、全ての商用リージョンで利用可能です。
当機能で影響があるAWSサービス
基本的にはインターネットゲートウェイ、Egress-Only インターネットゲートウェイの通信に関係するAWSサービスが該当します。
- インターネットゲートウェイ
- Egress-Only インターネットゲートウェイ
- NATゲートウェイ
- インターネット向け Network Load Balancer
- インターネット向け Application Load Balancer
- AWS Global Accelerator
そのため、プライベートIPアドレスの通信を行う以下リソースは影響を受けません。
- AWS Client VPN
- AWS CloudWAN
- AWS Outposts local gateway
- AWS Site-to-Site VPN
- Transit gateway
- AWS Verified Access
- AWS Wavelength carrier gateway
「VPC Block Public Access (BPA)」で設定できるもの
リージョン単位で、大きく2つの設定項目があります。
- パブリックアクセス
- 除外
パブリックアクセス設定では、Bidirectional(双方向)とIngress-only(内部向けのみ)を2通りから選択します。
Bidirectional(双方向)ではインバウンド、アウトバウンドを問わずトラフィックをブロックします。
一方でIngress-only(内部向けのみ)は、インバウンドのトラフィックのみブロックします。
除外は、パブリックアクセスを適用させたくないVPC、サブネットを指定し対象から除外する設定のことです。
除外がないものは原則全てパブリックアクセス設定が適用されます。
その他、細かい制約事項について
- 有効後は既存のVPC、新規作成されるVPC全てに適用される
- 除外設定のクォータはデフォルトで50件
- 上限の引き上げ自体は可能
- トラフィックの考え方はセキュリティグループの様な「ステートフル」である
- Ingress-onlyの場合、アウトバウンド通信において戻りの通信は可能ということ
- また、VPCからの通信 → NAT Gateway、Egress-only インターネットゲートウェイ経由の戻りの通信は許可される
- Ingress-onlyの場合、アウトバウンド通信において戻りの通信は可能ということ
実際に触ってみる
今回はGUIで紹介します。
VPCメニューの左ペインで、一番下までスクロールすると「Setting」があるのでクリックします。
パブリックアクセス設定の画面に遷移するので画面右上にある「Edit public access settings」をクリックします。
「Turn on block public access」をクリックすると、Bidirectional(双方向)とIngress-only(内部向けのみ)のどちらの設定するかが表示されます。
今回はIngress-only(内部向けのみ)を選択し、「Save Changes」をクリックします。
大きな変更なので、警告文にも「影響を把握してから設定変更してね」の様なことが書かれています。
設定更新を待ちます。
設定が反映されました。
続いて、除外設定を試してみます。
「Create exclusions」をクリックします。
Nameに除外設定名を入力、Internet gateway allow directionに許可する通信の向きを選択します。
Available resourcesでは、VPCかサブネットで指定できることが分かります。
除外したいVPCまたはサブネットを選択し、「Create exclusions」を選択します。
数分待つとステータスがActiveになり除外設定が作成されたことがわかります。
まとめ
長くなってきたので一旦概要程度に留めますが、エンプラ向けにはかなり良いアップデートなのではないでしょうか。勉強になります。
今後VPCの設計は、パブリックブロック設定を有効化にして作成したVPCに対して適宜除外設定をするのがオーソドックスになるのではないかと感じました。
(要件厳しくなければそこまでする必要あるか?という意見もありそうですが)
また、CloudFormationやTerraformを用いてIaC化もできれば、除外件数が多くても実装がお手軽に可能になる気がしています。
IaC関連の記事もまた書きたいなーと思うMitsuoでした、それではまた会う日まで。
参考資料
AWS announces Block Public Access for Amazon Virtual Private Cloud
Enhancing VPC Security with Amazon VPC Block Public Access
Block public access to VPCs and subnets