OCI Secure Desktops の使用体験

本ブログは、[オラクル・クラウドの個人ブログ](https://qiita.com/letian/items/10152a4fec813c1b7d98)の1つです。

# 初めに
2023年6月27日、OCI Secure Desktopsという新サービスがリリースされました。ずっと前から期待していたサービスなので、さっそく体験してみました。

このサービスの特徴は、エンドユーザに安全なデスクトップ接続を提供できることです。特に多数のエンドユーザの同時接続という利用場面に向きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d4f7c3a2-97e6-fe2a-8d48-9e099d8c92ec.png)

__相当なサービス__
|クラウド・プロバイダー|OCI|AWS|Azure|
|:--|:---|:--|:---|
|サービス名|OCI Secure Desktops|Amazon Workspaces|Azure Virtual Desktop|

__サポート対象イメージ__ (2023/07/05時点)
Oracle Linux 7, 8
Windows 10, 11

これから、「Oracle Linux 8」を例に、設定と接続方法の詳細を紹介します。この記事の最後には感想がいくつかありますが、あくまで個人的な意見ですので、ご参考までに。

__ステップ__

- [1. 事前準備](#1-事前準備)
  - [1-1. 利用可否の確認](#1-1-利用可否の確認)
  - [1-2. IAMリソースの作成](#1-2-iamリソースの作成)
  - [1-3. ネットワーク・リソースの作成](#1-3-ネットワークリソースの作成)
  - [1-4. カスタム・イメージの作成](#1-4-カスタムイメージの作成)
  - [1-5. カスタム・イメージにタグを付ける](#1-5-カスタムイメージにタグを付ける)
- [2. セキュア・デスクトップ・プールの作成](#2-セキュアデスクトッププールの作成)
- [3. デスクトップへの接続](#3-デスクトップへの接続)
  - [3-1. セキュア・デスクトップ・インターフェースへのログイン](#3-1-セキュアデスクトップインターフェースへのログイン)
  - [3-2. Webブラウザを利用する場合](#3-2-webブラウザを利用する場合)
  - [3-3. Oracle Secure Global Desktop Clientを利用する場合](#3-3-oracle-secure-global-desktop-clientを利用する場合)
- [4. デスクトップの管理](#4-デスクトップの管理)
- [トラブル・シューティング](#トラブルシューティング)
  - [イメージが選べない](#イメージが選べない)
  - [プールの最大サイズの入力チェック](#プールの最大サイズの入力チェック)
  - [イメージ・シェイプのリソースが足りない](#イメージシェイプのリソースが足りない)
- [個人的な感想](#個人的な感想)

※、
STEP-<font color=blue>1、2と4</font>は、デスクトップの<strong>管理者</strong>のタスクです。
STEP-<font color=blue>3</font>は、デスクトップ<strong>利用者</strong>（エンドユーザ）のタスクです。

# 1. 事前準備
## 1-1. 利用可否の確認
今現在(2023年7月)では、、このサービスは<strong>東京リージョン</strong>で利用可能ですが、大阪リージョンではまだです。なお、デスクトップ・プールを作成する前、サービス制限の画面で、"Desktop Pool Count"の使用可能の数を確認しておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/33d59716-98b2-49c8-fb59-124109978ff1.png)

## 1-2. IAMリソースの作成
|リソース・タイプ|名前|コメント|
|:--|:--|:--|
|コンパートメント|Secure_Desktop|デスクトップ・プールの場所<br>(この例では、root/PoCの下に)|
|動的グループ|DesktopPool_DG||
|グループ|Desktop_Admins|デスクトップ管理者を入れる|
||Desktop_Users|デスクトップ利用者を入れる|
|ポリシー|DesktopPool_Service_Policy_1|サービス用(<strong>テナンシ</strong>・レベル)|
||DesktopPool_Service_Policy_2|サービス用(コンパートメント・レベル)|
||DesktopPool_Admin_Policy|管理者用(コンパートメント・レベル)|
||DesktopPool_User_Policy|利用者用(コンパートメント・レベル)|

__動的グループ__ (DesktopPool_DG) 
マッチング・ルール：
`All {resource.type = 'desktoppool', resource.compartment.id = '<Compartment_OCID>'}`

__ポリシー__ (<strong>root</strong>コンパートメントの下に)
名前：DesktopPool_Service_Policy_1
ステートメント：
```
Allow dynamic-group DesktopPool_DG to {DOMAIN_INSPECT} in tenancy 
Allow dynamic-group DesktopPool_DG to inspect users in tenancy 
Allow dynamic-group DesktopPool_DG to inspect compartments in tenancy
Allow dynamic-group DesktopPool_DG to use tag-namespaces in tenancy
```

名前：DesktopPool_Service_Policy_2 (roo/Pocの下に)
ステートメント：
```
Allow dynamic-group DesktopPool_DG to manage virtual-network-family in compartment Secure_Desktop

Allow dynamic-group DesktopPool_DG to read instance-images in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to manage instance-family in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to manage volume-family in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to manage dedicated-vm-hosts in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to manage orm-family in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to {VNIC_CREATE, VNIC_DELETE} in compartment Secure_Desktop
Allow dynamic-group DesktopPool_DG to manage instance-configurations in compartment Secure_Desktop
```

名前：DesktopPool_Admin_Policy  (root/Pocの下に)
```
Allow group Desktop_Admins to manage desktop-pool-family in compartment Secure_Desktop
Allow group Desktop_Admins to read all-resources in compartment Secure_Desktop
Allow group Desktop_Admins to use virtual-network-family in compartment Secure_Desktop
Allow group Desktop_Admins to use instance-images in compartment Secure_Desktop
```

名前：DesktopPool_User_Policy  (root/Pocの下に)
```
Allow group DesktopPool_User_Policy to use published-desktop in compartment Secure_Desktop
```

## 1-3. ネットワーク・リソースの作成
|リソース・タイプ|項目|値|コメント|
|:--|:--|:--|:--|
|VCN|CIDR|10.0.0.0/16||
|サブネット|CIDR|10.0.0.0/24|この例では<strong>プライベート</strong>を使っているが、パブリックでもよい|
|サービスGW|サービス|"<strong>All Region-ID Services in Oracle Service Network</strong>"|
|NAT GW|||デスクトップから、インターネットに接続したい時|
|ルート表<br>(サブネットに付ける)|ルール|ターゲット・タイプ: サービス・ゲートウェイ<br>宛先サービス: "<strong>All Region-ID Services in Oracle Service Network</strong>"||
||ルール|ターゲット・タイプ: NAT GW<br>宛先 CIDR: `0.0.0.0/0`||
|セキュリティ・リスト<br>(サブネットに付ける)|Ingress|設定しなくてもよい|エンドユーザのCIDRの許可は<strong>不要</strong>|
||Egress|0.0.0.0/0, TCP All|デスクトップから、インターネットに接続したい時|

## 1-4. カスタム・イメージの作成
この例では、オフィシャルの<strong>Oracle Linux 8</strong>のイメージを利用します。

次のように、イメージをインポートします。
- OS: `Oracle Linux`を選択
- オブジェクト・ストレージ URL: オフィシャルのイメージURLを貼り付ける（[ここ](https://docs.oracle.com/en-us/iaas/secure-desktops/supported-images.htm)からコピーできる）
- イメージ・タイプ: `OCI`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a1a4b0a2-1f58-eea7-3b11-49b47f47844a.png)

インポート完了までしばらくお待ちください（この例では、`Available`になるまで、十数分間かかりました）。完了後は、次のように確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a4ff23ae-0305-1b8f-c8ed-3868de5b3d68.png)

## 1-5. カスタム・イメージにタグを付ける
カスタム・イメージができたら、<strong>専用のタグ</strong>を付けてください。タグをつけないと、次のステップでプールを作成しようとする時、イメージが見つからないので、ご注意ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a31546bc-cd22-332d-1f76-168eddeec627.png)

タグは３個があります。
|タグ名|値|
|:--|:--|
|oci:desktops:is_desktop_image|true|
|oci:desktops:image_version|例:"1.0"|
|oci:desktops:image_os_type|"Oracle Linux" or "Windows"|

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/057d7691-a9e5-ff58-138d-2bbaa7850028.png", width="550">
追加後、次のように確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/03463693-0234-42cb-3941-a4baec8388be.png)

# 2. セキュア・デスクトップ・プールの作成
Computeの下に、「Secure Desktops」が追加されましたので、そこからお入りください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/fc16ef74-9e5c-941b-4e6c-a3a28a309d8f.png)

「デスクトップ・プールの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/4f4e3197-cd54-1833-51a8-493f538ce6d6.png)

入力項目は多くて、この例では必須のみを入力します。ほとんどはデフォルトのままにします。
- 名前と説明：適当に入力する。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b8970a9b-47df-a6b3-5233-1d86fe2915d8.png", width="400">
- プール・サイズの最大値は<strong>要注意</strong>です。上記のサービス制限により、一個のデスクトップ・プールにあるデスクトップの数は、<strong>10個</strong>以上は必要です。デフォルトの「1」のままで通らないです。
- スタンドバイ・サイズ：デフォルトのまま「<strong>1</strong>」にする。そうなると、デスクトップ・プールが作成された直後、一個のスタンドバイ・デスクトップが自動に作成されるという意味。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/88340746-5ea4-3f0a-5893-df0054b2bef3.png", width="600">
- イメージ：リストからインポートしたイメージを選択する（専用のタブをつけないと、リストに表示されない）。
- シェイプ：リストから各種のシェイプを選択できる。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/0aa936a0-80f7-5c5d-f35b-a6db64b804c0.png", width="600">
- VCNとサブネットを選択する（パブリックかプライベートのどちらでもOK）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/3c39fef3-df88-d00e-d67d-64ea110cc73c.png", width="600">
- 起動・停止のスケジュールも指定できる（この例では、スケジュールなしにする）。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/48d22321-f4cc-ae95-cbd5-ab71a6f65b78.png", width="600">

上記の入力内容で作成を開始します。完了までしばらくお待ちください（この例では、`ACTIVE`になるまで、数分間ぐらいかかりました）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a1a99bd8-749d-673c-4654-60776a4e0b6b.png)
デスクトップ・プールができたら、スタンドバイ・デスクトップの作成が自動に開始されます。作成後、次のように確認できます（Ownerはハイフン）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/7a2071da-cbb5-a4bb-eeda-ba5c15d7b381.png)
※、この時点で、新しいComputeインスタンス1個が一覧から見えます。

ここまで、管理者の設定作業は完了です。利用者から接続可能の状態になります。

# 3. デスクトップへの接続
## 3-1. セキュア・デスクトップ・インターフェースへのログイン
デスクトップの管理者がエンドユーザを利用者グループに入れたら、次のようなアクセスURLをエンドユーザに提供します。

東京リージョンの例：`https://published.desktops.ap-tokyo-1.oci.oraclecloud.com/client`

エンドユーザが、テナンシ、ユーザー名とパスワードを入力してログインします。
OCIコンソールのログイン画面に似ていますが、ログイン先が異なります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/83761357-45ba-49bf-a0b1-c3b5d7aee8b0.png", width="400">

インターフェースに入ったら、作成されたデスクトップが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/e1f2b186-04ce-5247-5f93-a5d8e62266b7.png)

デスクトップへの接続は、２つ方法があります。これから両方を紹介します。

## 3-2. Webブラウザを利用する場合
デフォルトは、Webブラウザを利用しますので、デスクトップのリンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/5afb82df-d4da-f023-cc1f-08ddd0fae35a.png)

デスクトップ（Computeインスタンス）を準備していますので、しばらくお待ちください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1289e6ac-58a9-a781-8f20-8c914c4ef180.png)

Webブラウザに１個新しいタブが開かれて、ロード処理の画面が表示されます。もう少しお待ちください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/89c25a73-0710-8bee-1dec-d05af5e1663a.png", width="450">

※、自分の検証結果により、<strong>デスクトップ・プール新規作成後、ブラウザで初回目</strong>の接続をした時、以下のメッセージが必ず表示されます。何かエラーがあったと思っていましたが、もう一回デスクトップのリンクをクリックしたら、無事に接続できました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/d522ad40-90c6-59ec-e299-bb1fbb273c0f.png", width="450">

接続後、次のようにOracle Linuxのデスクトップが表示されます。ここまで、接続はもう完了で通常に使えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/1b7e8c26-8ce0-4fa1-6b56-3771bc8776d7.png)

※、デスクトップ管理者へ
Computeインスタンスの一覧画面に、エンドユーザ・デスクトップ用のインスタンスが一個増えます。つまり、スタンドバイ用のインスタンスを含め、<strong>２個</strong>の新インスタンスが見えます。

## 3-3. Oracle Secure Global Desktop Clientを利用する場合
__クライアント・ツールのダウンロード__
左側の「Downloads」をクリックし、クライアントのOSにより選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/cf681df3-bbf9-70f0-a7bf-e8cc2cc8a848.png)
この例では、`Windows Client`を選択します。

__クライアント・ツールのインストール__
ダウンロードしたファイル名は、`sgdcwin.msi`です。ダブルクリックしてインストールを開始します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b6cd61f3-8bf3-62e0-509a-d062cbdb7899.png", width="400">

インストール完了後は以下となります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/2256e96d-f3e1-0c40-24ad-1c7a7756fb99.png", width="400">

※、ローカルのクライアントから、直接に起動することではなく、セキュア・デスクトップ・インターフェースに入って、<strong>ブラウザより「Oracle Secure Global Desktop Client」を起動</strong>しますので、ご注意ください。

__優先クライアントの設定__
左側の「Preferences」をクリックし、「<strong>インストール済クライアント</strong> (Installed Client)」を選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/0a3eb40e-a745-8b68-0e3d-3d8fad414b5e.png)

__クライアント・ツールの起動__
左上の「Desktops」に戻り、デスクトップのリンクをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c6f14e30-45fa-43e0-5199-0349150d0d96.png)

ローカルのデスクトップの左上、次の画面が表示されます。すぐ消えますので、特に動作しなくてもよいです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/7e45c8f8-7c0f-5712-a6e0-3ff1014b1e99.png", width="400">

次の画面が表示されたら、Yesで進んでください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/f6553e87-6ea2-b99c-d6fc-129792e5302a.png", width="300">

クライアント・ツールの場合、次のように共有対象の指定ができます。デフォルトは全部チックなしですが、必要に応じて選択してください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/6396d181-4b14-b06d-0e0a-2fa9b724451d.png", width="350">

接続後のイメージは以下のようです。外観はほぼ同じですが、Webブラウザと異なり、左側のメニューがないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/788157e9-8eca-d275-59ad-9919eb80351c.png)

※、あるエンドユーザが、Webブラウザで初回接続をした時、"The Application Disconnected"というメッセージが表示されます。もしこのユーザーの初回接続は、クライアント・ツールを使う場合、例のメッセージがないけど、<strong>ツールが反応しない</strong>という現象を確認しました。Webブラウザと同様で、<strong>２回目より</strong>は<strong>OK</strong>です。

# 4. デスクトップの管理
- デスクトップ管理者は、OCIコンソールを使って、デスクトップの起動・停止・編集・削除などの管理作業ができる。注意していただきたいのは、Computeインスタンスを直接に操作せず、<strong>デスクトップの画面</strong>から実施してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/a9757f07-8ab2-52e7-ab81-b573b106cb59.png)
ドキュメントの記載を抜粋： "Always use the Secure Desktops service to stop and delete desktops. Do not delete the underlying compute instance directly."

- セキュア・デスクトップ・プールを停止(INACTIVE)すると、その下の<strong>全デスクトップ</strong>（スタンドバイを含め）は停止になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/59ca77ee-bcf7-6ef9-0138-6096287b7494.png)

- 管理者がデスクトップの一覧から、デスクトップごとの管理（起動・停止・削除）ができる。次の画面は停止の例であり、停止後の状態は、"Inactive"となる。次回、エンドユーザがデスクトップに接続する時、デスクトップが自動に起動される（起動時間は必要で、クライアントからの接続時間は通常より少長くなる）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/599cee7f-62ee-2e05-9656-0a118720e4f0.png)
- スタンドバイのデスクトップ（Ownerはハイフンの行）を<strong>直接に削除しないで</strong>ください。削除しても自動に作成される。スタンドバイ・デスクトップの数を増減したい時、<strong>デスクトップ・プールの編集</strong>機能を利用してください。

# トラブル・シューティング
自分が経験したエラーと当時の対応方法です。ご参考まで。
## イメージが選べない
- 現象：セキュア・デスクトップ・プールの作成画面に、<strong>イメージが選べるない</strong>。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/8c7750da-5a43-30e7-e255-10b7e9b347a5.png", width="550">
可能な原因：カスタム・イメージにタグを付けていない、或いはタグの内容は不正。
対策：正しいタグを付ける（[STEP 1-5](#1-5-カスタムイメージにタグを付ける)をご参照ください）。

## プールの最大サイズの入力チェック
- 現象：セキュア・デスクトップ・プールを作成しようとする時、以下のエラーが起きた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/423a0e83-16d0-98d3-04e9-425971f6a2ec.png)
原因：サービス制限の[ドキュメント](https://docs.oracle.com/en-us/iaas/secure-desktops/overview-secure-desktops.htm#limits)により、一つのプールにあるデスクトップ数は、<strong>10個</strong>以上の設定は必要であるが、プールの作成入力画面に、<strong>デフォルト値は1</strong>となっている。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b9955655-7ed9-c531-4a31-d69ff3a1c7c3.png", width="600">
対策：プールの最大サーズ(Maximum size)を修正する(1→10)。

## イメージ・シェイプのリソースが足りない
- 現象：セキュア・デスクトップ・プールを作成しようとする時、以下のエラーが起きた。
エラーメッセージ：`Some fields have errors. Complete all required fields correctly, and then resubmit.`
可能な原因：選択したシェイプのリソースが一時的に足りない。
対策：他シェイプを選択するか、しばらくお待ってからもう一度作成する。

# 個人的な感想
- 待望のサービスがついに登場し、全体として期待に応えていると思いますが、細かい部分では改善の余地があります。
- 初回接続には少し時間がかかりますが（インスタンスの準備）、接続後は特にレイテンシもなくスムーズに使えます。リモートの感覚がありません。
- 価格面ではメリットがあります（サービス自体は安価で、Computeインスタンスとストレージは別料金です）。
- デスクトップの管理者にとって、事前準備とプールの作成作業はやや複雑で、この記事の半分を占めます。初めての方には設定に時間がかかるかもしれません。
- 現在サポートしているイメージの種類はまだ少ないため、今後の種類増加を期待しています。


以上です。

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)

__オフィシャル・リンク__
※、ドキュメントは、今現在(2023/7/5)英語版しかないで、日本版を読みたい方は少しお待ちください。

[Official Announcement](https://blogs.oracle.com/cloud-infrastructure/post/secure-desktops-cloud-native-virtualization) (英語)
[ドキュメント・ポータル](https://docs.oracle.com/en-us/iaas/secure-desktops/)
[Setting Up the Tenancy](https://docs.oracle.com/en-us/iaas/secure-desktops/setup-tenancy.htm)
[Supported Images](https://docs.oracle.com/en-us/iaas/secure-desktops/supported-images.htm) (Oracle Linux 7, 8のカスタム・イメージURL)
[Providing Access to Users](https://docs.oracle.com/en-us/iaas/secure-desktops/provide-user-access.htm) (エンドユーザのアクセス用URL)

__MOS Doc__
OCI Secure Desktops: Frequently Asked Questions (FAQ) ([Doc ID 2965012.1](https://support.oracle.com/knowledge/Oracle%20Cloud/2965012_1.html))