OCIセキュア・デスクトップ（OCI Secure Desktops）を使ってみる

リリースが待ち望まれていたOCIの新しいサービス「セキュア・デスクトップ」（OCI Secure Desktops）がリリースされました！

OCI上で仮想デスクトップ環境を迅速にデプロイできて、クライアント側のローカルにデータを持たせずセキュリティを向上させることができます。

![image-20230703115859410.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/0b9eafb2-998b-85e8-9d0e-075b8090f5b8.png)


ということで、さっそく試してみたいと思います！

実際に試す際には、手順の詳細は必ずマニュアルも読みましょう。（ただし残念ながら2023/7/3現在ではまだマニュアルは日本語翻訳されていません。）

https://docs.oracle.com/en-us/iaas/secure-desktops/home.htm


今回はOracle Linuxのデスクトップ環境を作って利用してみます。Windows OSの場合はライセンスの持ち込みが必要なので注意してください。



## 1. 事前設定

利用するための事前準備は、Getting Started の Setting Up the Tenancy の章に記載されているので、こちらに従って実施していきます。

https://docs.oracle.com/en-us/iaas/secure-desktops/setup-tenancy.htm

### 1. IAMポリシーの作成

今回はコンパートメント、ユーザ、グループはあらかじめ存在しているものを使うので、IAMポリシーの作成から実施していきます。

#### 1. サービス向けのポリシー

このあと作成していくセキュア・デスクトップの「デスクトップ・プール」はユーザのテナンシ内で動作します。セキュア・デスクトップを利用するためには、このデスクトップ・プールを指す動的グループに権限付与を行う必要があります。

**動的グループの作成例**（resource.typeを指定しなければ該当のコンパートメント内のすべてのリソースが対象となる。）

```
All {resource.type = 'desktoppool', resource.compartment.id = '<OCID-OracleLinux8Standard>'}
```

**ポリシー**

```
Allow dynamic-group <dynamic-group> to {DOMAIN_INSPECT} in tenancy 
Allow dynamic-group <dynamic-group> to inspect users in tenancy 
Allow dynamic-group <dynamic-group> to inspect compartments in tenancy
Allow dynamic-group <dynamic-group> to use tag-namespaces in tenancy
```

```
Allow dynamic-group <dynamic-group> to manage virtual-network-family in compartment <network-compartment>
Allow dynamic-group <dynamic-group> to read instance-images in compartment <desktop-compartment>
Allow dynamic-group <dynamic-group> to manage instance-family in compartment <desktop-compartment>
Allow dynamic-group <dynamic-group> to manage volume-family in compartment <desktop-compartment> 
Allow dynamic-group <dynamic-group> to manage dedicated-vm-hosts in compartment <desktop-compartment>
Allow dynamic-group <dynamic-group> to manage orm-family in compartment <desktop-compartment> 
Allow dynamic-group <dynamic-group> to {VNIC_CREATE, VNIC_DELETE} in compartment <desktop-compartment> 
Allow dynamic-group <dynamic-group> to manage instance-configurations in compartment <desktop-compartment>
```

#### 2. ユーザ向けのポリシー

セキュア・デスクトップの環境を作成したり管理する管理者向けのポリシーと、実際にデスクトップアクセスを行うエンドユーザ向けのポリシーを設定します。

**管理ユーザ向け**

（利用するコンパートメントのmanage all-resources権限を持っていればこれらはカバーされます。）

```
Allow group <desktop-administrators> to use virtual-network-family in compartment <networks-compartment>
Allow group <desktop-administrators> to manage desktop-pool-family in compartment <desktop-compartment>
Allow group <desktop-administrators> to read all-resources in compartment <desktop-compartment>
Allow group <desktop-administrators> to use virtual-network-family in compartment <networks-compartment>
Allow group <desktop-administrators> to use instance-images in compartment <images-compartment>
```

**デスクトップ利用ユーザ向け**

```
Allow group <desktop-users> to use published-desktop in compartment <desktop-compartment>
```



### 2. ネットワークの準備

デスクトップ・プール内に起動してくるコンピュート・インスタンスが配置されるVCNとサブネットを用意します。これはプライベート・サブネットでもパブリック・サブネットでも構いません。今回はあらかじめ持っているVCNとサブネットを使いますので、特に設定しません。

デスクトップ・プールを起動すると、自動的にセキュア・デスクトップが動作するために必要なセキュリティ・ルールが設定されたNSGが作成されます。それ以外のセキュリティ・ルールを追加したい場合は自作のNSGを設定することもできます。



### 3.ストレージ・ボリューム

あらかじめ作る必要はありません。各デスクトップ用のストレージを何GBのサイズにするかだけ決めておきましょう。もし自動バックアップを使いたい場合は独自のバックアップ・ポリシーを用意しておくことも可能です。



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

デスクトップを起動する際に利用するゴールデン・イメージを作成します。これは通常のコンピュート・サービスのカスタム・イメージと同じ仕組みを使います。ただし、セキュア・デスクトップで利用するカスタム・イメージには専用のタグを付与する必要があります。

サポートされるイメージは以下のドキュメントに記載がある通り。現時点ではOracle Linux 7, 8、Windows 10, 11で、今回はOracle Linux 8を使っていきます。

https://docs.oracle.com/en-us/iaas/secure-desktops/supported-images.htm



今回は上記ページで提供されているOracle提供のセキュア・デスクトップ用に事前構成済のイメージを利用するので、インポートするだけです。

1. メニューの **コンピュート → カスタム・イメージ** を開く
2. **「イメージのインポート」ボタン**をクリックしてウィザードに以下を入力し、左下の「イメージのインポート」をクリック。
   - 名前：任意の名前
   - オペレーティング・システム：Oracle Linux
   - オブジェクト・ストレージURLからインポート：下記ドキュメントページに記載されているURLを張り付け
     - https://docs.oracle.com/en-us/iaas/secure-desktops/supported-images.htm
   - イメージ・タイプ：OCI
![image-20230703184825884.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/cd8435de-00cb-577a-eda4-3a2cf569f0c1.png)


3. インポートにはしばらく時間がかかるので、カスタム・イメージが使用可能になるまで待ちます。
4. **カスタム・イメージの詳細画面 → その他のアクション → タグの追加** をクリックして、以下3つの**フリーフォーム・タグ**を追加します。これを行うことにより、このあとのデスクトップ・プール作成時にこのイメージを選択できるようになります。
   - oci:desktops:image_version：1
   - oci:desktops:image_os_type： Oracle Linux
   - oci:desktops:is_desktop_image： true
![image-20230703185521239.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/569d1185-6d68-ccbb-a604-56241960b738.png)



以上でイメージの準備は完了です。



## 3. デスクトップ・プールの作成

続いて、デスクトップ・プールを作っていきます。起動するデスクトップの定義情報を設定する部分です。

ユーザがセキュア・デスクトップにアクセスすると、デスクトップ・プールで指定した定義に従って、裏側で自動的にコンピュート・インスタンスが起動されます。自動的にインスタンスの起動、停止、削除なども行われます。各ユーザごとのデータはブロック・ボリューム上に格納されているので永続保持できるようになっています。
![image-20230703190407392.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/4625af5b-8dab-7f25-68df-2639f0a03d76.png)


さっそくデスクトップ・プールを作っていきます。

1. メニューの **コンピュート → セキュア・デスクトップ → デスクトップ・プール** を開きます。
![image-20230703190556685.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/5a59b44d-a733-9344-bffd-e3eabb6a5450.png)

2. **デスクトップ・プールの作成** をクリックして、以下の情報を入力していきます。

   - 名前：任意

   - 説明：任意

   - プール開始時間、プール停止時間（オプション）：今回は特に設定しませんでした。デスクトップ・プールの利用可能時間を管理者側で制御したい場合に設定できます。

   - 管理者連絡先詳細（オプション）：今回は特に設定しませんでした。デスクトップ・ユーザからの連絡を受ける連絡先です。

   - 管理者権限：今回は有効化にチェックを入れてみました。デフォルトは無効です。

   - プールサイズ

     - 最大サイズ：このデスクトップ・プールで起動できるデスクトップの最大値です。最小10～なので、今回は**10**に設定しました。
     - スタンバイ・サイズ：エンドユーザがアクセスした際に迅速に利用できるようにあらかじめスタンバイ状態にしておくデスクトップの数です。今回は **1** にしました。

   - 配置：選択肢はAD1のみです。

   - イメージとシェイプ

     - イメージ：先ほど作成したイメージを選択します。
     - シェイプ：起動したいインスタンスのシェイプを選択します。今回は **Flex Low** にしました。（あとで起動したコンピュート・インスタンスを確認したところ、VM.Standard.E4.Flexのインスタンスが起動していました。）

   - ストレージ

     - デスクトップ・ストレージの有効化：チェックを入れます
     - デスクトップ・ストレージ・ボリューム・サイズ：50 GB（デフォルト）
     - バックアップ・ポリシー：ポリシーなし（デフォルト）

   - ネットワーキング

     - VCN：配置したいVCNを選択します。
     - サブネット：配置したいサブネットを選択します。

   - デバイス・アクセス・ポリシー

     - クリップボード・アクセス：完全（デフォルト）
     - 音声アクセス：完全（デフォルト）
     - ドライブ・マッピング・アクセス：読取り/書込み（デフォルト）

   - 通常のスケジュール

     - 起動、停止：今回は特に指定しませんでした。無駄にデスクトップを起動したままにしておかないように、デスクトップを自動的に停止したり起動したい場合に利用できます。
![image-20230703203205011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/c1daaee1-3bc7-4237-f3af-6243e4bdeb3c.png)
![image-20230703203235007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/855aa166-f24f-e310-ed65-b50650e60200.png)

3. デスクトップ・プールのステータスがCREATINGとなっていて作成中なのでしばらく待ちます。
![image-20230703193028485.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/bca75b3d-5d71-48c9-2479-db6681245e58.png)


4. ステータスがACTIVEになりました。完成です。
![image-20230703193123085.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/1018a96a-e500-5d16-0ceb-11d649188c87.png)

5. 画面下のほうの **デスクトップ** のところを見ると、一つデスクトップを作成中となっていることがわかります。デスクトップのスタンバイを1に設定したので、スタンバイ用のデスクトップを1つ起動していることがわかります。
![image-20230703193153669.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/34a57344-1a5d-6fdb-d3f4-4c2d9c8ddc66.png)



デスクトップ・プールが完成したので、これで管理者側の構築作業は終了です。あとはエンドユーザとして実際にデスクトップにアクセスして見ましょう。



## 4. エンドユーザからのアクセス（ブラウザ利用）

デスクトップを利用するエンドユーザは、適切なIAMグループに所属しているユーザになります。ただし、通常のOCIコンソールを利用する必要はありません。クライアントアクセス用の以下のURLから利用できます。通常は管理者からこのURLをエンドユーザに通知してあげましょう。
（Tokyoリージョンの場合）
​	https://published.desktops.ap-tokyo-1.oci.oraclecloud.com/client

1. テナンシ名、ユーザ名、パスワードを入力してログイン
2. このようなクライアント用ページが開くので、割り当て済デスクトップのロードが終わるまで**しばらく待ちます**。
![image-20230703194015665.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/fc2e8a48-a7d5-ffdb-2feb-332a85087b09.png)

3. ロードが終わると先ほど作成したデスクトップ・プールの名前が表示され、ステータスが使用可能となりました。**デスクトップの名前をクリック**します。
![image-20230703194147270.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/7cc6e7d8-178b-cd08-0eb8-4e29a42fe02d.png)

4. このようなポップアップが開きますが、**何もせずに待ちます。**何かをクリックしたくなりますが、これは現在デスクトップを開いている最中であるという意味の通知なので、このポップアップ上で**さらになにかクリックする必要はありません**。（ポップアップは閉じることしかできません。閉じても問題はありません。）
![image-20230703194246239.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6eb419ab-6bd3-9337-0c45-5950b42d7c66.png)
ちなみにブラウザが英語設定だと"Opening desktop"なので、「デスクトップを開く」ではなく、「現在デスクトップを開いているところです。」というほうが正確です。
![image-20230703222556230.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/c353ff21-c423-fb57-2f67-fb38dcbd4f09.png)
初回起動時は新規デスクトップなので、デスクトップの **ステータスが使用可能**になったら再度名前のリンクをクリックしてデスクトップを開きます。
![image-20230703194246239.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6eb419ab-6bd3-9337-0c45-5950b42d7c66.png)

5. しばらく待つと、別タブでこのようなLoading画面が開いてきます。
![image-20230703194438399.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6e4e5170-7d82-7278-0898-7cca02275ecc.png)

6. さらにしばらく待つと、Oracle Linuxの画面が開いてきました！
![image-20230703194533867.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/6d68d4d7-c6ee-be5e-f216-ec7761c89055.png)

7. gnomeのwelcome画面になっているので、ウィザードに従って、言語設定、キーボード設定、などを行っていきます。
![image-20230703194654459.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/b781cdf6-75c3-d79d-a5d1-4a38da34b7f1.png)

8. デスクトップが利用可能になりました！
![image-20230703194750597.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/0ee88bb5-de6b-188d-7a6e-8624beefec6a.png)


## 4. エンドユーザからのアクセス（クライアント・ツール利用）

ブラウザではなくOracle Secure Global Desktop Clientというクライアント・ソフトウェアをインストールして利用することもできます。できることが少し異なります。

1. ブラウザではなくクライアント・アプリを利用する場合は、**プリファレンス** で 優先クライアントとして「**インストール済クライアント**」を選択する。
![image-20230703195022778.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/08b9c49c-89cf-b5ad-4674-337b30f059ea.png)


2. **ダウンロード** メニューからクライアント・ソフトウェアであるOracle Secure Global Desktop Clientをダウンロードしてインストール。
![image-20230703201009601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/25d2d369-38fb-e133-b395-8edff8772d9d.png)
![image-20230703201041943.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ca45564b-1af5-010d-b071-d96ebae4d302.png)

3. 優先クライアントをインストール済クライアントに設定している場合、割り当て済デスクトップをクリックすると自動的にインストールされたソフトウェアが起動し、クライアント・ツールからデスクトップが開かれる。
![image-20230704102645712.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/12246db6-94bc-86b1-1728-72c68d98bfcd.png)
![image-20230704102906749.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/59379cf5-458b-2525-7693-f1ab3271cc4e.png)
![image-20230703195338571.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/0d22ac9d-19ba-a45a-b201-54f1eaed0cc3.png)


   クライアント・ツールの場合、ブラウザ・アクセスとは異なり、オーディオ（in / out）が利用できたり、クライアントPCのドライブマッピングが可能なので、ローカルPC上のファイルをデスクトップ上のフォルダから開いたり、ドラッグアンドドロップでコピーしたりもしやすいです。（上記画面ショットは、ローカルPCのフォルダをデスクトップ上で開いている様子。)



以上です。皆様もぜひ試してみてください！