IAP を利用した GCE にセキュアにログインする方法まとめ 2022 年版
注意点 🤚
※1 2022/12 時点の情報です
※2 この記事の元ネタはこちらです
概要 💁
Google Cloud の Compute Engine( GCE )では、OS に限らず多くの場合において、外部 IP アドレスを常態的につけることは非推奨となります
以下のページにて、外部 IP アドレスを持たない GCE Instance へのセキュアなログイン方法である Identity-Aware Proxy( IAP )をまとめます
また、この記事は SSH や RDP などのサーバの中にログインする方法のまとめ
であり、 Web サーバなどを公開する方法では無い
ので注意してください
イメージ図 🖼️
利用するサービスおよびツール 🛠️
1. IAP for TCP forwarding
パブリックなインターネットからバックエンドの GCE Instance へ SSH や RDP ログインする時に、セキュアな通信経路に加え、IAM の認証・認可でアクセスの可否を制御することが出来ます
2. IAP Desktop
GCE Instance に接続出来る Remote Desktop および SSH クライアント( OSS )
準備 🏗️
外部 IP アドレスを持たない GCE Instance およびネットワークの作成は、以下のページを参考に作成してみてください
CLI が得意な方 😊
to Linux サーバ
gcloud コマンドで SSH ログインする際に --tunnel-through-iap
をつけます
そうすると IAP for TCP forwarding を用いた SSH ログインをすることが出来ます
※ オプションを明示的に付けなくてもよしなに判断して IAP for TCP forwarding 経由でアクセスしてくれます
gcloud beta compute ssh {{ Your Google Account Name }}@{{ VM Name }} \
--tunnel-through-iap \
--zone {{ VM Zone }} \
--project {{ Your GCP Project ID }}
### 例
$ gcloud beta compute ssh {{ Your Google Account Name }}@{{ VM Name }} \
--tunnel-through-iap \
--zone {{ VM Zone }} \
--project {{ Your GCP Project ID }}
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1025-gcp x86_64)
Last login: Fri Dec 2 23:30:07 2022 from 35.235.242.49
iganari@iap-test-linux:~$
to Windows サーバ
- gcloud コマンドで TCP tunnel を作ります
- 例) GCE Instance の 3389 ポートと localhost の 13389 を繋ぐコマンドです
gcloud beta compute start-iap-tunnel {{ VM Name }} 3389 \
--local-host-port=localhost:13389 \
--zone {{ VM Zone }} \
--project {{ Your GCP Project ID }}
### 例
$ gcloud beta compute start-iap-tunnel {{ VM Name }} 3389 \
--local-host-port=localhost:13389 \
--zone {{ VM Zone }} \
--project {{ Your GCP Project ID }}
Testing if tunnel connection works.
Listening on port [13389].
... ( ターミナルはそのままにしておきます)
- Microsoft Remote Desktop から RDP 接続をします
CLI が苦手な方 🥺
to Linux サーバ
IAP Desktop を使って SSH ログインしましょう
IAP Desktop をインストールし、 SSH セッション機能を使いましょう
to Windows サーバ
IAP Desktop を使って RDP ログインしましょう
IAP Desktop をインストールし、 Remote Desktop セッション機能を使いましょう
例外について 🤷
多くの場合において GCE に 外部 IP アドレスをつけることは非推奨となりますが、例外パターンも存在します
しかしセキュリティリスクに繋がるのと Google Cloud の思想を鑑みると、 IAP を用いた接続方法に徐々にシフトしていくのが正しい姿勢だと個人的に思います
参考までに IAP 以外の経路を確保しておきたい場合のソリューションのイメージ図を貼っておきます
まとめ 😉
外部 IP アドレスを持たない GCE Instance へのセキュアなログインをまとめました( 2022/12 時点 )
ぜひ使ってみてくださいね!! :)
Discussion