AWS PrivateLinkに思いを馳せる休日
はじめに
最近PrivateLinkやVPCエンドポイントについて質問されたので、ここで整理したいと思います。(´・ω・`)
学習リソース
下記を参考に執筆しています。
- AWS PrivateLinkを通じてAWS サービスにアクセスする
- AWS PrivateLinkを使用してAmazon VPC経由で製品を配信する
- Gateway Load Balancerの使用開始方法
- 「VPCエンドポイント」にトラフィックが到達する仕組みとマルチAZ構築の2軸で整理 これでVPCエンドポイントは怖くない
AWS PrivateLinkとは?
AWS PrivateLinkはAmazon VPCの機能であり、VPCエンドポイントとVPCエンドポイントサービスから成る。
※AWS PrivateLinkはサービス名ではない。
-
VPCエンドポイント
VPCからAWSのパブリックサービスにアクセスする場合、VPCにIGWをアタッチし、インターネットと通信できる必要がある。例えば、パブリックサービスであるS3にアクセスする場合はインターネットを経由して下記のエンドポイント(URL)と通信できる状態でなければならない。
https://s3.ap-northeast-1.amazonaws.com
VPCエンドポイントを作成することでセキュリティ要件等(インターネットとの通信を制限)を満たし、AWSクラウド内に通信を閉じたままAWSサービスにアクセスすることができる。
3種類のVPCエンドポイントが提供されている。- Interfaceエンドポイント
- AWSサービス、NLBを介した独自サービス(VPCエンドポイントサービスのこと)、AWS MarketPlaceで販売されている製品へプライベートアクセスする。
- Gatewayエンドポイント
- (本エンドポイントはPrivateLinkを使用せずに、)S3/DynamoDBへプライベートアクセスする。
- S3/DynamoDBはInterface型とGateway型の両方をサポートする。
- Gateway Load Balancerエンドポイント(GWLBE)
- GWLB経由で提供されるサービスにプライベートアクセスする。
- GWLBEはファイアウォール/IDS/IPS等トラフィック監査機能を提供する仮想アプライアンスへ通信を転送する際に用いられる。
- 通信の流れの一例としては、インターネット→IGW→GWLBE→GWLB→仮想アプライアンス→GWLB→GWLBE→アプリケーションサーバとなる。アプリケーションサーバからの通信もインバウンド同様に仮想アプライアンスを経由でトラフィック監査を受けた後、インターネットへ送信される。
- Interfaceエンドポイント
-
VPCエンドサービス
VPCエンドポイントサービスはサービスプロバイダー側のリソース。
プロバイダー側にはNLB/GWLBの作成が必須で、NLBのターゲット(ターゲットグループ)にはインスタンスID、ALB、IPアドレスを選択できる。GWLBのターゲットはインスタンスID、IPアドレスを選択できる。
コンシューマー側はVPCエンドポイントサービス作成時に払い出される「サービス名」を指定したVPCエンドポイント作成することで、サービスへのアクセスが可能になる。
VPCエンドポイントのアーキテクチャ
3種類のVPCエンドポイントのアーキテクチャを確認することで、トラフィックの流れや必要なリソースを理解する。
-
Interfaceエンドポイント
- EC2→プライベートホストゾーン→ENI→VPCエンドポイント→AWSサービス
-
VPCエンドポイントの作成に伴い、専用のENI(VPCエンドポイントの実体)が作成される。
-
AWSマネージドのプライベートホストゾーンによって、サービスのDNS名→ENIのプライベートIPアドレスに解決され、PrivateLink経由でサービスに到達する。
- 仮にインターネットとの通信経路が存在していたとしても、VPCエンドポイントの経路が優先される。
-
- EC2→プライベートホストゾーン→ENI→VPCエンドポイント→AWSサービス
-
Gatewayエンドポイント
- EC2→プライベートホストゾーン→ルートテーブル→VPCエンドポイント→AWSサービス
-
VPCエンドポイント作成時に指定したルートテーブルにVPCエンドポイント「vpce-XXX」へのルートが追加される(ENIは作成されない)。
-
AWSマネージドのプライベートホストゾーンによって、サービスのDNS名→パブリックIPアドレスに名前解決される。
-
ルートテーブルを参照し、送信先: マネージドプレフィックスリスト、ターゲット:VPCエンドポイント、というルートに従ってVPCエンドポイント経由でサービスに到達する。
-
仮にインターネットとの通信経路が存在していたとしても、VPCエンドポイントの経路が優先される。
-
マネージドプレフィックスリストとは、各種AWSサービスのIP CIDR一式をリストとしてまとめたもの。解決されたパブリックIPアドレスがこのリストに含まれているため上記の処理が成立する。
-
-
- EC2→プライベートホストゾーン→ルートテーブル→VPCエンドポイント→AWSサービス
-
Gateway Load Balancerエンドポイント(GWLBE)
- EC2→ルートテーブル→ENI→GWLBE→GWLB→Securiy Appliance
-
EC2インスタンスからの通信は、ルートテーブルの設定によりGWLBEに向けられる(名前解決を利用しない)。
-
GWLBEとGWLBはPrivateLink(VPCエンドポイント+VPCエンドポイントサービス)で接続されている。
- PrivateLinkを利用しているため、VPC同士のCIDR重複を考慮する必要がない。
-
GWLBはSucurity Applianceへ通信をルーティングする。
-
注意点として、GWLBEはAZごとに作成する必要がある。
-
- EC2→ルートテーブル→ENI→GWLBE→GWLB→Securiy Appliance
最後に
今回はPrivateLinkについて取り上げました。通信がどのような仕組みでAWSサービスに到達するのか、理解できていなかった部分もあるので深堀りした甲斐がありました。GWLBEは馴染みがないのでハンズオンの機会を別に設けようと思います。
次回もお楽しみに!╭( ・ㅂ・)و グッ !
Discussion