【AWSサービス 基礎編】VPC エンドポイントで AWS サービスへプライベート接続する

目次

概要

VPC 内のリソースから Amazon S3 や AWS Systems Manager などの AWS サービスにアクセスする場合、通常はインターネットゲートウェイや NAT ゲートウェイを経由してパブリックなエンドポイントに接続します。しかし、外部に出ない構成のプライベートサブネットからこれらのサービスを利用したい、あるいはセキュリティ要件上トラフィックをインターネットに出したくない、というケースは少なくありません。

VPC エンドポイントは、インターネットゲートウェイや NAT ゲートウェイを経由せず、VPC から AWS サービスへプライベートに接続するための仕組みです。トラフィックは AWS のネットワーク内に閉じるため、セキュリティが向上し、NAT ゲートウェイのデータ処理料金を抑えられる場合もあります。

本記事では、VPC エンドポイントの 2 種類(ゲートウェイ型・インターフェイス型)の違いを理解し、S3 向けのゲートウェイ型エンドポイントと Systems Manager 向けのインターフェイス型エンドポイントを実際に作成してプライベート接続を構成するところまで体験します。

VPC エンドポイントの全体像(プライベートサブネットから、インターネットを経由せず S3 へはゲートウェイ型、SSM へはインターフェイス型エンドポイント経由で接続する構成)を示す図解を挿入
VPC エンドポイントの全体像(プライベートサブネットから、インターネットを経由せず S3 へはゲートウェイ型、SSM へはインターフェイス型エンドポイント経由で接続する構成)を示す図解を挿入

この記事のメリット

  • VPC エンドポイントの役割と、インターネット経由のアクセスとの違いを理解できる
  • ゲートウェイ型エンドポイントとインターフェイス型エンドポイントの仕組み・対象サービス・課金の違いを把握できる
  • ゲートウェイ型エンドポイントを作成し、ルートテーブルにプレフィックスリスト宛のルートが追加される挙動を確認できる
  • インターフェイス型エンドポイントをサブネット・セキュリティグループ・プライベート DNS とあわせて構成する手順を習得できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

クラウドおさる

とひさん、プライベートサブネットに置いた EC2 から S3 のファイルを読みたいんですけど、プライベートサブネットってインターネットに出られないですよね?どうやって S3 にアクセスするんですか?

土肥

いい質問だね!S3 や DynamoDB みたいな AWS のサービスって、実はインターネット越しの「パブリックなエンドポイント」を持っているんだ。だから普通にアクセスしようとすると、インターネットゲートウェイか NAT ゲートウェイを通って外に出る必要があるんだよ。

クラウドおさる

なるほど。でもプライベートサブネットだとそのルートがないから、アクセスできないってことですね。

土肥

そうそう。そこで登場するのが VPC エンドポイントなんだ。VPC エンドポイントを使うと、インターネットゲートウェイや NAT ゲートウェイを経由せずに、VPC から AWS サービスへプライベートに接続できるようになるんだよ。トラフィックは AWS のネットワーク内に閉じたままなんだ。

クラウドおさる

インターネットに一度も出ずに S3 に届くってことですか!それはセキュリティ的にも安心ですね。

土肥

その通り。トラフィックが AWS ネットワークの外に出ないからセキュリティが上がるし、NAT ゲートウェイを経由しなくなることでデータ処理料金を節約できる場合もあるんだ。

インターネット経由のアクセス(IGW / NAT 経由)と VPC エンドポイント経由のアクセスの経路を対比した図解
インターネット経由のアクセス(IGW / NAT 経由)と VPC エンドポイント経由のアクセスの経路を対比した図解

エンドポイントの種類

クラウドおさる

VPC エンドポイントって 1 種類だけなんですか?

土肥

それがね、大きく分けて 2 種類あるんだ。「ゲートウェイ型エンドポイント」と「インターフェイス型エンドポイント」だよ。まずはゲートウェイ型から説明するね。

土肥

ゲートウェイ型エンドポイントは、対象が Amazon S3 と DynamoDB の 2 つだけ、という特別なエンドポイントなんだ。AWS PrivateLink という仕組みは使わずに、ルートテーブルにルートを追加することで実現するんだよ。

クラウドおさる

ルートテーブルにルートを追加…って、前回やったインターネットゲートウェイへのルートみたいな感じですか?

土肥

イメージは近いよ。ゲートウェイ型エンドポイントを作るときに、どのルートテーブルに関連付けるかを選ぶんだ。すると、そのルートテーブルに「S3 宛のトラフィックはこのエンドポイントへ」というルートが自動で追加されるんだよ。送信先には「プレフィックスリスト」というものが使われるんだ。

クラウドおさる

プレフィックスリスト…また新しい言葉が出てきました。

土肥

プレフィックスリストは、複数の CIDR をひとまとめにした名前付きのリストだと思ってもらえばいいよ。S3 のパブリック IP アドレス範囲は広くて頻繁に変わるから、いちいち CIDR を書くのは大変なんだ。そこで AWS が「S3 用のプレフィックスリスト」を用意してくれていて、ルートの送信先にそれを指定するんだよ。pl- で始まる ID で表されるよ。

クラウドおさる

なるほど!S3 宛かどうかを AWS 管理のリストで判定してくれるんですね。ちなみにゲートウェイ型って料金はかかるんですか?

土肥

ゲートウェイ型エンドポイントは追加料金なしで使えるんだ。これは嬉しいポイントだね。じゃあ次はもう 1 つのインターフェイス型を見てみよう。

土肥

インターフェイス型エンドポイントは、AWS PrivateLink という技術をベースにしたエンドポイントで、S3 や DynamoDB だけじゃなく、Systems Manager や EC2、CloudWatch などほとんどの AWS サービスに対応しているんだ。

クラウドおさる

対応サービスが広いんですね!ゲートウェイ型と仕組みはどう違うんですか?

土肥

インターフェイス型は、指定したサブネットの中に ENI(Elastic Network Interface)が作られるんだ。この ENI はサブネットの CIDR からプライベート IP アドレスを 1 つもらうよ。VPC 内のリソースは、その ENI のプライベート IP を経由してサービスに接続するんだ。

クラウドおさる

ENI ってサブネットの中の「ネットワークの差込口」みたいなものでしたよね。エンドポイント用の差込口がサブネットにできるイメージですか?

土肥

まさにそういうイメージだよ!ENI には IP アドレスがあるから、セキュリティグループも関連付けられるんだ。VPC 内のリソースからその ENI へ HTTPS(443 番ポート)で通信できるようにセキュリティグループを設定するのがポイントだね。

クラウドおさる

ENI に IP があるってことは、サービスの名前を引いたら本来はパブリックな IP が返ってきそうですけど、それだとエンドポイントを通らないですよね?

土肥

いいところに気づいたね!そこで使うのが「プライベート DNS」という機能なんだ。これを有効にすると、たとえば ssm.ap-northeast-1.amazonaws.com のようなサービスの標準の DNS 名を引いたときに、ENI のプライベート IP が返ってくるようになるんだ。だからアプリケーション側のコードを変えなくても、自動的にエンドポイント経由になるんだよ。

クラウドおさる

コードを変えずに済むのは便利ですね!プライベート DNS を使うために何か前提はありますか?

土肥

プライベート DNS を使うには、VPC の「DNS ホスト名」と「DNS 解決」の両方を有効にしておく必要があるんだ。VPC を作るときに設定する項目だね。インターフェイス型は S3 以外のサービスではプライベート DNS がデフォルトで有効になるよ。

クラウドおさる

インターフェイス型は料金がかかるんでしたっけ…?

土肥

そうだね。インターフェイス型エンドポイントは、エンドポイントが存在している時間に応じた時間課金と、処理したデータ量に応じたデータ処理課金がかかるんだ。使わなくなったら削除するのを忘れないようにしようね。ここまでの 2 種類をまとめるとこうなるよ。

項目ゲートウェイ型エンドポイントインターフェイス型エンドポイント
基盤技術ルートテーブルによるルーティングAWS PrivateLink
対象サービスAmazon S3、DynamoDB のみS3・DynamoDB を含むほとんどの AWS サービス
VPC 側に作られるものルートテーブルへのルート(プレフィックスリスト宛)サブネット内の ENI
セキュリティグループ関連付け不可(ルート単位の制御)ENI に関連付け可能
プライベート DNS該当なし利用可能(標準 DNS 名で解決)
VPC 外からのアクセス不可(同一 VPC 内のみ)可能(VPN・ピアリング経由など)
課金追加料金なし時間課金 + データ処理課金
クラウドおさる

S3 と DynamoDB ならゲートウェイ型を選んでおけば追加料金なし、それ以外のサービスや VPC 外からのアクセスが必要ならインターフェイス型、という使い分けですね!

土肥

その整理でばっちりだよ。ちなみにもう 1 つ「Gateway Load Balancer エンドポイント」という種類もあって、これはファイアウォールなどの仮想アプライアンスにトラフィックを通すために使うものなんだ。今回の記事ではこういうものもある、という紹介にとどめておくね。

エンドポイントポリシーによるアクセス制御

クラウドおさる

エンドポイントを作れば VPC からサービスに繋がるのはわかりました。でも「この S3 バケットだけ許可したい」みたいな細かい制御はできるんですか?

土肥

できるよ。それが「エンドポイントポリシー」なんだ。エンドポイントポリシーは、そのエンドポイント経由でどのサービス・どのリソースへのアクセスを許可するかを定義する IAM ポリシー形式のドキュメントなんだ。

クラウドおさる

エンドポイントに対してポリシーを貼るんですね。IAM ユーザーに貼るポリシーとは別物ですか?

土肥

別物だよ。IAM ポリシーが「誰が何をできるか」を制御するのに対して、エンドポイントポリシーは「このエンドポイントを通る通信で何が許可されるか」を制御するんだ。両方の条件を満たしたアクセスだけが通る、と考えるといいよ。

土肥

たとえばエンドポイントポリシーで「特定の S3 バケットへの読み取りだけ許可」と書いておけば、そのエンドポイント経由ではほかのバケットには一切アクセスできなくなるんだ。作成時はデフォルトでフルアクセスのポリシーが付くから、必要に応じて絞り込む、という使い方になるね。

クラウドおさる

エンドポイントという「通り道」自体に制限をかけられるんですね。多層防御という感じがします!

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

S3 向けのゲートウェイ型エンドポイントと、Systems Manager 向けのインターフェイス型エンドポイントを作成し、プライベートサブネットから AWS サービスへプライベート接続する構成を VPC コンソールで作成します。

前提条件

  • リージョン: ap-northeast-1(東京)
  • IAM ユーザーまたはロールに VPC・エンドポイント関連リソースの操作権限があること
  • 以下のリソースが作成済みであること
リソース種別リソース名補足
VPCvpce-vpcCIDR 10.0.0.0/16、DNS ホスト名・DNS 解決が有効
プライベートサブネットvpce-private-subnetCIDR 10.0.1.0/24、AZ: ap-northeast-1a
ルートテーブルvpce-private-rtvpce-private-subnet に関連付け済み
セキュリティグループvpce-endpoint-sgVPC CIDR からの HTTPS(443) インバウンドを許可

作成するリソース一覧

リソース種別リソース名用途
ゲートウェイ型エンドポイントvpce-s3-gatewayS3 へのプライベート接続
インターフェイス型エンドポイントvpce-ssm-interfaceSystems Manager(ssm)へのプライベート接続

ステップ1: S3 向けゲートウェイ型エンドポイントを作成する

  • AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します
  • 上部の検索バーに VPC と入力し、表示された「VPC」を選択します
  • 左側ナビゲーションの「エンドポイント」を選択し、「エンドポイントを作成」をクリックします
  • 以下の内容を入力します
  • 名前タグ: vpce-s3-gateway
  • タイプ: AWS のサービス
  • 「サービス」の検索ボックスに s3 と入力し、絞り込み条件で「タイプ」が Gateway のサービス(com.amazonaws.ap-northeast-1.s3)を選択します
  • 「VPC」で vpce-vpc を選択します
  • 「ルートテーブル」セクションで vpce-private-rt にチェックを入れます
  • 「ポリシー」は フルアクセス を選択します
ゲートウェイ型エンドポイント作成画面(サービス・VPC・ルートテーブルを選択した状態)
ゲートウェイ型エンドポイント作成画面(サービス・VPC・ルートテーブルを選択した状態)
  • ページ下部の「エンドポイントを作成」をクリックします
  • エンドポイントの状態が 使用可能 になったことを確認します
ゲートウェイ型エンドポイント作成完了画面(状態が「使用可能」になっている状態)
ゲートウェイ型エンドポイント作成完了画面(状態が「使用可能」になっている状態)

ステップ2: ルートテーブルに追加されたルートを確認する

ゲートウェイ型エンドポイントを作成すると、関連付けたルートテーブルに S3 宛のルートが自動で追加されます。

  • 左側ナビゲーションの「ルートテーブル」を選択します
  • vpce-private-rt を選択し、「ルート」タブを選択します
  • 送信先がプレフィックスリスト(pl- で始まる ID)、ターゲットが作成したエンドポイント(vpce- で始まる ID)のルートが追加されていることを確認します
vpce-private-rt のルート一覧(プレフィックスリスト宛のエンドポイントルートが追加されている状態)
vpce-private-rt のルート一覧(プレフィックスリスト宛のエンドポイントルートが追加されている状態)

このルートにより、vpce-private-subnet 内のリソースからの S3 宛トラフィックがエンドポイント経由でルーティングされます。

ステップ3: Systems Manager 向けインターフェイス型エンドポイントを作成する

  • 左側ナビゲーションの「エンドポイント」を選択し、「エンドポイントを作成」をクリックします
  • 以下の内容を入力します
  • 名前タグ: vpce-ssm-interface
  • タイプ: AWS のサービス
  • 「サービス」の検索ボックスに ssm と入力し、サービス名が com.amazonaws.ap-northeast-1.ssm(タイプが Interface)のサービスを選択します
  • 「VPC」で vpce-vpc を選択します
  • 「追加設定」の「DNS 名を有効化」にチェックが入っていることを確認します(プライベート DNS が有効になります)
  • 「サブネット」セクションで、アベイラビリティーゾーン ap-northeast-1a を選択し、サブネットに vpce-private-subnet を指定します
  • 「IP アドレスタイプ」は IPv4 を選択します
インターフェイス型エンドポイントのサブネット・DNS 設定画面
インターフェイス型エンドポイントのサブネット・DNS 設定画面
  • 「セキュリティグループ」セクションで、vpce-endpoint-sg にチェックを入れます(VPC のデフォルトセキュリティグループにチェックが入っている場合は外します)
  • 「ポリシー」は フルアクセス を選択します
インターフェイス型エンドポイントのセキュリティグループ選択画面
インターフェイス型エンドポイントのセキュリティグループ選択画面
  • ページ下部の「エンドポイントを作成」をクリックします

ステップ4: インターフェイス型エンドポイントの状態を確認する

  • 左側ナビゲーションの「エンドポイント」を選択し、vpce-ssm-interface を選択します
  • 作成直後の状態は 保留中 で、しばらくすると 使用可能 に変わります
  • 「サブネット」タブを選択し、vpce-private-subnet 内に ENI のプライベート IP アドレスが割り当てられていることを確認します
インターフェイス型エンドポイント詳細画面(状態が「使用可能」で、サブネットに ENI の IP が表示されている状態)
インターフェイス型エンドポイント詳細画面(状態が「使用可能」で、サブネットに ENI の IP が表示されている状態)

「詳細」タブの「DNS 名」に、ssm.ap-northeast-1.amazonaws.com を含む DNS 名が表示されていれば、プライベート DNS が有効になっています。VPC 内のリソースから Systems Manager の標準 DNS 名を引くと、このエンドポイントの ENI のプライベート IP が返されるようになります。

まとめ

  • VPC エンドポイントは、インターネットゲートウェイや NAT ゲートウェイを経由せず、VPC から AWS サービスへプライベートに接続する仕組みである
  • ゲートウェイ型エンドポイントは Amazon S3 と DynamoDB が対象で、ルートテーブルにプレフィックスリスト宛のルートが追加され、追加料金なしで利用できる
  • インターフェイス型エンドポイントは AWS PrivateLink ベースで、サブネット内に ENI が作られ、セキュリティグループとプライベート DNS を利用でき、時間課金とデータ処理課金がかかる
  • プライベート DNS を有効にすると、サービスの標準 DNS 名がエンドポイントの ENI のプライベート IP に解決され、アプリケーションの変更なしでエンドポイント経由の通信になる
  • エンドポイントポリシーを使うと、エンドポイント経由でアクセスできるサービスやリソースを制限できる

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次