19
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS完全初心者がAWS上にセキュアなプライベートネットワーク空間を作成してみた話(NATゲートウェイ/VPC Endpoint)

Last updated at Posted at 2025-05-17

はじめに

こんにちは。Tsukasaです!
今日はAWS公式ハンズオンのセキュアなプライベートネットワーク空間を作成してみた事について記事にしていきたいと思います。
NATゲートウェイやVPCエンドポイントといった、認定試験でもよく出る内容となっているので、ここで実際にハンズオンで手を動かすことによってより理解が深まると思います。
それでは早速見て行きたいと思います!

今回やること

今回やることは、一言で言うとVPC上にあるプライベートサブネットからVPC外のAWSサービスに安全に接続すると言うった内容になります。
AWSのハンズオンでは以下のものを用いました。こちらも興味のある方は是非ご覧ください。

今回やりたいことは下記のようになります。
まず、VPCを作成して、そこに、パブリックサブネットとプライベートサブネットを2つずつ置きます。
今回は敢えてEC2インスタンスをパブリックサブネットに置き、普通にWebサイトにアクセスができるかを確認し、プライベートサブネットにもEC2を置き、NATゲートウェイやVPNエンドポイントを用いて、VPC外部にあるSSMやS3に接続できることをゴールとします。
image.png

VPCの作成

まずはVPCの作成から始めます。
VPCはEC2やDBなどの基盤サービスを置くために必要な場所になります。
まずはコンソール画面からVPCを検索して、下記の画面を開きます。オレンジの「VPCの作成」ボタンをクリックします。
image.png

本来であれば、「VPCなど」を選択し、ここでサブネットまで一緒に作りますが、今回は敢えて「VPCのみ」を選択します。
設定は下記のようにしてもらえれば大丈夫です。
名前は各自で決めていただき、IPv4 CIDRブロックは10.0.0.0/16とします。
後はデフォルトの設定とし、作成ボタンをクリックします。
image.png

サブネットの作成

続いてサブネットの作成を行います。
VPCの画面の左側から「サブネット」を選択し、サブネットの作成を行います。
image.png

まずはVPCの紐付けを行います。
先程作成したVPCを紐付けます。
image.png

サブネットは全部で4つ作ります。
パブリックサブネットが2つ、プライベートサブネット2つになります。
下記のように設定し、残りはデフォルトの設定のままで大丈夫です。
パブリックサブネット1
image.png

パブリックサブネット2
image.png

プライベートサブネット1
image.png

プライベートサブネット2
image.png

サブネットが完成したら、次はインターネットゲートウェイを作成します。
VPCは作りましたが、インターネットゲートウェイがないと、インターネットと通信ができません。
そのため必須な機能となります。
こちらもVPCの画面の左側から「インターネットゲートウェイ」を選択し、右上のオレンジのボタンから作成を開始ます。
image.png

こちらでは名前だけ付けます。
基本的にどの機能も同じですが、わかりやすい名前にすると良いと思います。
image.png

インターネットゲートウェイが完成したら、今度はVPCと紐付けする必要があります。
これをやらないとせっかく作っても機能しないのでこちらも必須の作業になります。
下記画像のように「アクション」から「VPCアタッチ」を選択します。
image.png

先程作成したVPCを選択して、右下のオレンジのボタンを押して紐付けします。
image.png

Route Tableの作成

次はRoute Tableの作成を行います。
VPC内でトラフィックのルーティング(経路)を決める設定です。
image.png

こちらもVPCの画面の左側から「ルートテーブル」に行き、右上のオレンジのボタンを押して、ルートテーブルの作成を行います。
image.png

まずはパブリックルートテーブルの作成を行います。
基本的には下記の通りにやってもらえれば大丈夫です。
VPCの紐付けもここで行います。
後はデフォルトの設定で、オレンジの右下のボタンを押して作成します。
プライベートルートテーブルも同様の流れで作成します。
image.png

作成後下記のようにパブリックルートテーブルを選択し、右下の「ルートを編集」ボタンを押します。
image.png

ここでは先程作成したインターネットゲートウェイを選択します。
image.png

次はサブネットの関連付けを行います。
右下の「サブネットの関連付けを編集」ボタンをクリックします。
image.png

ここではパブリックサブネットを関連付けます。
パブリックサブネットは2つ作りましたよね。そのため2つ選択して関連付けます。
image.png

次はプライベートルートテーブルも同じようにやります。
プライベートルートテーブルはパブリックルートテーブルとは違って、ルートを編集する必要がありません。何故なら、プライベートパブリックテーブルはメインのルートテーブルとなっているため、その設定が必要がないからです。そのため、ルートを編集する作業を省いて、サブネットの関連付けを行うところから始めます。
image.png

こちらもパブリックルートテーブルと同じように、サブネットを選択します。
こちらではパブリックサブネットを選択します。

image.png
image.png

動作確認とEC2/IAMロールの作成

次は下記画像のようにパブリックサブネットにEC2とIAMロールを作成した上で、Webサイトが動作するかの確認を行います。
image.png

コンソール画面からIAMを検索して選択します。
image.png

下記のようにしてもらえれば大丈夫です。
今回はEC2にIAMロールを紐づけたいので、ユースケースはEC2を選択します。
スクリーンショット 2025-05-17 11.13.40.png

許可ポリシーにSSMと検索して、「AmazonSSMFullAccess」を選択します。
スクリーンショット 2025-05-17 11.14.32.png

ロール名を下記のように設定して、作成します。
スクリーンショット 2025-05-17 11.15.24.png

続きまして、EC2を作成します。右側のオレンジボタンを押して作成を行います。
スクリーンショット 2025-05-17 11.16.30.png

基本的には下記のように設定してもらえれば大丈夫です。
スクリーンショット 2025-05-17 11.20.06.png

スクリーンショット 2025-05-17 11.20.37.png

VPCは作成済のものを選択します。サブネットはパブリックサブネットを選択します。
スクリーンショット 2025-05-17 11.21.21.png

スクリーンショット 2025-05-17 11.21.42.png

高度な詳細で先程作成したIAMロールを選択します。後はデフォルトで大丈夫です。
スクリーンショット 2025-05-17 11.23.39.png

下記のようにコードを入力します。
こちらはハンズオン資料に記載があるので、ご確認ください。
スクリーンショット 2025-05-17 11.23.48.png

完成したら、下記の「パブリックIPv4アドレス」をコピーして、新しいタブを開き、アプリが動いているか確認します。
スクリーンショット 2025-05-17 11.26.33.png

問題なく動きましたね!
スクリーンショット 2025-05-17 11.28.39.png

NATゲートウェイの作成

ここからが今回のハンズオンのメインテーマになるかと思います。
今までは、パブリックサブネットにEC2を置き、そこからアプリを起動しましたが、セキュリティの都合上、プライベートサブネットにEC2インスタンスを置かないといけないという場合もあるかと思います。その場合、VPC外のAWSサービスや、アプリにはアクセスができません。NATゲートウェイはそうった際に使用するものになります。
image.png

下記のように外部のアプリにもVPC外のサービスにもアクセスできるのが、NATゲートウェイの特徴です。
スクリーンショット 2025-05-17 11.37.40.png

スクリーンショット 2025-05-17 11.38.12.png

まずはプライベートサブネットに置くEC2インスタンスを作成します。
EC2の作成方法はここでは割愛いたします。
image.png

EC2インタンスの作成が完了したら、次はNATゲートウェイの作成を行います。
VPCの画面の左側からNATゲートウェイを選択します。その後右上のオレンジのボタンを押して作成を開始します。
image.png

NATゲートウェイを下記のように作成します。
ここで大事なことはNATゲートウェイはパブリックサブネットに作成するということです。
そのためサブネットは必ずパブリックサブネットに置く必要があります。
image.png

NATゲートウェイを作成したら、今度はルートテーブルとの紐付けを行う必要があります。
現状、NATゲートウェイはパブリックサブネットにあるため、それとプライベートサブネットを紐付けます。下記画像の右下にある「ルートを編集」ボタンを押します。
image.png

0.0.0.0/0を選択し、NATゲートウェイを選択します。その上で先程作成したNATゲートウェイを選択し、変更を保存します。
スクリーンショット 2025-05-17 11.51.02.png

紐付けができたら、このVPCの外にあるSSMに接続できるかを確認します。
イメージとしては下記のようになります。
image.png

EC2インスタンスの画面に行き、上にある「接続」ボタンを押します。
スクリーンショット 2025-05-17 11.52.20.png

セッションマネージャーを選択し、右下のオレンジの接続ボタンを押します。
スクリーンショット 2025-05-17 11.53.17.png

おー!!成功です!
VPC外のSSMに接続できました!
スクリーンショット 2025-05-17 11.53.56.png

VPCエンドポイントの作成(Interface型)

NATゲートウェイを用いて、EC2インスタンスが、プライベートサブネットにあってもVPC外のサービスやアプリに接続できることがわかりました。
NATゲートウェイはインターネットゲートウェイを通して使うことができます。
しかし、金融系やセキュリティの厳しいシステムだとすると、そもそもインターネットゲートウェイを完全に使うことができないといった場合もあります。
そのような場合はどうすればいいのでしょうか?
正解はVPCエンドポイントを用いることです!
今回はVPCエンドポイントを使って、ネット接続なしでVPC外にあるサービスに接続できるようにしてみます。
image.png
スクリーンショット 2025-05-17 12.20.37.png

ネット接続をせずにVPC外のサービスに接続する方法は主に2種類あります。
Gateway型とInterface型に分かれます。
何がGateway型で何がInterface型なのかは接続先のVPC外にあるサービスによります。
image.png

それではVPCの作成に入ります。
まずは下準備です。
VPCの画面からVPCの設定編集を行います。
image.png

DNSホスト名を有効化します。
スクリーンショット 2025-05-17 12.28.07.png

それが完了したら、次はセキュリティグループを作成します。
基本は下記のようにしてもらえれば大丈夫です。
インバウンドルールですが、必ずHTTPSにしてください。
VPCエンドポイントのエラーの代表格はここのインバウンドルールの設定ミスになります。
HTTPSになっていることを確認してください。
image.png

ここからエンドポイントの作成に入ります。
こちらは基本的に下記のようにしてもらえれば大丈夫です。
スクリーンショット 2025-05-17 12.34.53.png

インターフェイス型では、SSM,SSM-message,EC2-messageの3つのエンドポイントを作成する必要があります。これはそういう仕様になっているためです。
スクリーンショット 2025-05-17 12.35.06.png

サブネットを選択します。今回はcを選択します。cを選ぶ理由は、プライベートサブネットに置いてあるEC2インスタンスが置いてあるのが、AZのcになるためです。
スクリーンショット 2025-05-17 12.35.21.png

SSMが完成したら、SSM-MessageとEC2-messageも同じように作成します。
スクリーンショット 2025-05-17 12.40.17.png

上記の作業が全て終わったら先程と同じようにEC2インスタンスからセッションマネージャーに接続します。こちらも問題なく接続できましたね!

image.png

VPCエンドポイントの作成(Gateway型)

次はGateway型を試そうと思います。
Gateway型はS3などのサービスに接続したい時に使いたい型でしたよね。

まずは下準備としてS3バケットの作成から始めます。
ここではS3バケットの作成方法については省略いたします。
image.png

S3バケットを作成したら、IAMロールにS3の権限を付与する必要があります。
image.png

こちらでAmazonS3ReadOnlyAccessを追加します。
image.png

ここからエンドポイントの作成を行います。
Interface型の時と同じように下記の画面から作成を行います。
image.png

今回はS3なので、S3と検索をし、下記画像で選択したものを選択します。
ここで注意なのですが、選択されたものとその下にあるもの同じ名前ですよね?
この場合どうしたら良いのでしょうか?
この場合は横にあるタイプを見て確認する必要があります。
今回はGateway型になるので、Gateway型のものを選びます。
image.png

ルートテーブルはパブリック、プライベートルートテーブルのどちらも選択します。
image.png

これでVPCエンドポイントのGataway型が完成しました。
最後に稼働できるか確認します。
手順は同じくEC2インスタンスのセッションマネージャーから接続します。
下記のコードを打ち込んで実行してください。
aws s3 ls --region ap-northeast-1

おー!!ちゃんとS3に接続できたことが確認できました!!
VPCエンドポイントを用いてセキュアにVPC外にあるS3に接続できました!!
スクリーンショット 2025-05-17 13.37.59.png

実はエラーが出てました。。。

はい、順調かと思っていましたが、実はエラーが出ていたのです。
ここではエラーについて書いて行きます。

下記はVPCエンドポイントでセッションマネージャーに接続する際に頻繁に発生するエラーです。
こういう時はエラー内容をそのままコピペしてネットで調べて良いと思います。
調べた結果、セキュリティグループの設定がおかしいことが大部分なようです。
上記でも記載しましたが、HTTPSになっていなくてエラーになることが多いそうです。
しかし私の場合はそこはHTTPSになっていたので大丈夫でした。
image.png

問題はエンドポイント側にありました。
画面下にあるセキュリティグループのグループ名が「default」になってますよね。
せっかくSSMというセキュリティグループを作成したのにそれをエンドポイントに紐付けないとちゃんと起動はしません。
あまりこういったエラーはないかもしれませんが、今回自分でやってみての発見となりましたので、皆さんもご注意ください。
image.png

終わりに

いかがだったでしょうか?
今回も公式ハンズオンで無料でNATゲートウェイやVPCエンドポイントについて学ぶことができました。セキュリティはシステムの中でも最も大切な部分ですし、実務でも試験でもよく出てくる内容だと思います。実際に手を動かすことでより理解も深まると思いますので、是非皆さんも挑戦してみてください!!

19
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?