#0.はじめに
これはまだ私がくらうど?ジーシーピー??だった時、業務の一環でGCPにWindowsサーバー立てなきゃいけなくなって迷走したゆるーいお話です。(今もそこから毛が生えたレベルですが・・)。
以下はポエム風に書いてますので忙しい方向けに結論だけ先に書いておきます。
ファイアウォールで社内から外部へリモートデスクトップ接続(RDP:3389番)が許可されてない場合は「Identity-Aware Proxy」をGCPで有効にして、「IAP Desktop」を使用してHTTP経由でセキュアにアクセスしましょう!
#1.当時のぼくのレベル
なんとなくクラウドに関わりたいなぁ・・
自社の人があまり取り組んでないことに手を出すことで価値を高めたいなぁ・・
JAVAとかのプログラム言語は多少触れるけど(Web系含めた)インフラ知識はほとんどなし。
ミーハーと言われても仕方ない状態。
そんな時にようやくクラウドに関われることに!!
聞いたことあるAWSかな? Azureかな? ・・・ え?じーしーぴーですか???
#2.迷走の経緯
2-1.初めてのVMインスタンス構築
まずは自分のWindows環境をクラウドに再現するということでGCEにWindowsサーバーを立てました。とりあえずクイックスタートなるものがあったので、中身の理解は追いつかないが実行。
おぉ、とりあえずインスタンスができたっぽいぞ!後はRDPで繋げば終わり。楽勝でしょ!
が・・・ダメッ!!!
2-2.悪戦苦闘
ふむふむ。。なるほど3389を許可すればいいんやな
gcloud compute firewall-rules create allow-rdp --allow tcp:3389
が・・・ダメッ!!!
これは会社側の問題な気がしてきたので、社内のインフラに詳しい人に聞いてみたが・・・
「社内から80番(HTTP)、443番(SSH)しか許可されてないからなんじゃない?」
「RDPに変換すれば?」と言われたので色々調べて「RDPゲートウェイ」を使用すればいいことがわかった。
が、しかしこれは1回普通にWindowsサーバーに入らないと設定できないらしいことが判明。
その1回も無理なのでこの手法も断念。。
※素直に管理部門に3389開けてもらえばいいんですが、それも色々ありまして・・
でその後もネットの海をさまよい、色々試してみたがどれもNGだった。
#3.解決へ
たまたま社内からAzureでRDP接続したことある人がいたので、アドバイス求めたら「Azure Bastionってのでいけたよ!」とのこと。調べると「RDPなどを使用しなくても、Web上のAzurePortalに接続し、そこから仮想マシンを操作する機能」だと判明した。なるほど、これのGCPバージョンを探せばいいのか!というのがわかり、無事に解決に至るのであった。。。
<手順>
①まずはGCP(のセキュリティ)からIdentity-Aware Proxyを有効にする
②IAP Desktopをインストール
③IAP Desktopで対象プロジェクト/VMを選択し、Connectを押して接続を実行する
以下は簡単な説明。
ユーザーからはHTTP通信をCloud IAPに飛ばし、RDPをトンネリングすることでVMに接続できる。ユーザー側はIAP DesktopというWindows アプリケーションを通してセキュアにアクセスすることができる。
#4.おわりに
知識が無かったので色々苦労してしまったが、社内からHTTPしか許可されてないケースはかなり多数あると思う。
Azureでは「Azure AD Application Proxy(Azure Bastion)」、AWSでは「Amazon WorkLink(たぶん)」、GCPでは「Identity-Aware Proxy(IAP Desktop)」の機能を使うことで社内からHTTP経由でVMへRDP接続ができることがわかったので、もしGCP/クラウド初心者で同じように困っている方の参考になれば幸いです。
##.色々参考にした記事たち
https://www.apps-gcp.com/gce-wininstance-fw-rdp/
https://cloud.google.com/iap/docs/using-tcp-forwarding
https://cloud.google.com/blog/ja/products/identity-security/zero-trust-remote-access-for-windows-vms
https://cloud.google.com/iap/docs/tcp-forwarding-overview