プライベート・ネットワークでOCI上のVDI（セキュア・デスクトップ）を利用してみる

セキュア・デスクトップは去年リリースされたOCI上でのマネージドなVDIサービスです。サービス自体については以前の記事↓を参照してください。
[OCIセキュア・デスクトップ（OCI Secure Desktops）を使ってみる](https://qiita.com/tkonishi/items/89e2b09c6ca2966f1d35)



先日リリースされた[セキュア・デスクトップの新機能](https://docs.oracle.com/ja-jp/iaas/releasenotes/secure-desktops/js-relaunch.htm)の一つで、プライベート・アクセスが利用可能になりました！

これまでは、デスクトップ・ユーザがアクセスする際のネットワークはインターネット経由となっていましたが、プライベート・エンドポイントを使用することで、VCN内またはオンプレミス・ネットワークからOCI上のデスクトップにプライベート・ネットワーク経由でのみアクセスすることができてセキュリティの向上につながります。
![image-20241016115643836.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f90dbe2d-e890-75fd-0005-5e3066b3a1e3.png)


さっそくこちらを試してみたいと思います！

VPNや閉域網接続の環境を持っていないので、OCI内のプライベート・サブネット内のWindowsインスタンスを作成してこれをクライアント端末に見立てて実施していきます。

また、プライベート・サブネット内の端末用のインスタンスへは、踏み台用のインスタンスにリモートデスクトップ接続してからさらにリモートデスクトップ接続していきます。ちょっと複雑ですが、以下のようなイメージです。実際に実施したいのは一番下のプライベート・サブネット内の端末からセキュア・デスクトップへの接続です。
![image-20241016122604714.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/9235ca06-e0c1-be8e-d93e-ed998a61a2ec.png)



## 0. VCNの設定とクライアント端末としてのWindowsインスタンス、踏み台用インスタンスの作成

1. IAMポリシーの設定は[前回の記事と同じ設定](https://qiita.com/tkonishi/items/89e2b09c6ca2966f1d35#1-%E4%BA%8B%E5%89%8D%E8%A8%AD%E5%AE%9A)を使っていきます。
2. 端末用のインスタンスを配置するプライベート・サブネットには、サービス・ゲートウェイとNATゲートウェイへのルート・ルールを記載しておきます。![image-20241016120952114.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/9b145ba7-4303-2406-21c2-f0ec56ebdfd2.png)
3. また、プライベート・サブネットのセキュリティ・リストで、**RDP（TCP port3389）と、HTTPS（TCP port443）**の**イングレス・ルール**を許可しておきます。プライベート・エンドポイント用のNSGにルールを追加しても構いませんが、今回は簡易的にサブネットのセキュリティ・リストで設定しました。![image-20241016124529270.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f5cb5f6e-b0ac-11b4-9281-e0d48fe4f193.png)
4. VCNのプライベート・サブネット内にWindowsインスタンスを作成しておきます。シェイプやOSバージョンはなんでもかまいません。![image-20241016120903301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/312f16ce-eb14-b0ea-b63b-a1971fa804ef.png)
5. さらに踏み台用のインスタンスをパブリック・サブネットに作成します。こちらはパブリックIPを持っていますので、私のPCからインターネット経由でアクセス可能です。このインスタンスを経由して二段階でRDPしていきます。
![image-20241016121837606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/554e52e0-9333-a925-1881-9c6231426d49.png)


## 1. デスクトップ・イメージの準備

以前の記事の[デスクトップ・イメージの準備](https://qiita.com/tkonishi/items/89e2b09c6ca2966f1d35#2-%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E6%BA%96%E5%82%99)を参考にイメージを準備します。今回も事前構成されたOracle Linux 8の汎用イメージを使用しました。イメージは随時更新されているので最新版を使用していきましょう。



## 2. プライベート・アクセスを有効にしたデスクトップ・プールの作成

1. コンソールのメニュー「コンピュート」→「セキュア・デスクトップ」→「デスクトップ・プール」の画面で「デスクトップ・プールの作成」ボタンをクリックしてデスクトップ・プールの作成画面を開きます。

2. 以下の項目を入力していきます。オプション項目は特に入力しなくても構いません。
   - 名前：好きなデスクトップ・プールの名前をつけます。ここでは、Demo_PrivateDesktopPoolとしています。
   - 管理者権限：どちらでもよいですが、デスクトップ・ユーザにOS上の管理者権限を与える場合はチェックを入れます。
     ![image-20241016125032260-17290507142431.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/aca2bd7f-3ea7-49cf-6ba5-95bead3f9e66.png)
   - プール・サイズ：
     - 最大サイズ：このデスクトップ・プール内で起動できるデスクトップの最大数です。最小10から入力可能です。ここでは10にしています。
     - スタバイ・サイズ：ユーザがアクセスする前にあらかじめインスタンスを起動して準備しておくスタンバイ用デスクトップの数です。0から最大サイズまでの範囲で入力します。ここではゼロにしてます。
   - 配置：Tokyoリージョンの場合はAD1のみのため、特に変更せずそのまま。
     ![image-20241016125157338.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/9a4c736c-be3c-6c80-1b98-753b87e0a987.png)
   - イメージとシェイプ
     - デスクトップ・イメージ：**手順1で準備したイメージを選択**します。
     - Use dedicated virtual machine host：今回は共有ホスト上に配置するので無効のまま。もし専用仮想マシンホスト（DVH）を利用する場合は有効化する。
     - Desktop virtual machine shape type：**フレキシブル**を選択。（注：「修正済」→Fixed Shapeの日本語訳。つまり固定シェイプのことです。）
     - デスクトップ・シェイプ：好きなシェイプで構いませんが、ここでは最新の **VM.Standard.E5.Flex** を選択。
     - Desktop system resource configuration：ここでは**カスタム**を選択。**これも新機能の一つです。OCPU数やメモリサイズを柔軟にカスタマイズできます。**
       - OCPUの数：ここでは 1 を入力。好きな数で構いません。
       - メモリー量（GB）：ここでは 4 を入力。好きな数で構いません。
       - ベースラインの使用率/OCPU：ここでは **100%** を選択。**これも新機能の一つで、バースト可能インスタンスを利用することも可能**です。ただし、12.5%や50%を選択してバースト可能にする場合は、「OCPUの数 x ベースライン使用率」 が 1以上になるように設定する必要があります。
     ![image-20241016125504616.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/be8cd1de-84bd-0416-1631-eb911fdc6213.png)

   - ストレージ
     - デスクトップ・ストレージの有効化：どちらでも構いませんがここでは有効化しています。
     - Desktop storage volume size (GB)：50GB以上の任意のサイズ。ここでは50にしています。
     - バックアップ・ポリシー：任意のバックアップポリシーを選択。ここではポリシーなし。
   - Desktop pool network
     - 仮想クラウド・ネットワーク：デスクトップ・プール内のインスタンスを配置するVCNを選択します。
     - サブネット：デスクトップ・プール内のインスタンスを配置するサブネットを選択します。**手順0で準備したプライベート・サブネットを選択します。**![image-20241016125621050.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ff95ea51-ab19-effa-8644-435c57ce33a5.png)


   - Private access network
     - プライベート・エンドポイント・アクセスのみ：**有効化**します。
     - 仮想クラウド・ネットワーク：プライベート・エンドポイントを配置するVCNを選択します。
     - サブネット：プライベート・エンドポイントを配置するサブネットを選択します。**手順0で準備したサブネットを選択します。**
     - IP address for private endpoint：IPアドレスを指定する場合は入力します。入力しなければサブネット内の空いているIPアドレスが自動で割り当てられます。今回は特に入力せず進みます。![image-20241016130631852.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/65610d56-a7f6-4bde-f0d0-6771feed66b3.png)

   - デバイス・アクセス・ポリシー：（今回はどれでもよいのでデフォルトのまま）

     - クリップボード・アクセス
     - 音声アクセス
     - ドライブ・マッピング・アクセス![image-20241016130910937.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ff77a350-f93a-9f1c-4900-fa7549721bee.png)

   - Desktop management policy：**新機能の一つである、デスクトップの切断や休止を設定できるのでこれも試してみます。**

     - Action on inactivity：**切断** を選択。
     - Grace period for inactivity (in minutes)：ここでは、**15** を入力。
     - Action on disconnect：**停止** を選択。
     - Grace period for disconnect (in minutes)：ここでは、**60**を入力。
       ![image-20241016131234795.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/8440433b-e2c1-184d-88d9-bf15c9e5b185.png)

3. すべて入力し終わったら、左下の**作成**ボタンをクリックしてデスクトップ・プールを作成します。

4. 作成中の進捗状況は**作業リクエスト**から確認できます。プライベート・アクセスを有効化している場合は作成完了まで約15分程度かかりました。
   ![image-20241016131421899.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/3f02a9bd-2ba1-10fb-f5fe-0d821eed41be.png)

5. ステータスがActiveになれば完成です！![image-20241016131507924.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/7cb431c3-5531-aafa-535e-c10c06487e78.png)




## 3. プライベート・アクセスを試してみる

1. まず自分のWindows PCから踏み台用のインスタンスにパブリックIPアドレスでRDP接続し、さらにそこから端末用のプライベート・インスタンスのプライベートIPアドレスに対してRDP接続します。それぞれ、Windowsインスタンスの初期パスワードを使用して、初回アクセス時に任意のパスワードに変更します。
   ![image-20241016131945053.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ab498a09-817c-1d92-78f1-1e4aba490c39.png)
2. このような形でリモートデスクトップ接続の画面の中にさらにリモートデスクトップ接続の画面がある状態になります。**ここからはプライベート・サブネット内のインスタンス上で作業していきます。どのデスクトップ上にいるか間違えないように注意します。**
   ![image-20241016132329577.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/c131d06e-575e-14a7-00f5-df409d530040.png)
3. 今回はデスクトップへのアクセス用のブラウザとしてWindows ServerにデフォルトでインストールされているMicrosoft Edgeを使っていきます。まずはEdgeの設定を修正します。

   - Edgeのメニューから「Settings」→「Cookies and site permissions」→「Pop-ups and redirects」をクリック![image-20241016132550622.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/57bd04b1-fc48-eb63-e011-dbe44ecc9e29.png)
   - **Blocked (recommended) のチェックを外してポップアップ・ブロックを無効化する**
     ![image-20241016132712619.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/0c0201b4-9565-b752-fa2a-13b8fe7641fd.png)
   - こちらはお好みで良いですが、このあとのセキュア・デスクトップのインターフェース選択画面を日本語表示したい場合はブラウザの言語設定を日本語に優先にしておきます。
     ![image-20241016132842203.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/3b1e14c0-d7b2-b794-b288-5475dca2a2c8.png)
4. ブラウザから以下のURLにアクセスします。
   https://published.desktops.ap-tokyo-1.oci.oraclecloud.com/client
5. サインイン画面に遷移するので、テナンシ名、ユーザ名、パスワードなどを入力してログインします。
   ![image-20241016133521741.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/7bddff28-0be1-0f18-0440-748ce14663c0.png)
6. 割り当て済みデスクトップが表示されます。先ほど作成したデスクトッププールの名前が表示されていますので**デスクトップ名をクリック**します。
   ![image-20241022103602172.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/466f379f-fa3b-6804-8a3b-22808b3f5713.png)
7. 「デスクトップを開いています」の表示が出るのでしばらく待ちます。初回起動時はインスタンスを起動する作業が必要なので起動までにしばらく時間がかかります。
   ![image-20241022103645792.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6d6aff03-dd2f-6c6f-2078-a9df45dc69e6.png)
8. 別のタブでデスクトップが起動してきます。
   ![image-20241022104041693.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ea18d1e5-bc29-b2a9-1d0a-410321d30964.png)
9. ブラウザからクリップボードの使用の警告が出ているので、許可します。
   ![image-20241022104226473.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b5acb9bc-89f0-6122-ec52-98521a4bf044.png)
5. Oracle Linuxのデスクトップに接続できました！
   ![image-20241022104415537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/a83f2ab4-40ca-5206-fdd1-774e15e13da0.png)

## 4. インターネット経由ではデスクトップに接続できないことを確認

1. 次に、同じOCIユーザを使って自分のWindows PCからインターネット経由で直接アクセスしてみます。セキュア・デスクトップのインターフェースにログインはできて、先ほどと同様に割当済みデスクトップまでは表示されます。デスクトップをクリックするとサーバーと通信できないというエラーになります。
   ![image-20241017111804179.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/a207ecf6-e1d4-c7a6-39fb-8c3fbbdf08f3.png)
2. 試しにリンクのURLをクリックしてみても、これはプライベートなエンドポイントを指しているのでこのサイトには通信ができないことがわかります。インターネット経由ではアクセスできないことが確認できました。
   ![image-20241017111945992.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/821d3f83-f437-1169-051f-991d77d361b3.png)


以上で、プライベート・エンドポイントを使えばプライベート・ネットワーク内からのみセキュア・デスクトップを利用可能なことが確認できました！