LoginSignup
2
1

More than 1 year has passed since last update.

【Google Cloud】社内プロキシ環境からVMに接続してみた

Last updated at Posted at 2022-07-12

社内プロキシ経由で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内)での通信となるため、社内プロキシ環境からの間接的な接続が可能です。
接続は各マシンへの操作は<接続>タブから実施します。
CE画面.PNG
SSHの例.PNG
・ブラウザ経由
  [ブラウザウィンドウ開く]を選択後、各種情報が自動で設定され、すぐに接続されます。
・Cloud Shell経由
  Cloud Shell 経由の場合は、[gcloudコマンドを表示]を選択後にコピーし、
  1つ目の画像の黄色部からCloud Shellを起動し、そのまま実行することで接続できます。

RDP接続

残念ながら、2022年07月時点では、ブラウザやCloud shell経由のアクセス手段は用意されていないようです。
外部IPを持つマシンに対しても、下記の外部IPをもたないVMに対しての接続方法を参照いただければ幸いです。

外部IPをもたないVMに対しての接続

Identity-Aware Proxy(IAP) 経由の接続が最も容易だと判断しました。
ダウンロード.png
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だけでなく、任意のポートを指定可能です。

start-iap-tunnelコマンド
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の通信のみを許可するように構築されております。
社内プロキシ.PNG
社内プロキシを経由することで、一定のセキュリティが担保されますが、
一方で、SSH接続やRDP接続といった通信は許可されず、クラウドの上の仮想マシンなどに直接接続することができません。
プロキシ側の設定変更で対処することも多々ありますが、トンネリングという技術を利用することで、末端の端末側のみで対処したケースとなります。

VM(Compute Engineの仮想マシン)について

用意されている多数のマシンイメージを用いる場合であれば、非常に簡単にGoogle Cloud上に仮想マシンを構築することができます。
構築時に、ネットワーク設定をすることで外部IPなどを設定することができます。
設定によっては、該当のVMが所属するVPCのファイアウォール設定などが、
別途必要となりますので、通信がうまくいかない場合などはご確認をいただければ幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1