こんにちは、つかさです
今回はVPC
に関してです。特にVPCの接続に関係する部分を中心に記事を書いていこうと思います。
個人的にとても間違えやすく苦手なので、もし同じような境遇の方がいれば一緒に頑張ってきましょう!
VPC
Virtual Private Cloudの略でAWS上に作成できるプライベート仮想ネットワーク空間
基本構成
- 問題文
- 答え
- なぜその答えなのか
- その答えを理解するための周辺知識
問題
セキュリティ上の理由でオンプレミスからパブリックIPアドレスを使用せずにS3バケットへデータをアップロードします。どのような方法がありますか?
答え
VPCとVPN接続し、VPCにインターフェースエンドポイントを作成する。エンドポイントへS3バケットへのリクエストを作成する。
理由
パブリックIPアドレスを使用しないという要件からプライベート接続したいことがわかる。そしてS3へのプライベート接続にはゲートウェイエンドポイント
とインターフェースエンドポイント
の2つがある。今回オンプレミスからの接続なのでインターフェースエンドポイント
が適切な答えになります。
この問題ではオンプレミスからS3に対してどのようにプライベートアクセスするかをイメージし理解する事が大切です。
今回問題で挙げられているアクセスは大きく2つに分ける事ができます。
1 : オンプレミスからVPCへのプライベートアクセス
2 : VPC内リソースからS3へのプライベートアクセス
オンプレミスからVPCへのプライベートアクセス
オンプレミスからVPCに対してプライベート接続する方法は2つある。AWS Direct Connectによる専用線接
またはAWS Site-to-Site VPNによるVPN接続
です。
これらの違いについて見てみましょう!
AWS Direct Connect | AWS Site-to-Site VPN | |
---|---|---|
接続の方法と仕組み | データセンターや通信事業者の施設を通じ、物理的な専用線を使用してAWSネットワークとオンプレミスネットワークを直接接続する。 | インターネットを経由でのVPNゲートウェイを使用して、IPsec(インターネットプロトコルセキュリティ)に基づく暗号化接続をする。 |
接続速度と帯域 | 50 Mbps から 100 Gbps までの速度で高性能な専用線接続で低レイテンシー | インターネットの品質に依存するため、速度が変動する。 |
接続の信頼性と可用性 | 高い信頼性と可用性 | AWS Direct Connectほどの信頼性と可用性はない |
コスト | 高い | 低い |
導入の容易さ | 時間と初期費用がかかる | 迅速にかつ初期費用ほぼゼロ |
IPsec
データの機密性と認証を提供するプロトコルスイート
プロトコルスイート
複数のプロトコルがセットになり、ネットワーク通信全体を実現するためのもの
VPC内リソースからS3へのプライベートアクセス
VPC内リソースからAWSサービス(例:S3、SNSなど)やサードパーティのサービスに、プライベートでアクセスしたい場合はVPCエンドポイント
を使用します。
VPCエンドポイント
VPCエンドポイントはゲートウェイエンドポイント
とインターフェースエンドポイント(PrivateLink)
の2種類あります。それぞれの違いについて見にいきましょう
privateLink
インターフェースエンドポイントを使用して、広範なAWSサービスに対してプライベートアクセスを提供する仕組み
ここで抑えときたいポイント
-
ゲートウェイエンドポイント
はAmazon S3とDynamoDB以外に利用できない -
ゲートウェイエンドポイント
はVPC外(例えばオンプレミス環境)からは直接利用できない
逆にインターフェースエンドポイント
はこれらのゲートウェイエンドポイント
に利用できないことができます。
ゲートウェイエンドポイント仕組み
- ゲートウェイエンドポイントをVPCにアタッチする
- サブネットのルートテーブルにゲートウェイエンドポイント対してのルート追加し指定する(ターゲット)
- プレフィックスリストを使用してS3やDynamoDBを指定する(送信先)
- プライベートなアクセスが可能になる
プレフィックスリスト
特定のAWSサービス(S3やDynamoDBなど)に対応するCIDRのリスト
CIDR(クラスレスドメイン間ルーティング)
IPアドレスの範囲を効率的に表現する方法
プレフィックスリスト
はAWS側で管理しており、あらかじめ多くのAWSサービスに対するCIDR
を管理しています。同一リージョン内で作成された特定のサービスはプレフィックスリスト
で管理されているそのサービスのCIDR
内のIPアドレスが割り振られます。よってプレフィックスリストを使用してS3やDynamoDBを送信先として指定することができます。
インターフェースエンドポイント仕組み
インターフェースエンドポイントは、AWSのさまざまなサービスに対して、VPC内のElastic Network Interface(ENI)を使用してプライベート接続を提供します。
- VPC内にインターフェースエンドポイントを作成する。この時、
アクセス対象のサービス
とサブネット
を指定します。すると自動的にそのサブネット
内にENIが作成される - ここで「プライベートDNS」オプションを有効にすること
- 指定した
サブネット
内で、指定したアクセス対象のサービス
に対してリクエストが行われた時に、プライベートDNSがサービスのドメイン名を対応するENIのプライベートIPに解決し、ENIへのルーティングが行われる - プライベートなアクセスが行える
ENI(Elastic Network Interface)
仮想ネットワークインターフェイスでインスタンスに複数の IP アドレスやセキュリティグループを持たせるために使われる
- プライベートDNS
通常、VPC内からAWSのサービスにアクセスする場合、そのサービスのドメイン名(例:s3.amazonaws.com)はパブリックDNSサーバーを使用して解決され、パブリックIPアドレスにルーティングされます。この場合、インターネットを経由してアクセスすることになります。しかし、プライベートDNSを有効にすることで、通常のAWSサービスのドメイン名を使ってリクエストを送るだけで、パブリックインターネットではなく、VPC内のプライベートネットワークを介してサービスにアクセスすることが可能になります。
オンプレミスからAWSサービスへのプライベートアクセス
・まず最初に大きく分けたアクセスの一つであるVPC内リソースからS3へのプライベートアクセス
では上記であるように、S3向けのインターフェースエンドポイントを作成します。
・そして大きく分けたアクセスの一つであるオンプレミスからVPCへのプライベートアクセス
の内容にあるようにAWS Direct Connectによる専用線接
またはAWS Site-to-Site VPNによるVPN接続
でVPCにアクセスします。この際のポイントとしては、オンプレミスのルートテーブルのターゲットとして作成したインターフェースエンドポイントにルーティングするように設定します。
・あとはVPC内のリソースからAWSサービスにインターフェースエンドポイントを介してプライベートアクセスする流れと同じになります。
復習問題
問題
EC2インスタンスからDynamoDBへの項目を読み書きしているアプリケーションがあります。アプリケーションをよりセキュアにしたいのでインターネットを介さないようにしたいです。どの方法を使用しますか?1 : NATゲートウェイのみを利用してセキュアにアクセスする。
2 : VPCゲートウェイエンドポイントを作成してルートテーブルにルートを追加する
3 : VPCゲートウェイエンドポイントを作成する
答え
2理由
まず、1はインターネットを介すので選択肢から排除できます。 2と3ですが、ゲートウェイエンドポイントはルートテーブルにルートを追加する必要があるので2が正解になります。まとめ
読んでいただきありがとうございました!
これからも自分のペースで記事を更新したり、新たな記事を書いていこうと思うので是非見ていただけたらなと思います!