DevOpsキャリアの初期に習得すべき多くの概念があります。中には、単一のクラウドまたはサービスプロバイダーに固有のものもあります。また、この記事のトピックのように、業界全体で普遍的なものもあります。

この記事では、仮想プライベートクラウド (VPC) とは何か、どのように機能するのか、そしてなぜ今日のクラウドインフラストラクチャの定番となっているのかについて説明します。

VPCの基本

VPCとは正確には何ですか?典型的な銀行の金庫室をカメラで撮影した映画を観ると、たいていは多くの個別の貸金庫がある広いセキュリティで保護された部屋があるものです。

VPCは、特定のプロバイダーのパブリッククラウド全体の一部を占める単一区画であり、基本的には銀行の金庫内の貸金庫のようなものです。金庫自体は公開されており、銀行の多くの顧客が時々アクセスしています。彼らはあなたと同じ金庫内に箱を持っているかもしれません。しかし、彼らにとって、あなたの引き出しは触れることができない、あるいは見えない引き出しです。鍵を持っているのはあなただけなので、あなたが望まない限り、誰もアクセスできません。

もちろん、VPCでは、AWS、Google Cloud、Azureなどの「銀行」は遠く離れていて、大勢のエンジニアによって管理されています。ボックスは強化スチールではなく論理的な機能で区切られています。

AWSとGCPでは、VPCはそのままVPCと呼ばれていますが、Azureでは、VNet (Azure Virtual Network) と呼ばれています。これらはすべて、同様の機能とセキュリティ対策を実装しています。

機能と隔離

VPCは、厳格なアクセスコントロールに基づいて、パブリッククラウドのサービスやオファリングを展開する場所を提供します。複数の地域とその可用性ゾーンをカバーできるため、顧客の近くにインフラストラクチャを展開したり、単一の場所での障害に備えたりすることができます。

隔離というテーマは頻繁に出てきますが、それは実際にそれが最も重要な機能だからです。お客様のデータは、他のお客様のデータから分離されています。隔離すると決めたものはすべて外部から隔離され、展開されたリソースへのアクセスを指定した人員だけに簡単に制限することができます。

最も一般的に使用される分離メカニズムは、パブリック/プライベートサブネット、セキュリティグループ、およびアクセスコントロールリストであり、これらすべてについて以下で説明します。

利点

パブリッククラウドではなくVPCを選択することに、どのような利点があるのでしょうか。独自のルールによって管理される別個のエンティティでありながら、選択したクラウドプロバイダーによって保護される「全体」にも含まれており、これらから多くの利点を得ることができます。

いつものように、セキュリティが最優先されます。従来のパブリッククラウドにも求められている多くのソリューションにアクセスできますが、柔軟性がはるかに高くなります。追加のオブザーバビリティツール、きめ細かなアクセスコントロール、および概念自体に組み込まれた多数の保護手段とメカニズムは、インフラストラクチャとデータのセキュリティおよびプライバシーに大きく貢献します。

もう一つの利点は、VPCは従来のプライベートクラウドよりもはるかに安価でありながら、本来かなりの費用を支払わなければならないような、さまざまな機能を利用できることです。

VPC内に展開できるリソースは、パブリッククラウドの通常のサービスであるため、パブリッククラウドと同様に、安価かつ簡単にスケールアップできます。

設定 — ネットワークACL、セキュリティグループ、サブネット

データの隔離を維持することが重要です。VPCへのアクセスを適切に設定するのは、完全にユーザー任せになります。つまり、毎回正しく行う必要があります。以下のメカニズムは、それを行う際に役立ちます。

サブネット

サブネットは、ネットワークオブジェクトを分離するために従来から行われてきた方法です。自宅でルーターを設定したり、あらゆる種類のネットワークを使用したりしたことがあれば、間違いなくこれらを目にしたことがあるでしょう。基本的には、これはリソースに割り当てることができるIPアドレスのブロックです。これは、VPCのメインネットワークプールから派生したもので、いわば「細分化したものをさらに細分化」するものです。

サブネットには、プライベートとパブリックという2つのタイプがあります。プライベートサブネットは、ある種の「変換器」として機能するNATデバイスをプロビジョニングしていない限り、インターネットから切り離されます。

パブリックサブネットは、通常、「入出力の制御弁」のように機能するインターネットゲートウェイの助けを借りて、Webに到達できます。ゲートウェイは、外部から到達可能なIPアドレスを提供し、接続可能なポイントを提供します。

alt

Webから到達可能なパブリックサブネットと、外部からは到達できないプライベートサブネット。

ネットワークACL

ネットワークACLは、サブネットのロジックに追加されるものです。これは、どのタイプのトラフィックがどのポートを経由するか、さらにはどこからどこへ出入りできるかに関するルールの順序を示す「台帳」として機能します。次の例を見てください。

alt

実際のサブネットACLの一般的なシナリオ。左側のリクエストは成功しますが、右側のリクエストはタイムアウトします。

常に注意すべきは、これらのルールの順序です。これらは小さい番号から大きい番号の順に処理され、一致が見つかった場合に適用され、以降の大きい番号を持つルールに何が指定されていようと、それらは無視されます。これは見落としがちで、小さなミスでも穴が生じる可能性があります。

セキュリティグループ

セキュリティグループは異なるアプローチを取ります。特定のサブネットを制御する代わりに、インスタンスなどのリソースを操作します。ネットワークACLとは対照的に、「拒否」ルールを明示的に作成することはできません。セキュリティグループでは、「許可」と定義されていないものは既定ですべて禁止されます。また、応答トラフィックを明示的に許可する必要もありません。何かが内部に到達した場合、その応答が外部に返されることが許可されます。

セキュリティグループに指定されたルールの順序も重要ではありません。トラフィックが到着したときに、ルールセット全体が評価されます。リソースには複数のセキュリティグループをアタッチできます。アタッチしなかった場合、(少なくともAWSでは)デフォルトのセキュリティグループが自動的にアタッチされます。

alt

一連のリソースへのアクセスを制御するセキュリティグループルールの例。

幸いなことに、どのアクセスコントロール方法を使用すべきかという質問に答えるのはそれほど難しくありません。すべてを使用すべきです。普通に考えて、World Wide Webという何が存在するかわからない冷酷な空間との間にできるだけ多くのレイヤーを置くことは良い習慣であり、絶対に心に留めておく必要があります。

VPCの実践 — 4つのポイント

以下は、手間をかけずにVPCを最大限に活用するための4つのヒントです。

1. AWSでは、アカウントのセットアップが完了すると、デフォルトのVPCが提供されます。技術的にはすぐに使用できますが、予期しない問題を避けるためにも、上記のセキュリティ設定を確認し、ニーズに合っていることを確認してください。Terraformオペレーターへの追加の注意喚起:デフォルトのVPCリソースは、通常のVPCリソースとは大きく異なります

2. VPC のプロビジョニングは簡単です。ただし、セキュリティグループとネットワークACLの管理は、ルール数が増えるにつれて複雑化していきます。読みにくいルールの山に埋もれたり、長い間忘れられていた隙間から何かに忍び込まれたりしたくない場合は、気をつけてください。

3. セキュリティグループとネットワークACLを使用して、チームメイトや同僚が環境にアクセスできるようにしている場合は、ホワイトリストに登録するアドレスが静的なものであるか、非常に頻繁に更新されるものであるかを確認してください。そうしないと、ある日突然、許可されたアドレスの1つが悪意のあるアクターの手に渡ってしまう可能性があります。これは、企業が管理するプライベートVPN(一般的なパブリックVPNでは同様のIP再割り当てリスクがあります)や、HashiCorp Boundaryなどのツールをはじめとする、複数の方法で解決できます。

4. ほとんどすべてのパブリッククラウドには、VPCのプロビジョニング数に制限があります。顧客に独自のテナントスペースを提供する場合は、それがマイクロスケールでない限り、他のソリューション(IAM IDや、追加のユーザーアカウントなど)がはるかに優れた代替手段となります。