こんにちは。AWS CLIが好きな福島です。
今回は、Twingateを使って、
プライベートアクセスをしてみたので、ブログに記載します。
- Twingateとは
- アーキテクチャ図
- コンポーネント
- 今回の構成
- やること
- 1. Twingate Networkの作成
- 2. Connectorの構築(AMIのデプロイ)
- 2-1. Seto up Connectorsをクリックします。
- 2-2. Add a Connectorをクリックします。
- 2-3. Deploy Connectorをクリックします。
- 2-4. AWS AMIをクリックします。
- 2-5. Generate Tokensをクリックします。
- 2-6. RegionとSubnet ID,Security Group IDを指定します。
- 2-7. 今まで入力した情報を基にAMIをデプロイするコマンドが生成されるため、コマンドをコピーし、実行します。
- 2-8. ステップ5に記載の通り、接続を待ちます。(画像は日本語訳しております。)
- 2-9. EC2が無事に起動すると、ステータスがConnectedになります。
- 2-10. マネジメントコンソールからも確認してみると無事にEC2がデプロイされていることが分かります。
- 3. プライベートアクセスするリソースの設定
- 4. クライアントアプリの導入
- 5. 動作確認
- 終わりに
Twingateとは
Twingateとは、一言で言うと「VPNに代わるソリューション」になるかと存じます。
Secure remote access for distributed workforces | Twingate
以下、公式サイトから抜粋。
Secure access to private data for your distributed workforce Replace corporate VPNs with a more secure, usable and performant zero trust access solution
(日本語訳
分散した従業員のプライベート データへの安全なアクセス 企業の VPN を、より安全で使いやすく、パフォーマンスの高いゼロ トラスト アクセス ソリューションに置き換える
アーキテクチャ図
アーキテクチャ図は、以下の通りとなります。
コンポーネント
Twingateには、アーキテクチャ図に記載の通り、4つのコンポーネントがあります。
ざっくり解説すると以下の通りになるかと存じます。
①CONTROLLER:
CONNECTORやCONNECTORを介して接続するリソースの管理を行う。
②RELAY:
CONNECTORとCLIENTを結びつけ、通信を確立させる。
③CONNECTOR:
プライベートアクセスしたいサーバへトラフィックを転送する。
CONTROLLERやRELAYと通信を行う。(CLIENTとは直接繋がらない。)
④CLIENT(CLIENT APP):
ユーザーのデバイスにインストールされるソフトウェア。
プライベートリソースへのアクセスに対して、認証と承認を組み合わせたプロキシとして機能。
※認証には、GoogleやMicrosoft、Githubなどの情報を利用できます。
今回の構成
今回の構成は、以下の通りで、クライアントから「fk-test-linux-private」へプライベートアクセスします。 図に記載のRELAYとCONTROLLERは、SaaSになります。
やること
やることは以下の通りです。
- Twingate Networkの作成
- Connectorの構築(AMIのデプロイ)
- プライベートアクセスするリソースの設定
- クライアントアプリの導入
- 動作確認
1. Twingate Networkの作成
1-1. Try for Freeをクリックします。
1-2. Sign UPします。(今回は、with Googleを選択しました。)
1-3. 利用するアカウントを選択します。
1-4. Continueをクリックします。
1-5. チーム名を入力します。管理コンソールへのエンドポイント名に関連します。
1-6. プライベートアクセスするリソースがあるサービスを選択します。
今回は、AWSを選択しました。
1-7. チームメンバーの追加ができるようですが、今回はスキップしました。
1-8. お試しするプランを選択します。
お試しなので、どちらでもいいと思いますが、プランの詳細は、以下の通りです。
1-9. 管理コンソールが表示されます。
2. Connectorの構築(AMIのデプロイ)
ここからConnectorの構築を行っていきます。 今回は、Connectorが導入されたAMIをデプロイします。 ドキュメントには、「ECS on Fargate」にデプロイする手順も記載がありました。
https://docs.twingate.com/docs/aws
2-1. Seto up Connectorsをクリックします。
2-2. Add a Connectorをクリックします。
2-3. Deploy Connectorをクリックします。
2-4. AWS AMIをクリックします。
2-5. Generate Tokensをクリックします。
アカウントの認証が求められるため、認証します。(画像は割愛)
2-6. RegionとSubnet ID,Security Group IDを指定します。
※私が試した際は、東京リージョンかつサブネットが1cだとデプロイに失敗しました... 1aか1dにしか対応していないようです。
An error occurred (Unsupported) when calling the RunInstances operation: Your requested instance type (t3a.micro) is not supported in your requested Availability Zone (ap-northeast-1c). Please retry your request by not specifying an Availability Zone or choosing ap-northeast-1a, ap-northeast-1d.
2-7. 今まで入力した情報を基にAMIをデプロイするコマンドが生成されるため、コマンドをコピーし、実行します。
2-8. ステップ5に記載の通り、接続を待ちます。(画像は日本語訳しております。)
2-9. EC2が無事に起動すると、ステータスがConnectedになります。
2-10. マネジメントコンソールからも確認してみると無事にEC2がデプロイされていることが分かります。
以上でConnectorの設定は完了です。
3. プライベートアクセスするリソースの設定
3-1. Add Resourceをクリックします。
3-2. 接続先の情報(DNSまたはCIDR)を入力します。
3-3. 設定した宛先に接続できるグループを指定します。
4. クライアントアプリの導入
4-1. ページ上部にある「Download」をクリックします。
4-2. クライアントに応じて、インストーラーをダウンロードし、インストールします。
5. 動作確認
5-1. Twingateを起動し、チーム名を入力します。
Join Networkをクリックするとアカウント認証が求められるため、認証します。
5-2. アカウント認証が完了すると以下の画面にリダイレクトされます。(このページは閉じてOKです。)
5-3. Connectorとの接続が確立されたため、プライベートリソースである「fk-test-private-linux」にpingを飛ばします。
# ping 10.88.10.60 PING 10.88.10.60 (10.88.10.60) 56(84) bytes of data. 64 bytes from 10.88.10.60: icmp_seq=1 ttl=254 time=3077 ms 64 bytes from 10.88.10.60: icmp_seq=2 ttl=254 time=2074 ms 64 bytes from 10.88.10.60: icmp_seq=5 ttl=254 time=188 ms 64 bytes from 10.88.10.60: icmp_seq=8 ttl=254 time=185 ms 64 bytes from 10.88.10.60: icmp_seq=10 ttl=254 time=202 ms 64 bytes from 10.88.10.60: icmp_seq=11 ttl=254 time=195 ms ^C --- 10.88.10.60 ping statistics --- 11 packets transmitted, 6 received, 45.4545% packet loss, time 10327ms rtt min/avg/max/mdev = 185.111/986.935/3077.487/1160.169 ms, pipe 3 #
→無事にpingが通りました!!!
5-4. Windowsの場合、右下にTwingateのアイコンがあるため、ここから「Disconnect」等できます。
5-5. Disconnectした状態で、pingを実行し、接続できないことも確認してみました。
# ping 10.88.10.60 PING 10.88.10.60 (10.88.10.60) 56(84) bytes of data. ^C --- 10.88.10.60 ping statistics --- 8 packets transmitted, 0 received, 100% packet loss, time 7272ms #
終わりに
今回は、プライベートアクセスを試してみましたが、 Twingateの管理コンソールでパブリックIPを指定することも可能です。 これにより送信元がConnectorのIPになるため、外部公開しているサーバへの送信元を制御するのにも役に立ちそうです。
また、Twingateは、Connectorへ通信がアウトバウンドのみでよいため、セキュアで良いですね! では、またどこかでお会いしましょう~