Google Cloudの IAP Desktopをつかってみよう！


# Google Cloudの IAP Desktopをつかってみよう！
こんにちは、京セラコミュニケーションシステム櫻木 (@kccs_nobuaki-sakuragi)です。

今回は、製造業関連の伴走型Dx支援やLift&Shift案件（クラウド移行案件）をしている際によく質問される「Google Cloud内にあるWindows簡単に接続できないの？」に答える為、この記事を記載しました。今回はGoogle Cloud製のIAP DesktopクライアントソフトがGitHubで公開されていますのでそれを紹介します。

前回の記事でgcloudコマンドを活用し、Windowsリモートデスクトップに接続する方法を説明しました。このIAP Desktopクライアントを利用するともっと簡単にGoogle Cloud上のWindowsサーバへアクセスする事が可能になります。

Google CloudはCloud Identity-Aware Proxy使うことにより便利になったけど、「Windowsへアクセスするのはやっぱり大変」と思っていた方、この記事が参考になればWindowsサーバの活用も検討してみては如何でしょうか。

IAP Desktopを活用するとこんな感じでGoogle Cloudへのオペレーションが簡単にできます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/89861bef-7fef-587b-86b3-f42bbbaaa1aa.gif)


# 本記事の対象者

- Google CloudのCompute Engine（以降GCE）上にWindowsサーバーを起動させている方
- Google認証情報をつかってIAP経由でWindowsを利用したい方
- HTTPSの通信許可だけでWindowsのリモートデスクトップ（RDP）やLinuxへSSHリモートアクセス接続したい方
    
# Google Cloud IAP Desktopとは？

IAP Desktopは、Google Cloudで実行されるVMインスタンスへ接続するためのWindowsアプリケーションです。
このソフトウェアを利用すると複数のWindowsリモートデスクトップとLinuxのSSH接続を操作・管理が可能です。

IAP DesktopはIdentity-Aware-ProxyTCPトンネリングを使用してVMインスタンスに接続できます。その為、セキュリティやアクセス制御はgcloudコマンドのCloud IAPの仕様と同じになります。

Google CloudのIAMで権限管理が一元化できる事もメリットです。

## 特徴

- パブリックインターネットのIPを公開していなくもSSHやRDPへ接続可能
- Identity-Aware ProxyのTCP転送トンネルはHTTPS経由で接続します。その為、接続元のネットワークはHTTPSの許可がされていれば利用可能です。
- Cloud IAMを使用して、VMへの接続許可を細かく制御できます。
- Google製のDesktopクライアント

## 利用環境

利用可能なOS
- Windowsクライアント
    Windows 8、Windows Server 2012以降

IAP Desktopを使用する為には、併せて次のGoogle Cloudの設定も必要となります。

### 1.VPCへの通信許可設定
接続したいVMがあるVPCへIAP Desktopネットワークからの通信許可をしてください。

参考：Firewallルール登録コマンド
```
gcloud compute firewall-rules create allow-rdp-ingress-from-iap \
    --direction=INGRESS \
    --action=allow \
    --rules=tcp:3389,tcp:22 \
    --source-ranges=35.235.240.0/20
```

### 2.利用ユーザへのIAP(CloudI dentity-Aware Proxy)権限付与
プロジェクトのプロジェクトオーナーの場合は、IAPデスクトップを使用するため必要なすべての権限を持っています。
編集者より下の権限しか割り当て貰っていないユーザの方はProjectオーナ権限をもっている方へ次の2つの権限付与してもらうように依頼してください。

- [Compute Viewer](https://cloud.google.com/compute/docs/access/iam#compute.viewer) (VM インスタンスを一覧表示してアクセスするため)
- [IAP で保護されたトンネル ユーザー](https://cloud.google.com/iap/docs/managing-access#roles)(IAP TCP 転送を使用するため)
- [インスタンスアクセス権限]

:::note info
アクセス権限は、それぞれのVMへのアクセスや起動・停止などを実施する場合は、それに応じた権限付与をする必要があります。
細かな制限をしない場合は[Compute インスタンス管理者(V1)]を設定しておくとVMへの操作とアクセスが可能となります。
:::


詳細な設定方法は、[Idnetity-Aware Proxyを活用しVPNフリーなメンテナンスをしよう！](https://qiita.com/kccs_nobuaki-sakuragi/items/38af1c9c9408ce87925a#idnetity-aware-proxy%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97vpn%E3%83%95%E3%83%AA%E3%83%BC%E3%81%AA%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%82%92%E3%81%97%E3%82%88%E3%81%86)に記載していますので、参考にしてください。


最新のIAP Desktopの[前提条件](https://github.com/GoogleCloudPlatform/iap-desktop/wiki/Installation)は、Google Cloud  IPA DesktopのGitページをご確認ください。

# Google Cloud IAP Desktopのインストール

[インストール方法はこちらのURLの抜粋版になります。](https://github.com/GoogleCloudPlatform/iap-desktop/wiki/Installation#prerequisites)

## IAP Desktopのインストール

### 1.最新のインストーラーをダウンロード

https://github.com/GoogleCloudPlatform/iap-desktop/releases/latest/

IapDesktop.msi　をダウンロードします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/74b5818e-8046-28e4-fc0c-8c30db643cd8.png)


リリースノートが表示されます、大きなアップデートが今後あるそうです。
将来的には64Bitのみになるようです。

リリース情報には過去のアップデート情報も記載されています、最新版をつかってみて「あれ、前の機能と変更されている？」という場合は一度リリース情報を確認するのがよいと考えています。

:::note info
IAPDesktop内の機能が別ツールに移行したなども記載もありました。チーム内で同じツールを使っていて何かメニューが違うなというときは要確認です。
:::

### 2.インストールの開始
ダウンロードしたファイルをダブルクリックしてIapDesktop.msi、インストールを開始し、インストーラーを起動します。

### 3.ライセンスへの同意
Apache 2.0 ライセンスに同意する場合は、[インストール] をクリックします。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/d9976852-779b-13e3-f241-36131ba6634e.png)


### 4.インストールの完了
インストールが完了したら、[完了] をクリックして IAPDesktopを起動します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/b6e4d5e5-a279-25a4-1144-f18f6cc43ef0.png)


## IAP Desktopの初期設定
IAP Desktopは初回起動時に環境設定が必要になります。
次の手順で設定します。

### 1.IAP Desktop起動と[サインイン] 
ダイアログが表示されます、[サインイン]表記がでましたらサインインをクリックします。

ボタンを押すとログインWebブラウザウィンドウが開きます。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/457e5ec9-53ec-207d-899d-b97f943a75e5.png)


### 2.サインイン
Google ユーザーアカウントでサインインします。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/99ee7268-3719-86df-e106-69fbe798ab22.png)


### 3.サインインユーザを利用したIAPDesktopへの権限付与
IAP Desktopへの権限付与設定をします。
[IAP Desktopが Google アカウントへのアクセスを求めています]画面で、チェックボックスを有効に設定します。
IAP デスクトップがGoogle Cloud データを表示、編集、構成、および削除できるようにします。

IAP Desktop では、Google Cloud プロジェクトにアクセスし、IAP TCP 転送を使用するために、このスコープが必要です。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/16e9fd52-4d41-f244-12e5-cc93b556676b.png)


チェックを入れない場合次の認証エラーの画面がでます。
もし、認証エラーになった場合は、一度IAP Desktopクライアントを再起動する事により再度設定可能です。
上記の「Google Cloudのデータ参照、編集、設定、削除、Googleアカウントのメールアドレスの参照」にチェックを入れ直し再設定してください。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/416e1567-3b44-3328-82e7-66d4fb1a5394.png)


### 4.サインイン完了
[続行]をクリックしてサインインを完了します。
完了すると画面上に次のメッセージが表示されます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/fac7f493-d22f-23a5-0b8f-d2c02173bae8.png)


### 5.利用プロジェクトの登録設定
[プロジェクトの追加] ダイアログで、Google Cloud プロジェクトを選択し、[プロジェクトの追加] をクリックします。

プロジェクトを選択します。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/69b711ff-4dbe-ebd5-2473-9dc35863f414.png)

プロジェクト エクスプローラーに、プロジェクトと、プロジェクトに含まれるすべてのVMインスタンスが表示されるようになりました。

プロジェクトエクスプローラー
必要に応じて、メニューで [ファイル] > [プロジェクトの追加] をクリックして、さらにプロジェクトを追加します。

IAP Desktop のインストールは完了です。

### 6.初期設定の完了
スタートメニューのIAP Desktopアイコンから起動する事ができます。
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/939f2b7f-6c31-0f21-cd9e-efd6f7ed3918.png)


:::note info
※IAP Desktopは、利用ユーザがProjectのオーナ権限がある場合は、接続可能ですが、編集者より下位の権限の場合はIAPのトンネルの許可を個別で付与する必要があります。
編集者権限より下位の権限の場合は[この記事](https://qiita.com/kccs_nobuaki-sakuragi/items/38af1c9c9408ce87925a#3iap%E3%82%92%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AB%E6%A8%A9%E9%99%90%E3%82%92%E4%BB%98%E4%B8%8E%E3%81%99%E3%82%8B)を参考にしながら、Identity-Aware Proxyのへの接続権限を付与してください。
::: 

## IAP Desktopを利用しWindowsサーバへリモートデスクトップ接続してみよう。
リモート デスクトップ (RDP) を使用してWindowsVMに接続するには、次の手順を実行します。

### 1.IAP　Desktop画面の構成
画面左のProject Explorerツール ウィンドウにIAP Desktop内へ設定したプロジェクトとVMインスタンスが表示されます。

次の様な階層構造になっている為、プロジェクトとリージョンがわかりやすく配置されています。

         Project名
             └ リージョン-ゾーン
                 └ インスタンス名


### 2.WindowsOSの起動
Project Explolerツールからインスタンスの起動・停止などもする事が可能です。
まずは、Windowsサーバを起動してみます。
起動したいWindowsVMへ右クリックし、 [Control] を選択、[Start]を選択します。
![30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/000a095a-0e8e-3b04-4697-82650088f774.png)

Start VM instance　と表示されます。
OSを起動して良いか確認がありますので、[はい（Y）]ボタンを教えてください。
ボタンを押すとOSが起動します。Linuxも同様のオペレーションでOSの起動が可能です。
![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/77130035-66e8-d97d-2e16-93320871ff07.png)

画面左下に、OSのステータス状況が表示されます。
![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/2729c378-6364-a16e-cefb-75c36f58f7c5.png)

OSが起動すると、PCの画像にz文字が無くなります。
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/dbc1efa6-8955-ef3a-a7af-614fccef9bd0.png)


### 3.WindowsVMユーザの作成
WindowsVM用のユーザとパスワードを新規に作成してみます。
Generate Windows logon Credentialsを選択します。
![34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/53dfd447-2e4d-ffb9-375f-4a2dd3bcfc37.png)


#### 3−１.パスワードを更新するユーザもしくは、新規のユーザを入力し、[OK]ボタンを押します。
![35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/62485d1a-83ac-1645-e1ac-8084309a4137.png)


#### 3-2.Windows logon credentialsを生成します。
![36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/b1a780e2-f5fa-82b0-e7a0-512d89c04bdc.png)

生成が完了したら、Logon credentials画面が表示されます。

:::info note
作成されたパスワードは、ここで取得できます。
クリップボードボタンを押しパスワードをコピーしメモ帳などに貼りつけ生成されたパスワードを確認し管理してください。
:::

![37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/ee2ce1fb-b359-03b0-dc85-1d0f267e3f89.png)

### 4.Windowsリモートデスクトップへ接続
![38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/2e980328-5b28-0c49-5c0e-e33ec9e59c83.png)

簡単にGoogleCloud上のWindowsへアクセスできました！
![39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/9c560971-504c-c96a-e4ca-e96896a96f77.png)

### 5.Widnows　OSを停止します。
Windowsの作業が完了しましたら、[Project Explorer]のWindowsインスタンスを右クリックし
[Control]から[Stop]を押しOSを停止します。
![39-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/de02a370-5971-23e4-bdc6-8e9b673d3008.png)

Stop VM instanceウィンドウが表示されたら、[はい(Y)]を押してOSを停止してください。
![39-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/0cce0ba2-92c2-8a38-1c09-d3fdf75f674e.png)

### 6.RDP接続設定のカスタマイズ
接続設定をカスタマイズするには、接続設定ツールウィンドウを使用できます。

プロジェクト エクスプローラーツール ウィンドウで、VMインスタンスを右クリックし、[接続設定]を選択します。

[接続設定]ウィンドウで、必要に応じて設定をカスタマイズします。
![42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/89a099a7-4561-333b-4b49-4fbb936979cf.png)


ユーザ名やパスワードを変更したい場合はこちらのプロパティで設定変更します。
![43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/78e60313-8181-9ae7-77b4-1fa51e6b2492.png)


注: デフォルト以外の設定を指定すると、文字が太字で表示されます。

IAP Desktopの画面からはWindowsクライアントかLinuxクライアントを判別するには、インスタンスを選択し、[右クリック]をし、[Properties]を選択します。
![40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/d880ae54-81f1-553b-a160-e53c90cec40b.png)


ネーミングルールでOSを判別しておくのが良いですが、できない場合はPropatiesの情報を見ながら、OSの種別する事も可能です。
Instance DetailsのLicensesに利用しているOSのバージョンが表示されます。
![41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/d0827c0d-c465-ca53-93d9-4f0136a286ed.png)


## （おまけ）IAP Desktopを利用しLinuxサーバへリモートデスクトップ接続してみよう。

接続したいLinux VMインスタンスを選択し、右クリックします。
[Connect]を押し、VMインスタンスへ接続します。
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/832e8744-ab35-6022-41bc-e8bd30dc0b3a.png)


Windowsとは異なり、Linuxは標準でGoogle CloudのGoogle IDとLinuxOSの権限が連携している為、1クリックでログインできます。
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/746b87dd-ef42-e4a5-ea3e-27b8f779a5c4.png)

![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/cfc6bf12-273e-8b0a-5901-446dc1cabdda.png)

WindowsOSと同じく、[Controle]メニューで起動・停止などのオペレーションも可能です。
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/0c359b19-d117-c37d-948c-77be670e3c45.png)

停止前にStopVM Windowsが表示され、間違って停止ししない作りになっています。
![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2773468/a06f9b24-40fd-d8aa-c32e-f994d4063e4f.png)


# 最後に

今回はGoogle Cloud のIAP Desktopの接続方法・使い方をまとめてみました。
比較的簡単に設定ができ、GCEへのアクセスが非常に便利です。

Linux接続時はオペレーションLogが記録できない為、OS側でscriptコマンドなどで、Logを保管するなどしながら使うといいかもしれません。

また、IAP Desktopを利用するとGCEへのアクセスがIAMで管理できる為、既存のセキュリティーポリシーへの影響も少なくオペレーションもしやすくなって非常に便利です。
Windowsを利用する場合はこのツールも積極的に活用していきたいと考えています。

:::note ifno
本記事は2022年11月に作成しております。よって、引用している文章などはこの時点での最新となります。ご了承ください。
:::