コロナ禍でテレワークが促進されている中、脚光を浴びているAWS。企業等では、AWSを使用してVPNを構築するケースが増えてきています。
本記事では、AWSのVPN構築に焦点を当て、AWS Client VPNを導入するメリットデメリットや構築手順について徹底解説致します。
VPNとは
まずはじめにそもそもVPNとは何かをおさらいしておきましょう。VPNとは、英語表記で「Virtual Private Network」の頭文字を取ったもので、インターネット回線を利用して作成する仮想プライベートネットワークのことを言います。VPNは、企業であれば本社等に専用のルーターを設置することで公衆の回線を利用し、通信を行います。
VPNが好まれる理由としては、Wi-Fi等と比較してセキュリティ面においてリスクが少ないとされているとされているからです。
AWS-vpnとは
次にAWS VPNについて、概要を抑えておきましょう。AWS VPNとは、AWSの様々なサービスのうち、VPNを利用した通信サービスのことを言います。AWS VPNでは、オンプレミスのネットワークをクラウド上で拡張することができるため、様々な地点から仮想専用回線を使用しアクセスすることが可能となります。
AWS-client-vpnとは
AWS Client VPNとは、AWSリソース及びオンプレミスネットワーク内にあるリソースに対し、安全にアクセス可能にするClientベースのマネージドVPNサービスのことです。前述したAWS VPNは、AWSサイト間VPN及びAWS Client VPNで構成されています。
AWSサイト間VPNは、ネットワークと「Amazon Virtual Private Cloud」あるいは「AWS Transit Gateway」の間において暗号化されたトンネルを作成します。一方でAWS Client VPNは、無料のVPNソフトウェアクライアントを使用し、AWSあるいはオンプレミスのリソースに接続するのです。
AWS-client-vpnを導入するメリット
それぞれの言葉の概要を理解できたところで、AWS Client VPNを導入するメリットについて、代表的な3点をご紹介します。
- セキュリティの高さ
- 耐障害性の強さ
- OpenVPNとの互換性
セキュリティの高さ
前述した通りVPNは、仮想プライベートネットワークであるため、一般的なインターネット回線とは違い、暗号化された通信環境を構築することになります。さらに、AWS Client VPNに関しては、特に安全性が高いとされるTLS VPNトンネルプロトコルを使用しており、重要であるデータを盗まれたり改竄されたりといった様々なリスクから守ることができるのです。
耐障害性の強さ
AWS Client VPNにおける「クライアントVPNエンドポイント設定」では、複数のサブネットを紐づけることが可能であることから、様々なアベイラビリティゾーンのサブネットを紐づけることで、どこかのアベイラビリティゾーンで障害が発生してしまったとしても、他のアベイラビリティゾーンを利用することができるため、直接的な被害を被ることは少なくなります。
OpenVPNとの互換性
AWS Client VPNは、OpenVPNに対して互換性を持つClientアプリケーションの使用が可能です。OpenVPNは、あらゆるOS(WindowsやMac、iOSやAndroid、Linux)において利用することができるため、ユーザーはあらゆるデバイスからAWSへアクセス可能となります。
AWS-client-vpnを導入するデメリット
AWS Client VPNには、メリットだけでなくデメリットも存在します。あらかじめデメリットについても理解しておくことが大切です。特に次の3点のデメリットが挙げられます。
- コストがかかる
- 通信速度が一定にならないケースが生じる
- バッテリーの消耗が早い
コストがかかる
後述で詳細を解説致しますが、AWS Client VPNでは、エンドポイントがVPN接続をした時間によってコストが発生し、さらにクライアントがVPN接続をした時間によってもコストが発生することになります。
通信速度が一定にならないケースが生じる
AWS Client VPNでは、既存のインターネット回線を利用することから通信速度が一定ならないケースが生じる可能性があります。特に時間帯(夕方)によって大きな影響を受けてしまうことが多いです。
バッテリーの消耗が早い
AWS Client VPNでは、データが暗号化されることでバッテリーの消耗が早くなってしまうというデメリットがあります。特にモバイル機器を使用して通信をするケースでは、通常よりもさらにバッテリーの消耗が早くなってしまうことが予想されます。
AWS-client-vpnの料金体系
AWS Client VPN接続は下記の2パターンの料金体系となっています。
料金体系 | 料金 |
AWS Client VPNエンドポイントの時間料金 | 1時間あたり0.15ドル ※1時間に満たない場合でも1時間の料金が加算 |
Client VPN接続料金 | サブネット1つ毎に1時間あたり0.05ドル |
AWS-client-vpnの構築手順
AWS Client VPNを構築する手順については、今回は証明書を利用し、相互認証するという手順で解説致します。
<手順その1>サーバ証明書及びクライアント証明書を作成
AWS Client VPNで相互認証を行う場合、AWS Client VPNは、認証期間(CA)により発行される識別用デジタル形式の証明書を使用してクライアント及びサーバー間の認証を実行することになります。具体的には、クライアントがクライアントVPNエンドポイントに接続をしようとすると、サーバーはクライアント証明書を使用してクライアントを認証することになります。
サーバー証明書はAWS Certificate Managerにアップロード及びクライアントVPNエンドポイント作成時に認証局(
CA)と共に指定を行う必要があります。ただし、サーバー証明書をAWS Certificate Managerにアップロードする必要が生じるのは、あくまでクライアント証明書の認証局(CA)がサーバー証明書の認証局(CA)と異なる時のみです。
また、クライアントVPNエンドポイントに接続を行うクライアント毎に、個別のクライアント証明書とキーを作成することが可能です。
<手順その2>クライアントVPNエンドポイントを作成
AWSマネジメントコンソールにログイン後「クライアントVPNエンドポイントの作成」をクリックし、クライアントVPNエンドポイントを作成します。画面に従って、エンドポイント管理用の名前を決定したり、クライアントに割り当てを行うIPアドレスのCIDR等を入力したりしていきます。その中で、<手順その1>で作成したサーバー証明書及びクライアント証明書選択も行います。
このタイミングでは、利用料金が発生することはないので安心してください。
<手順その3>クライアントVPNエンドポイントをVPCのサブネットに紐付けする
VPCの任意のサブネット(複数可)にクライアントVPNエンドポイントを紐づけていきます。紐付けがされたサブネットに関してはクライアントVPNエンドポイントのENIが作成されることとなり、この時点で初めて料金が発生することになります。前述した通り、紐付けを行うサブネットの数によって料金が加算されていくので注意しましょう。ただ、セキュリティ面を考慮した場合、1つのサブネットではなく、複数のサブネットを紐づけておくことをおすすめします。
サブネットを紐づけた後、クライアントVPNエンドポイントには、オートでVPCのデフォルトセキュリティグループがアタッチされることになります。デフォルトではない他のセキュリティグループをアタッチすると、クライアントVPNエンドポイントからVPC内にある他のEMIへのアクセス制御が可能となります。
<手順その4>クライアントPCからのアクセスの承認を行う
AWSマネジメントコンソール内でクライアントVPNエンドポイントを選択した上で、「認証」をクリックすると、クライアントPCから接続できる接続先の一覧表が表示されるので、許可を行いましょう。※デフォルトではいずれのCIDRも許可されているわけではありませんので注意が必要です。
<手順その5>クライアント用のVPNエンドポイント設定をダウンロードする
AWSマネジメントコンソール内でクライアントVPNエンドポイントを選択すると上部に「クライアント設定のダウンロード」というボタンが表示されるので、クリックすることでダウンロードが可能です。具体的には「.ovpn」という拡張子の設定ファイルクライアントPCにダウンロードしましょう。その後.ovpn設定ファイル及びクライアント証明書、及び証明書キーをクライアントソフトの設定ファイル用のフォルダに配置します。
まとめ
AWS VPN構築について、本記事では、AWSのVPN構築に焦点を当て、AWS Client VPNを導入するメリットデメリットや構築手順について徹底解説致しました。様々な機能を持つAWS内で、セキュリティの高さを誇る仮想プライベートネットワークであるVPNを構築することで、あらゆる脅威からデータを守ることができることが理解できたと思います。
AWS Client VPNを使用するためには、AWSに関する知識も必要となります。AWSは世界的にも普及しているため、使いこなせるようになると様々な面で重宝されるでしょう。VPNを構築したいと考える方は、是非AWSを利用して構築してみてはいかがでしょうか。