機密性の高い顧客データを扱うあるお客様は、ウェブアプリとデータベース用にセキュアなクラウドインフラ を必要としていました。私たちはVPCにNATゲートウェイを実装し、プライベート・サブネットのインスタンスが更新やAPIコールのためにインターネットにアクセスできるようにする一方で、インバウンド・トラフィックをブロックしました。このソリューションは、プライベート・インスタンスをパブリック・インターネットに直接公開することなくインターネット・アクセスを提供し、セキュリティを強化します。私たちが行ったことは以下の通りです:
この図は、典型的なVPCの設定を3つの主要セクションに分けて示しています:VPC、パブリック・サブネット、プライベート・サブネットです。まず、外側の緑色のボックスがVPCで、VPC内のリソースは他のネットワークから隔離されています。ユーザーは、1:1のNATで割り当てられた静的IPアドレスを使って、パブリック・インターネットからウェブ・サーバーにアクセスします。ウェブサーバーはリクエストを処理し、必要に応じてデータベースサーバーと通信します。ウェブサーバーはルーターサーバーを通じてデータベースサーバーと通信します。ルーターサーバーはカスタムNATを使用して、パブリックサブネットとプライベートサブネット間のトラフィックを安全にルーティングします。プライベート・サブネットにあるデータベース・サーバーは、VLAN を介してウェブ・サーバーからのリクエストを受け取ります。プライベート・サブネットが分離されているため、データベース・サーバーはインターネットに直接さらされず、セキュリティが強化されています。このチュートリアルでは、プライベート・サブネットとパブリック・サブネット間の安全で効率的な通信を確保するために、このアーキテクチャをセットアップする手順を説明します。パブリックとプライベートのサブネットを持つVPCを作成し、NATゲートウェイを設定し、VLAN 。
チュートリアル
このチュートリアルでは、先ほど説明した図のようにVPC内にNATゲートウェイを作成します。すでにLinodeアカウントをお持ちの方は、ステップ1に進んでください。Linodeのアカウントを持っていない場合は、このリンクからサインアップして100ドルの無料クレジットを手に入れてください。Linodeダッシュボードから、パブリックサブネットとプライベートサブネットの2つのサブネットを持つVPCを作成します。プライベートサブネットにはデータベースを追加し、プライベートサブネットには2つのインスタンスを追加します:1つはウェブサーバーとして動作し、もう1つはルーターサーバー(カスタムNAT)として動作します。
ステップ1:VPCの作成
VPC内にNATゲートウェイを構築する最初のステップは、リソースを論理的に分離するVPCを作成することです。これが、前回説明した図の緑色のボックスであることを思い出してほしい。プライベート・サブネットとパブリック・サブネットはこのVPCの中に住むことになる。
これを行うには、Linodeクラウドマネージャーから左パネルのVPCをクリックし、VPCの作成をクリックします。
ステップ2:パブリック・サブネットの設定
次に、ルーター・サーバー(カスタムNAT)とウェブ・サーバーを置くパブリック・サブネットをVPCに追加する必要がある。このサブネットは先ほど説明した図の青い四角の部分です。
画面下部のサブネットと書かれているところに、パブリック・サブネットのラベルを追加します。このサブネットはルーターサーバー(カスタムNAT)とウェブサーバーをホストします。
次に「Create VPC」をクリックしてVPCのプロビジョニングを行います。
作成されたパブリック・サブネットが、対応するサブネットIDとIPレンジとともに表示されます。
ステップ3:ルーターサーバーとウェブサーバーの配置
次に、パブリックサブネットに2つのLinodeインスタンスをデプロイする必要があります。1つのLinodeインスタンスはルーターサーバー(カスタムNAT)として動作し、パブリックサブネットとプライベートサブネット間のトラフィックを管理するNAT処理を行います。もう1つのサーバーは、インターネットからの受信トラフィックを処理し、必要なリクエストをプライベートサブネットに転送するウェブサーバーとして動作します。まず、ルーターサーバーを作成します。Cloud Managerから左パネルのLinodesをクリックし、Create Linodeをクリックします。VPCを作成したときに選択したのと同じリージョンを選択し、Dedicated 8 GB CPUオプションを選択します。
次に、下にスクロールして、ステップ1で作成したVPCを割り当て、ドロップダウンからパブリック・サブネットを選択します。
Create Linodeをクリックしてインスタンスのプロビジョニングを終了します。
では、上記と同じ手順でWebサーバーを作成しましょう。Create Linodeをクリックし、VPCに選択したリージョンを選択し、VPCをこのインスタンスに割り当てます。これでWebサーバーとルーターサーバーの両方がパブリックサブネットの下のVPCに表示されます。
ステップ4:プライベートサブネットの作成
次に、パブリック・インターネットに直接アクセスできないデータベース・サーバーをホストするプライベート・サブネットをVPC内に作成する必要がある。私たちは今、紫のボックスを構築しているところです。
VPCからサブネットの作成をクリックし、ラベルを入力してプライベートIPレンジを割り当てます。このサブネットにより、データベースは外部の脅威から安全に保護されます。
ステップ5:データベースサーバーのデプロイ
では、プライベートサブネットにLinodeインスタンスをデプロイして、データベースサーバーとして使用しましょう。このインスタンスはパブリックサブネットからセキュアなVLAN 。Linodeクラウドマネージャの左パネルからLinodesをクリックし、Create Linodeをクリックします。ラベルとしてdatabase-serverを入力し、VPCとしてvpc-nat-gateway-demoを選択し、サブネットとしてprivate-subnetを選択します。
このサーバーがデプロイされると、次のように表示されるはずだ:
次に設定を編集し、このLinodeにパブリックIPアドレスを割り当てるボックスをチェックする必要がある。これをする理由は、このサーバーからネットワークツールをダウンロードする必要があるからです。
ステップ6:設定VLAN
次に、パブリック・サブネットとプライベート・サブネット間のセキュアな通信を可能にするために、VLAN を確立する必要がある。データベース・サーバーとルーター・サーバーは、VLAN 。
こ れに よ り 、 ウ ェ ブ サーバー と デー タ ベース サーバー間のトラフィックがプライベー トで安全な状態に保たれます。ルータサーバから、[Configurations] タブをクリックし、[Edit] をクリックします。VLAN を追加し、アドレスを入力します(プレースホルダ・テキストをガイダンスとして使用します)。
では、ルーター・サーバーに行き、VLAN をコンフィギュレーションに追加しよう。
ステップ7:データベースサーバーからルーターサーバーへトラフィックを転送する
ネットワーク・ツールをダウンロードするためにインターネットにアクセスできるように、パブリックIPを割り当てたことを思い出してほしい。
では、ダウンロードしてみよう。 ipconfig
以下のコマンドを使用する:
$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ iptables -A FORWARD -i eth1 -j ACCEPT
次に、データベース・サーバーに戻って、パブリックIPのチェックボックスを外し、インターネットにアクセスできないようにする必要がある。
これでデータベースサーバーはプライベートサブネットに安全に隔離された。これでルーター・サーバーと通話できるようになる。ルーター・サーバーのVPCにpingを打ってみましょう。
次に、データベース・サーバーがトラフィックをVLAN 。そのためには、データベース・サーバーから以下のコマンドを実行する:
route add default gw {VLAN-IP-FOR-ROUTER}
そして、ルートを走る。
VLAN 。
次に、ルーター・サーバーがeth1(VLAN )からインターネットにトラフィックを転送するように設定する必要がある。このステップでは、サーバーでNATを有効にし、IP転送を有効にします。
ルーターサーバーから以下のコマンドを実行する:
$ modprobe iptable_nat
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ iptables -A FORWARD -i eth1 -j ACCEPT
VPCのNATゲートウェイのセットアップに成功しました。
このアーキテクチャーの利点
このアーキテクチャーを使うことには、いくつかの重要な利点がある。第一に、セキュリティが強化される。VPCでは、異なるサブネット(パブリックとプライベート)内のリソースを分離することができます。NATゲートウェイは、プライベート・サブネット内のインスタンスがパブリック・インターネットの脅威に直接さらされることなくインターネットにアクセスできるようにします。VPCでNATゲートウェイを使用することで、プライベート・インスタンスからインターネットへのアウトバウンド・トラフィックのみが許可され、セキュリティ・リスクをもたらす可能性のある未承諾のインバウンド接続が防止されます。データベースをプライベートサブネット内に置くことで、機密項目がインターネットに直接さらされるのを防ぎ、データ漏洩のリスクを低減します。
このアーキテクチャは、スケーラビリティも大幅に向上させる。NATゲートウェイは大量のトラフィックを管理できるように設計されており、需要の増加に合わせて自動的に調整できるため、手動による介入が不要になります。トラフィック負荷が増大すると、NATゲートウェイはリソースをスケーリングして最適なパフォーマンスを維持し、継続的な可用性を確保します。この自動化されたスケーラビリティは、季節的なセールやプロモーション、さまざまな顧客行動によってトラフィック・パターンが変動することが多いeコマース・プラットフォームにとって特に有益です。NAT ゲートウェイを活用することで、開発者は高い需要下でもアプリケーションの応答性と信頼性を維持できるようになり、最終的に優れたユーザー体験を提供し、ビジネスの成長をサポートすることができます。
Linodeを使用してVPC内にNATゲートウェイを構築することで、パブリックリソースとプライベートリソース間のネットワークトラフィックを安全かつ効率的に管理することができます。プライベートインスタンスが必要な外部リソースにアクセスできるようにする一方で、インターネットに直接さらされないように保護し、最終的にクラウドインフラ のセキュリティ、スケーラビリティ、効率を向上させます。
上記のステップに従い、提供された図を参考にすることで、顧客の機密データを保護するだけでなく、ネットワークパフォーマンスを最適化することができます。クラウドセキュリティの最適化をお考えの開発者の方で、クラウドにより多くのリソースを構築したい方は、こちらのリンクから最大5,000ドルのLinodeクレジットを申請してください。
コメント (4)
how can i create a linode account
i tried to register and got rejected
Hello Linh – If you’re having trouble creating an account, we suggest completing the form below and choosing the option that says, “I received a Signup Cancellation email when creating an account”:
https://www.linode.com/support/contact/
This post from the Linode Community Questions site titled “My signup was flagged as “fraudulent behavior” has more information. Keep in mind, you’ll only hear back from us if we decide to overturn our initial decision.
Hi, thank you for the write up, but I think there is an issue with this article. In step 6 when you are configuring the VLAN you label both the configuration of the Database and Router Server as the Router Sever. “From the router server, click on the Configurations tab…” and then later on in the same step you say, “Now, let’s go to the router server and add that VLAN to the configuration.” I assume first is the VLAN configuration for the database (192.0.2.2/24) and the second is for the router (192.0.2.1/24).
Hi Dane – We appreciate you pointing out that redundant statement! In case they were not aware, I have forwarded this feedback to the team responsible for our documentation so they may make the necessary changes.