社内プロキシ経由でVMに接続してみた
Google CloudのVM(Compute Engineの仮想マシン)に対して、できるだけ簡単/低コストに社内プロキシ経由で接続する方法を調査しましたので、記事として記載します。
社内プロキシ経由でのVMの利用を考えている方への参考になれば幸いです。
外部IPをもつVMに対しての接続
ネットワーク経路に問題がなければ、外部IPをもったVMに対しては直接アクセスすることができます。
しかし、前述の通り社内プロキシ経由では、SSH/RDPプロトコルが許可されていない場合が多く、ブラウザやCloud shell(Google Cloud上に作成される一時マシン)経由での接続が必要となります。
SSH接続
SSH接続の場合は、外部IP(External IP)が割り当てられている場合のみ、ブラウザおよびCloud Shell経由での直接接続が可能です。
プロキシの関与外(Google Cloud内)での通信となるため、社内プロキシ環境からの間接的な接続が可能です。
接続は各マシンへの操作は<接続>タブから実施します。
・ブラウザ経由
[ブラウザウィンドウ開く]を選択後、各種情報が自動で設定され、すぐに接続されます。
・Cloud Shell経由
Cloud Shell 経由の場合は、[gcloudコマンドを表示]を選択後にコピーし、
1つ目の画像の黄色部からCloud Shellを起動し、そのまま実行することで接続できます。
RDP接続
残念ながら、2022年07月時点では、ブラウザやCloud shell経由のアクセス手段は用意されていないようです。
外部IPを持つマシンに対しても、下記の外部IPをもたないVMに対しての接続方法を参照いただければ幸いです。
外部IPをもたないVMに対しての接続
Identity-Aware Proxy(IAP) 経由の接続が最も容易だと判断しました。
Google Cloud の Identity-Aware Proxy とは、
GCP リソースに対するゼロトラストが実現可能なフルマネージドのリバースプロキシです。
External IPが付与されていない、プライベートなネットワークのVMインスタンス にも接続可能です。
また、任意のプロトコルのトンネル通信が可能であり、一時的なネットワーク経路の確立に適しています。
セキュリティ > Identity-Aware Proxy から有効化するだけで利用できます。使用するリソースについては、必要最小限の権限を割り当ててください。
VMへのアクセスのみができれば良いということであれば、IAP Desktop という、VM インスタンスに対する複数のリモート接続を管理できる Windows アプリケーションを利用することがおすすめです。
IAP Desktopを利用する場合
IAP Desktopは、Windowsの認証情報を利用しているようですので、
ローカルマシンが社内プロキシ環境下にて通信可能な状態であれば、特に設定は不要です。
IAP Desktopでは、SSH/RDP接続どちらも利用可能です。
gcloudコマンドを利用する場合
社内プロキシ環境にてgcloudコマンドを利用する場合は、下記を参考に
プロキシの設定 並びに 必要に応じて利用する証明書を指定ください。
[参考(公式ドキュメント)] プロキシ / ファイアウォールの背後で Cloud SDK を使用する場合の構成
gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_IP_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]
gcloud config set proxy/username [USERNAME] //必要に応じて
gcloud config set proxy/password [PASSWORD] //必要に応じて
gcloud config set core/custom_ca_certs_file [PATH_TO_CUSTOM_CA]
gcloudコマンドを用いて経路を構築する場合は、start-iap-tunnel
コマンドを実行します。
インスタンスのポート、バインドするローカルマシンのポートを指定することで、
該当のローカルポートへのアクセスを、指定したインスタンスのポートへ転送することができます。
RDPやSSHだけでなく、任意のポートを指定可能です。
gcloud compute start-iap-tunnel "インスタンス名" ポート番号 --local-host-port=localhost:ローカルホストのポート番号 --zone="インスタンスのZone名"
参考情報
公式ドキュメント:
[Windows] https://cloud.google.com/compute/docs/instances/connecting-to-windows?hl=ja
[Linux] https://cloud.google.com/compute/docs/instances/ssh?hl=ja
[IAP] https://cloud.google.com/iap/docs/concepts-overview?hl=ja
[IAP Desktop] https://github.com/GoogleCloudPlatform/iap-desktop/wiki
社内プロキシについて
社内プロキシとは、一般に社内からのインターネット接続経路に用意されており、
セキュリティ保護のため、基本的にはHTTP/HTTPSの通信のみを許可するように構築されております。
社内プロキシを経由することで、一定のセキュリティが担保されますが、
一方で、SSH接続やRDP接続といった通信は許可されず、クラウドの上の仮想マシンなどに直接接続することができません。
プロキシ側の設定変更で対処することも多々ありますが、トンネリングという技術を利用することで、末端の端末側のみで対処したケースとなります。
VM(Compute Engineの仮想マシン)について
用意されている多数のマシンイメージを用いる場合であれば、非常に簡単にGoogle Cloud上に仮想マシンを構築することができます。
構築時に、ネットワーク設定をすることで外部IPなどを設定することができます。
設定によっては、該当のVMが所属するVPCのファイアウォール設定などが、
別途必要となりますので、通信がうまくいかない場合などはご確認をいただければ幸いです。