twingateを試してみた
どんなサービス
VPN不要でCloud・オンプレにあるサーバにセキュアにアクセスできるようになるサービスです。
しくみ
Cloud・オンプレ側にインストールされたconnectorがClientとの間にTLS Tunnelをはり、Cloud・オンプレ側のサーバに対しセキュアな接続を実現します。connectorへのインバウンド通信を許可する必要がないため、その点ではVPNに比べセキュアな構成と言えます。またconnectorはdockerで動作するため、Cloudでもオンプレでも実装することが可能です。
試してみた
AWS・Azure・OracleCloudで試してみました。
基本的な手順は
1. remote networkを作成する
2. connectorをインストールする
3. resourceを追加する
4. PCにclientをインストールする
5. 追加した resourceへ接続する
だけです。
各cloudに対するconnectorのインストールはdocumentに詳しく書かれていますが、ここではAWSへのインストール手順を例示します。
$ # fargate用clusterを作成
$ aws ecs create-cluster --cluster-name twingate
$ # task definitionを作成
$ aws ecs register-task-definition --cli-input-json fileb://fargate.json
$ # fargateサービスを作成
$ aws ecs create-service --service-name twingate-connector --desired-count 1 --launch-type "FARGATE" --task-definition twingate-connector-taskdef --network-configuration "awsvpcConfiguration={subnets=[***,***]}" --cluster twingate
fargate.json
{
"requiresCompatibilities": [
"FARGATE"
],
"containerDefinitions": [
{
"name": "twingate-connector",
"image": "twingate/connector:latest",
"memory": 2048,
"cpu": 1024,
"environment" : [
{ "name" : "TENANT_URL", "value" : "https://***.twingate.com"},
{ "name" : "ACCESS_TOKEN", "value" : "***"},
{ "name" : "REFRESH_TOKEN", "value" : "***"}
]
}
],
"volumes": [],
"networkMode": "awsvpc",
"placementConstraints": [],
"family": "twingate-connector-taskdef",
"memory": "2048",
"cpu": "1024"
}
remote network・connector・resourceを設定すると以下のような画面になります。
サンプルで作成した各CloudのネットワークはCIDRがかぶらないようにしてあります。CIDRがかぶってもresourceのPrivate IPが異なれば通信出来そうな感じがしますが、CIDRがかぶらないようにする方が無難だと思います。
あとはPCにクライアントをインストールすれば、各resourceに対しPrivate IPで接続できるようになります。
感想
コストさえ見合えば、いいことづくめな感じがします。
・慣れてしまえば、設定はとても簡単。
・VPNに比べPublic IPへのアクセス許可が不要なのでセキュア。
・ユーザから見た時の操作感が統一されるのでマルチクラウド環境に最適。
いまだに各CloudベンダーにはVPNを強化する動きが見えますが、こういったサービスが早く広まるといいなぁ。