LoginSignup
1
0

More than 1 year has passed since last update.

EC2のUserDataで自動インストールしたNICE DCVサーバーでAdministratorが認証されない

Last updated at Posted at 2021-06-09

概要

EC2のUserDataで以下のコマンド実行により自動インストールしたNICE DCVサーバーでは、自動起動されるセッションのオーナーが ContainerAdministrator となるため Administrator でアクセスしようとしても認証されない。

msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/2021.1/Servers/nice-dcv-server-x64-Release-2021.1-10557.msi ADDLOCAL=ALL AUTOMATIC_SESSION_OWNER=Administrator /quiet /norestart /l*v dcv_install_msi.log

以下のように AUTOMATIC_SESSION_OWNER を明示的に指定して自動インストールさせることで Administrator で認証されるようになる。

msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/2021.1/Servers/nice-dcv-server-x64-Release-2021.1-10557.msi ADDLOCAL=ALL AUTOMATIC_SESSION_OWNER=Administrator /quiet /norestart /l*v dcv_install_msi.log

詳細

経緯

Windows Server 2019のEC2インスタンス作成時、CloudFormationテンプレートで以下のようなUserDataを指定して、NICE DCVの仮想ディスプレイドライバーとサーバーをインストールした。

<script>
msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/Drivers/nice-dcv-virtual-display-x64-Release-38.msi /quiet
msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/2021.1/Servers/nice-dcv-server-x64-Release-2021.1-10557.msi ADDLOCAL=ALL /quiet /norestart /l*v dcv_install_msi.log
</script>

またNICE DCVの動作要件に合わせて、セキュリティグループで 8443 ポートのインバウンド通信を許可し、次のようなステートメントを持つポリシーをロールにより付与している。

Effect: Allow
Action: s3:GetObject
Resource: !Sub arn:aws:s3:::dcv-license.${AWS::Region}*

CloudFormationによりデプロイされたEC2インスタンスにまずRDPで接続し、Administratorでサインインできること、DCV Serverサービスが立ち上がっていることを確認した。この後、NICE DCVクライアントでこのEC2インスタンスに接続し、Administratorでサインインしようとしたところ、以下のエラーが表示された。

connection authentication failed

問題の調査

NICE DCVサーバーは以下にログを出力している(「ログファイルの使用 - NICE DCV」参照)。

  • Windows … C:\ProgramData\NICE\dcv\log\server.log
  • Linux … /var/log/dcv/server.log

確認したところ、次のようなログが記録されていた。

2021-06-09 13:56:06,108929 [  2736:2812  ] WARN  frontend-handler - Cannot create connection from client 'xxx.xxx.xxx.xxx:xxxxx' to session 'console': User 'Administrator' not authorized on any channel

構築時に参考にしたページに次のような記述がある。

DCV Session Management Configurationではセッションを自動/手動での作成を選択できます。セッションが無いと接続が出来ないため、今回は自動で作成しました。
リモートでのゲーム開発にオススメ?EC2にNICE DCVを導入してみた | DevelopersIO

自動インストールの説明では次のように書かれており、この辺りは問題ないつもりでいた。

  • 自動コンソールセッションを作成します。
  • コンソールセッションの所有者を、インストールを実行するユーザーに設定します。

でもエラーメッセージと合わせて考えると、セッションがどんなふうになっているかが気になる。スタートメニューとか見ても管理画面らしきものがないなと思ってドキュメントを探したところ、NICE DCVサーバーでのセッション管理はコマンドラインのみらしい。

セッション情報を表示してみる。

C:\Users\Administrator> cd "C:\Program Files\NICE\DCV\Server\bin"
C:\Program Files\NICE\DCV\Server\bin> dcv list-sessions
Session: 'console' (owner:ContainerAdministrator type:console)

オーナーが ContainerAdministrator になっている…これは Administrator のことなのか、それともここが間違ってるのか?

切り分け

既存セッションを停止し、オーナーが Administrator のセッションを起動して試してみることにする。まず既存の console セッションの停止

C:\Program Files\NICE\DCV\Server\bin> dcv close-session console

次に新規セッションの開始

C:\Program Files\NICE\DCV\Server\bin> dcv create-session --name console --owner Administrator console

もう一度、セッション情報を表示。

c:\Program Files\NICE\DCV\Server\bin>dcv list-sessions
Session: 'console' (owner:Administrator type:console name:console)

オーナーが Administrator に変わった。やはり ContainerAdministrator は別物らしい。

この状態でNICE DCVクライアントで接続し Administrator でサインインを試みたところ、今度は成功した。

解決策

ここまでで、以下のことが確認できている。

  • オーナーが Administrator のセッションがないとサインインできない。
  • CloudFormationのUsetDataでNICE DCVの自動インストールを指定したEC2インスタンスデプロイでは、 ContainerAdministrator でセッションが作成されてしまう。
  • ひとまずのワークアラウンドとしては、セッションをオーナー Administrator で再作成すると、サインイン可能になる。

自動インストールでは、この自動起動されるセッションのオーナーをコマンドラインオプションで指定できる。

インストールコマンドに次のオプションを追加することで、デフォルトのアクションを上書きすることができます。
・(略)
・AUTOMATIC_SESSION_OWNER=owner_name - 自動コンソールセッションの別の所有者を指定します。
自動インストール - Windows での NICE DCV サーバのインストール - NICE DCV

NICE DCVサーバーのインストーラーの実行行に、以下のように AUTOMATIC_SESSION_OWNER の指定を追加することで、問題が解消される。

<script>
msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/Drivers/nice-dcv-virtual-display-x64-Release-38.msi /quiet
msiexec.exe /i https://d1uj6qtbmh3dt5.cloudfront.net/2021.1/Servers/nice-dcv-server-x64-Release-2021.1-10557.msi ADDLOCAL=ALL AUTOMATIC_SESSION_OWNER=Administrator /quiet /norestart /l*v dcv_install_msi.log
</script>

実際にこのUserDataでデプロイされたEC2インスタンスでは、そのまま administrator ユーザーで認証された。

参考

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0