境界線を越える「秘密の配送ルート」!AWS PrivateLinkとNLBの魔法を紐解く
こんにちは!クラウドインフラの現場でSREをしているエンジニアです。
今日は、AWSネットワークの中でも少し「魔法」のように感じる、AWS PrivateLinkについてお話しします。
「自分のVPC(仮想ネットワーク)の外にあるサービスを使いたいけれど、インターネットには出したくない」。そんな、セキュリティが厳しい現場で必ずと言っていいほど出会うこの難問を、AWSはPrivateLinkという仕組みで見事に解決しています。
今日は、郵便配達の仕組みに例えながら、VPCの境界を越えてパケットが届くまでの「裏側の動き」を一緒に覗いてみましょう。
—
1. そもそも、なぜ「PrivateLink」が必要なの?
普通、インターネット経由でサービスにアクセスする場合、私たちは「インターネットゲートウェイ(IGW)」という大きな出口を通ります。これは例えるなら、「誰でも出入りできる公道」を通るようなもの。便利ですが、重要な機密情報を運ぶには少し心配ですよね。
かといって、VPCとVPCを直接つなぐ「VPCピアリング」だと、相手のネットワークとIPアドレスが重複しないように調整したり、ルーティングを細かく制御したりと、管理が非常に大変です。
ここで登場するのが PrivateLink です。これは、「特定のサービス宛の専用地下鉄」を掘るようなイメージです。公道を通らず、AWSの管理する安全なトンネルを通って、特定の目的地(サービス)だけに荷物を届けることができるんです。
—
2. 登場人物は3人:NLBとENI、そしてエンドポイント
この「専用地下鉄」を動かしているのは、主に以下の3つの要素です。
1. Network Load Balancer (NLB):サービス提供者のVPCにある「駅の改札口」。大量のパケットを捌く司令塔です。
2. エンドポイントネットワークインターフェイス (ENI):コンシューマ側(利用者側)のVPCにポツンと現れる「最寄り駅」。
3. VPCエンドポイント:地下鉄の入り口。
コンシューマ側のサーバーが「あ、あのサービスに荷物を送らなきゃ」とパケットを投げると、実はそのパケットは、自分のVPC内に作られた ENI という「仮想的な配送センター」に吸い込まれます。そこから先は、AWSの魔法のトンネルを通り、サービス側の NLB へと直行するわけです。
—
3. 実践:PrivateLinkを構築する雰囲気を感じよう
実際にインフラエンジニアが設定を行う際、どんなことをしているのか、CLIコマンドのイメージを見てみましょう。
手順1:サービス側でNLBを作成する
まずは「駅」を作ります。ポイントは、NLBを作成する際に「PrivateLink対応」の属性を持たせることです。
# NLBを作成するイメージ(AWS CLI)
aws elbv2 create-load-balancer \
--name my-secret-service-lb \
--type network \
--subnets subnet-12345678 # サービスを提供するサブネット
手順2:エンドポイントサービスとして公開する
NLBを「サービス」として登録することで、外部から接続許可を出します。
# NLBをエンドポイントサービスとして登録
aws ec2 create-vpc-endpoint-service-configuration \
--network-load-balancer-arns arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/net/my-secret-service-lb/abc12345
手順3:コンシューマ側で「駅(ENI)」を作る
利用者は、提供された「サービス名(com.amazonaws.vpce.ap-northeast-1.vpce-svc-xxxxxxxx)」を指定して、自分のVPC内にエンドポイントを作成します。
# 利用者側VPCに接続口(ENI)を作成する
aws ec2 create-vpc-endpoint \
--vpc-id vpc-abcdefgh \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.vpce.ap-northeast-1.vpce-svc-xxxxxxxx \
--subnet-ids subnet-87654321 # このサブネットにENIが生成されます
—
4. なぜ「NLB」じゃないといけないの?
ここで鋭い方はこう思うはずです。「なぜロードバランサーは ALB ではなく NLB なの?」と。
理由はシンプル。パケットの「鮮度」です。
ALB はHTTPのルールを見て通信を制御しますが、PrivateLink は、より低レイヤー(TCP/UDPレベル)でパケットを転送したいと考えています。NLB はパケットの中身を深く覗き込まず、高速かつ確実に転送することに特化しているため、PrivateLinkの「専用線」のような特性と非常に相性が良いのです。
まとめ:インフラは「地図」を描く仕事
AWS PrivateLinkを理解するコツは、「自分のVPCの中に、あたかも相手のサービスがあるかのように見える」という感覚を持つことです。
実際にコンシューマ側のサーバーからは、ENI に割り当てられたプライベートIPアドレス(例:10.0.1.5)に対してアクセスするだけで、裏側でAWSが自動的に適切なルーティングを行い、安全にサービス側の NLB へ荷物を届けてくれます。
インフラ構築は、まるで地図を描くような仕事です。
どこに駅を置き、どのトンネルを通すのか。その全体像が見えたとき、ネットワークトラブルも怖くなくなりますよ。
もし次にAWSの管理画面で「VPCエンドポイント」という項目を見かけたら、「ああ、ここに秘密の地下鉄の駅があるんだな」と思い出してみてください。きっと、今までよりも少しだけ、AWSのネットワークが身近に感じられるはずです!
それでは、また次回の記事でお会いしましょう!
コメント