こんにちは。奥田@島根です。
今回のブログでは、私の担当しているプロジェクトで利用していて便利と感じているにもかかわらず、あまり日本語の Web記事が多くない (日本での利用実績が多くない?) Twingate を紹介します。
Twingate とは
昨今、リモートワークが推奨され、オフィスに出社する機会は減っていることでしょう。モンスターラボでもリモートワークが推奨されています。 自宅などの不特定なネットワークから開発環境などの制限されたネットワークにアクセスする際、どのような手法を取っているでしょうか。多くの企業では VPN を利用していることと思います。 Twingate は VPN を置き換え、セキュリティ/メンテナビリティ/パフォーマンス/ユーザビリティを高めるソリューションです。
Twingate のアーキテクチャ
Twingate はゼロトラストモデルをベースとしたアーキテクチャを採用しています。
Reference: https://docs.twingate.com/docs/architecture-overview
VPN vs Twingate
Twingate が VPN のどんな問題を置き換えるか、説明します。
セキュリティ
- アクセス制御
- VPN では VPN ゲートウェイとの間でコネクションを確立すると、VPN経由のアクセスを許可したすべてのネットワークにアクセスできます。例えば複数のプロジェクトの開発環境が存在する場合、担当外の開発環境にもアクセスできてしまうため、セキュリティ担保の観点で好ましくないでしょう。各プロジェクトごとにBASIC認証などの他の認証システムの導入も併せて検討が必要となりそうです。 一方、Twingate ではリソース単位でのアクセス制御が可能となるため、特定のユーザやユーザグループのみにアクセスを制限することができます。
- インターネットへの露出
- VPN の場合、VPN ゲートウェイをインターネットに露出する必要があります。すなわち、攻撃の脅威にさらされる事となります。 一方 Twingate の場合、コネクタはインターネットへのアウトバウンドアクセスのみ持てばよく、プライベートなネットワークにホストすることができるため脅威にさらされることはありません。
パフォーマンス
- リソース制限
- Twingate では指定したリソースへのアクセスのみ Twingate を経由します。そのため、例えば Twingate を有効にしたまま動画配信サービスで動画を視聴しても、意図せず Twingate を経由することはありません。
メンテナビリティ
- 設定
- ユーザ、ユーザグループ、リソース、ネットワークなどの設定は Twingate コンソール上から設定できます。 Twingate ネットワークの Admin 権限さえあれば設定可能となるため、複雑なユーザ権限管理をする必要もありません。
- デプロイ
- Twingate コネクタのデプロイは Docker / Helm / AWS ECS / Manual など多くのデプロイ方法が手順化して用意されているので、導入も容易です。Twingate コネクタとアクセス対象のリソースの間で通信ができること、Twingate コネクタがインターネットへのアウトバウンドアクセスが可能であること、の2点だけが注意すべきポイントです。
ユーザビリティ
- 対象デバイス
- VPN ソフトウェアによっては、接続可能なデバイスに制限があります。弊社の VPN ソフトウェアの場合、モバイル端末からの VPN 接続に問題があるようです。Twingate の場合、iOS / Android / macOS / Windows / Linux / Chrome OS 向けのクライアントアプリが用意されているので、ほとんどのデバイスをカバーできるでしょう。デバイスにクライアントアプリをインストールし、Twingate ネットワークに接続するだけで簡単に指定したリソースにアクセスできます。
料金
Twingate を導入するには以下の料金がかかります
- Twingate の利用料金
- Teams プラン: $6 [user / month]
- Business プラン: $12 [user / month]
- Twingate Connector のインフラコスト (EC2など)
注意点として、Teams プランでは最大50ユーザ/5リモートネットワーク、Business プランでは最大150ユーザ/10リモートネットワークの制限があり、大規模なプロジェクトの場合やクローズドテストを行おうとした場合は容易に制限を超えてしまうことが考えられます。その場合はカスタムの Enterprise プランも用意されていますのでサポートに問い合わせてみるとよいでしょう。
Twingate 導入のステップ
それでは実際に Twingate の導入を試してみましょう。 今回はプライベートネットワーク内のローカルPCに立ち上げた Web アプリにネットワーク外からアクセスしてみようと思います。 なお、Twingate にはフリートライアル期間がありますので、この手順は無料で試すことができます。
0. Web アプリケーションの構築
アクセスするための Web アプリケーションを構築・実行しておきましょう。以下は Rails の例です。
$ rails new twingate_sample
$ cd twingate_sample
$ rails s -b 0.0.0.0
1. Twingate ネットワークの作成
Twingate の Webページ にアクセスし、 Create a new Network リンクからネットワークを構築しましょう。サインアップやネットワーク名の入力などが求められます。画面の案内に従って入力していけばよいでしょう。
2. Connector の構築
次にコネクタを構築します。 まずリモートネットワークの Location は、今回は On Premise を選択します。 次に Add Connector > Deploy Connector と選択し、デプロイ方法には Docker を選択しましょう。 Generate Token すると、Twingate コネクタを Docker で実行するためのコマンドが表示されますので、それをコピーし、(Webアプリケーションを実行している) ローカルPC上で実行しましょう。 Twingate コンソールのコネクタ一覧に表示されるコネクションステータスが Connected になったらコネクタの構築は完了です。
3. Twingate リソースの設定
ローカルPC上のWebアプリケーションにアクセスするため、ローカルPCのプライベートアドレスをリソースに追加します。 Twingate コンソールから作成した Twingate ネットワークの画面に進み、 Add Resource を選択します。 CIDR を選択し、DNS Address にローカルPCのプライベートアドレス(例:192.168.10.100/32)を入力します。Label は任意で OK です。 次に、作成したリソースに対し、デフォルトで存在する Everyone グループを割り当てます。これで、Twingate ネットワークにアカウントを持つ全てのユーザが作成したリソースにアクセスできるようになります。
4. クライアントアプリのセットアップ
ここでは iPhone にアプリをセットアップしていきます。 App Store で Twingate と検索すると Twingate アプリが表示されるのでインストールします。 インストール後は作成した Twingate ネットワークのネットワーク名(*.twingate.com)を入力し、サインインします。
5. 確認
セットアップが完了しましたので、 iPhone からローカルPC上の Webアプリケーションにアクセスしてみましょう。(Twingate 経由でアクセスできていることを明確にするため、WiFi の接続を OFF にしてモバイル回線を利用するとよいでしょう) iPhone のブラウザでローカルPCの Webアプリケーションの URL を入力してみましょう。(例: http://192.168.10.100:3000)
これだけのステップで簡単にプライベートなリソースにアクセスできます。
まとめ
Twingate はサービス利用料はかかりますが、面倒な管理や保守、セキュリティリスクから開放されることを考えるとよい選択肢になるのではないでしょうか。14日間のフリートライアルもあるので、まずはその使い勝手のよさを試してみましょう。
Open the Twingate!
Author
Shuhei Okuda
バックエンド/テックリード