Cloud Service
AWS PrivateLink
VPC からインターネットを経由せず AWS や SaaS サービスへ閉域で安全に接続する仕組み
- 1.インターフェース型 VPC エンドポイントを通じて対象サービスへプライベート IP で接続する
- 2.通信が AWS のネットワーク内に閉じ、インターネットゲートウェイや NAT を経由しない
- 3.提供側はエンドポイントサービス、利用側はエンドポイントを作り NLB 経由で公開・接続する
AWS PrivateLink は、VPC 内のリソースからインターネットを経由せずに、AWS のマネージドサービスやパートナー/自社の SaaS サービスへ、プライベートに接続するためのネットワーキング技術です。接続点として VPC 内に作成したインターフェース型エンドポイントを使い、通信を AWS のバックボーンネットワーク内に閉じ込めます。
解決する課題
オンプレミスや従来の VPC 設計では、S3 や DynamoDB のような AWS のパブリックサービス、あるいは外部の SaaS にアクセスするとき、通信がインターネットゲートウェイや NAT ゲートウェイを経由してパブリックなエンドポイントへ向かうのが一般的でした。この方式には次のような課題があります。
- 通信経路の一部がインターネットを通るため、攻撃面が広がり、データ流出のリスクや経路上の盗聴に対する懸念が残る。
- パブリック IP やインターネットゲートウェイ、NAT ゲートウェイといった構成要素が必要になり、ネットワーク設計とセキュリティ統制が複雑になる。
- VPC ピアリングで相手の VPC 全体とつなぐと、必要以上に広いネットワーク到達性を許してしまい、IP アドレス範囲の重複問題も起こりやすい。
PrivateLink は、接続したい「サービス」という単位だけを VPC に持ち込む発想で、これらを解決します。利用者はエンドポイントを通じて特定サービスにのみ到達でき、ネットワーク全体を相互接続する必要がありません。通信は閉域で完結し、インターネット経由の経路を排除できます。
主要概念と用語
- インターフェース VPC エンドポイント: 利用側 VPC のサブネット内に作成される接続点。実体は VPC 内に配置される Elastic Network Interface であり、プライベート IP アドレスを持つ。これを宛先にすると対象サービスへ閉域で到達できる。
- エンドポイントサービス: サービスを提供する側が公開する単位。提供側は Network Load Balancer または Gateway Load Balancer の背後に実体を置き、これをエンドポイントサービスとして公開する。
- サービス名: エンドポイントサービスを一意に識別する文字列。利用側はこの名前を指定してエンドポイントを作成する。
- AWS サービス向けエンドポイント: S3、DynamoDB、Kinesis、Secrets Manager など多数の AWS サービスがあらかじめエンドポイントサービスとして提供されており、利用側はインターフェースエンドポイントを作るだけで閉域接続できる。
- プライベート DNS: エンドポイントに対して、対象サービスの正規ドメイン名を VPC 内部でエンドポイントのプライベート IP に解決させる機能。アプリケーションのエンドポイント設定を変えずに閉域経路へ切り替えられる。
- 承認制接続: エンドポイントサービス側で、接続要求を自動承認にするか手動承認にするかを選べる。許可するアカウントやプリンシパルも制御できる。
- ゲートウェイ型エンドポイント: S3 と DynamoDB に限り提供される別方式で、ルートテーブルにルートを追加して接続する。PrivateLink のインターフェース型とは仕組みが異なる点に注意する。
仕様・制限・クォータ
PrivateLink を設計する際に意識すべき仕様上の性質は次のとおりです。具体的な上限値はリージョンや時期で変わりうるため、定性的に把握し、正確な数値は公式ドキュメントとサービスクォータの画面で確認してください。
- インターフェースエンドポイントは、指定したサブネットごとに ENI が 1 つ作成される。可用性を高めるには複数のアベイラビリティーゾーンのサブネットを指定する。
- エンドポイントは作成した VPC とアカウントの中でだけ機能し、ENI のプライベート IP はそのサブネットの CIDR から払い出される。
- 提供側の背後に置けるロードバランサーは Network Load Balancer または Gateway Load Balancer であり、Application Load Balancer を直接エンドポイントサービスの実体にすることはできない。
- 1 つの VPC に作成できるエンドポイント数、1 つのエンドポイントサービスが受け付けられる接続数などにはアカウント単位のクォータがある。大規模な相乗り構成では、これらの上限を事前に見積もる。
- インターフェースエンドポイントは原則として同一リージョン内のサービスへ接続する。リージョンをまたぐ場合は別の経路設計が必要になることがある。
- セキュリティグループはエンドポイントの ENI に適用でき、これによりエンドポイントへ到達できる送信元を制御する。
内部の仕組み
PrivateLink の接続は、利用側と提供側の二者で成り立ちます。
提供側は、実際に処理を行うインスタンスやコンテナを Network Load Balancer のターゲットとして登録し、その NLB を指定してエンドポイントサービスを作成します。作成するとサービス名が払い出されます。提供側は、どのアカウントやプリンシパルからの接続を許可するか、また接続要求を自動で受け入れるか手動で承認するかを設定します。
利用側は、提供側から受け取ったサービス名を指定して、自分の VPC のサブネット内にインターフェースエンドポイントを作成します。すると、指定サブネットに ENI が配置され、プライベート IP が割り当てられます。利用側のアプリケーションがこのプライベート IP、またはプライベート DNS で解決される名前に対して通信を始めると、トラフィックは ENI を入口として AWS のネットワーク内を通り、提供側の NLB に到達します。
重要なのは、この経路上にインターネットゲートウェイも NAT も介在しないことです。接続は片方向の到達性として確立され、利用側から提供側のサービスへ到達できますが、提供側から利用側 VPC のリソースへ自由にアクセスできるわけではありません。これにより、VPC ピアリングのように両者のネットワーク全体を結合することなく、サービス単位の最小限の到達性だけを実現できます。AWS のマネージドサービス向けエンドポイントも、内部的には同じ仕組みで AWS 側が提供するエンドポイントサービスに接続しています。
設計パターン / ベストプラクティス
- マルチ AZ で冗長化する: エンドポイントを複数のアベイラビリティーゾーンのサブネットに展開し、特定 AZ の障害時にも接続を維持する。提供側の NLB も同様に複数 AZ にまたがって構成する。
- プライベート DNS を活用する: AWS サービス向けエンドポイントではプライベート DNS を有効にすることで、アプリケーションが使う正規のドメイン名がそのままエンドポイント経由に解決される。コード変更なしで閉域化できる。
- ハブ&スポークで共有する: 共有用 VPC にエンドポイントを集約し、Transit Gateway や Route 53 Resolver を組み合わせて複数の VPC やオンプレミスから利用する設計にすると、エンドポイントの重複作成とコストを抑えられる。
- SaaS 提供をエンドポイントサービス化する: 自社サービスを他アカウントへ閉域提供する場合、NLB の背後に実体を置きエンドポイントサービスとして公開する。承認制と許可プリンシパルの設定でテナントを制御する。
- 最小権限の到達性を意識する: VPC ピアリングや Transit Gateway で広く相互接続する代わりに、必要なサービスだけをエンドポイントで持ち込む。これにより到達範囲を絞り込み、横移動のリスクを下げる。
プライベート DNS を有効にすると、その VPC 内では対象サービスの名前がエンドポイントのプライベート IP に解決されます。オンプレミスから同じ名前を解決させたい場合は、Route 53 Resolver のインバウンド/アウトバウンドエンドポイントなどを併用する設計が必要になります。
運用・監視
- ネットワークの可視化: VPC フローログを使うと、エンドポイントの ENI を通過するトラフィックを記録できる。接続元や量の把握、トラブルシュートに役立つ。
- 状態の監視: エンドポイントの接続状態や、提供側エンドポイントサービスの接続要求の状態を定期的に確認する。手動承認にしている場合は、保留中の要求を見落とさない運用を整える。
- メトリクスとアラーム: 提供側の NLB のヘルスチェックやターゲットの健全性を CloudWatch で監視し、異常時にアラームを上げる。接続が確立できない事象の多くは、背後のターゲット側の問題に起因する。
- 構成管理: エンドポイントとそのポリシー、許可プリンシパルの設定をコード化(Infrastructure as Code)して管理し、意図しない公開範囲の変更を検知できるようにする。
コスト
PrivateLink の料金は、おおむね次の要素で構成されます。具体的な単価はリージョンや時期で変動するため、最新の料金ページで確認してください。
- エンドポイントの稼働料金: インターフェースエンドポイントは、配置した AZ ごとの ENI 単位で時間あたりの料金が発生する。多数の AZ に展開すると稼働コストも増える。
- データ処理料金: エンドポイントを通過したデータ量に応じた処理料金がかかる。
- 設計上の考慮: 各 VPC で同じエンドポイントを重複して作るとコストが積み上がるため、共有 VPC への集約が有効なことがある。一方で、集約のために Transit Gateway などを経由させると、その分の転送料金が別途かかる点も合わせて評価する。
インターフェースエンドポイントは接続が無くても稼働している限り時間課金されます。検証用に作って放置したエンドポイントが地味なコスト要因になりやすいため、棚卸しを習慣化してください。
セキュリティ
- 経路の閉域化: 通信が AWS ネットワーク内に閉じ、インターネットを経由しないため、経路上の露出を大幅に減らせる。これが PrivateLink の主要なセキュリティ価値である。
- エンドポイントポリシー: AWS サービス向けのインターフェースエンドポイントには、エンドポイント経由で許可する操作や対象リソースを制限するポリシーを付与できる。例えば特定バケットへのアクセスだけを許すといった制御が可能。
- ネットワーク層の制御: エンドポイントの ENI にセキュリティグループを適用し、到達できる送信元を絞る。
- 承認とプリンシパル制御: 提供側は接続を手動承認にし、許可するアカウントやプリンシパルを明示することで、意図しない第三者からの接続を防ぐ。
- 暗号化との併用: PrivateLink 自体は経路を閉じるが、アプリケーション層の TLS など転送中の暗号化は引き続き適切に設定する。
Well-Architected の観点
セキュリティの柱の観点が中心です。インターネットを経由しない閉域接続により、攻撃面を縮小し、データを VPC とサービスの間に閉じ込められます。エンドポイントポリシーやセキュリティグループによる最小権限の到達性は、ネットワーク防御の多層化に寄与します。あわせて、信頼性の柱の観点ではマルチ AZ 配置による可用性の確保、コスト最適化の柱の観点ではエンドポイントの集約と棚卸しによる無駄の削減が関係します。
試験で問われるポイント
- インターフェースエンドポイント(PrivateLink)とゲートウェイエンドポイント(S3 と DynamoDB のみ、ルートテーブルで接続)の違いを区別できること。
- 「インターネットを経由せず AWS サービスや SaaS へ閉域接続したい」という要件には PrivateLink を選ぶ、という典型パターン。
- 提供側の実体は Network Load Balancer の背後に置く点。Application Load Balancer は直接の対象にできない。
- VPC ピアリングや Transit Gateway が両者のネットワーク全体を結ぶのに対し、PrivateLink はサービス単位の一方向到達性であり、IP 範囲の重複に強いこと。
- プライベート DNS を有効にすると、対象サービスの正規ドメイン名がエンドポイントのプライベート IP に解決されること。
関連サービス・比較
ネットワークを相互接続する VPC ピアリングと、サービス単位で接続する PrivateLink は、しばしば選択肢として比較されます。広い相互到達性が要るなら前者、特定サービスへの最小限の到達でよいなら後者が向きます。
| 観点 | AWS PrivateLink | VPC ピアリング |
|---|---|---|
| 接続の単位 | 特定のサービス単位 | VPC 全体のネットワーク単位 |
| 到達の方向 | 利用側から提供側への一方向 | 双方向で相互到達 |
| IP 範囲の重複 | 重複していても利用しやすい | CIDR が重複すると接続できない |
| 主な用途 | AWS や SaaS への閉域なサービス提供・利用 | 自社管理の VPC 同士を広くつなぐ |
| セキュリティ範囲 | サービスに限定され攻撃面が狭い | ネットワーク全体に到達性が広がる |
ハンズオン / CLI例
次は、S3 への閉域接続を念頭に、ゲートウェイ型ではなくインターフェース型エンドポイントを作成する基本的な流れの例です。サービス名やサブネット、セキュリティグループは自分の環境の値に置き換えてください。
# 接続可能なエンドポイントサービス名を確認する(例として S3 を検索)
aws ec2 describe-vpc-endpoint-services \
--filters "Name=service-name,Values=com.amazonaws.ap-northeast-1.s3" \
--query "ServiceNames"
# インターフェース型エンドポイントを作成する
# 複数 AZ のサブネットを指定して冗長化し、プライベート DNS を有効にする
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--vpc-id vpc-0123456789abcdef0 \
--service-name com.amazonaws.ap-northeast-1.s3 \
--subnet-ids subnet-aaa subnet-bbb \
--security-group-ids sg-0123456789abcdef0 \
--private-dns-enabled
# 作成したエンドポイントの状態を確認する
aws ec2 describe-vpc-endpoints \
--filters "Name=vpc-id,Values=vpc-0123456789abcdef0" \
--query "VpcEndpoints[].[VpcEndpointId,State,ServiceName]"
AWS Service
AWS PrivateLinkを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: AWS / カテゴリ: ネットワーキング / 難易度: intermediate
導入後に効く点
通信が AWS のネットワーク内に閉じ、インターネットゲートウェイや NAT を経由しない
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- ネットワーキング
- 難易度
- intermediate
- 関連資格
- SAA-C03 / ANS-C01 / SCS-C02
- 設計柱
- security
判断チェックリスト
- 自社の用途が「ネットワーキング / security」に近いか確認する。
- 強みである「インターフェース型 VPC エンドポイントを通じて対象サービスへプライベート IP で接続する」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。