Windows の ログオンアカウントを使った RDP 接続 を詳解 

# はじめに
RDP の接続をする際に、毎回 アカウント と パスワードを入力 するのは手間ですね。
その際に対処策として有名な、**"資格情報の委任"** について取り上げました。

この仕掛けは、ネット上に多く投稿されていて、よく知られた仕組みですが、資格情報の委任には、いくつかの ポリシー が存在します。

これら、各ポリシーの違いを理解しておくことで、状況に応じて 適切に制御ができるようになると思いましたので、記事化しておこうと思いました。

**参考：Support Blog**
このような形で、設定方法 が紹介されています。

https://jpwinsup.github.io/blog/2023/06/15/RemoteDesktopService/RDS/RDS-Basic-Logon/#5-シングル-サインオン-SSO-での-RDP-接続

# 資格情報の委任に関する設定ポリシー の場所
今回言及しているポリシーの場所は、以下となります。（カッコ書きは英語版）
[コンピューターの構成] (Computer Configuration)
　+-[ポリシー] (Policies)
　　+-[管理用テンプレート] (Administrative Templates)
　　　+-[システム] (System)
　　　　+-[資格情報の委任] (Credentials Delegation)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7c604aa8-2b6f-48d5-8671-462d97cd48d0.png)

# 本記事で取り上げている内容とは？
本記事では、以下の２つのポリシーを扱います。
① **既定** の資格情報の委任を許可する
② NTLM のみのサーバー認証で **既定** の資格情報の委任を許可する

:::note info
① は、Kerberos 認証、② は、NTLM 認証 が対象になります。

**Kerberos 認証** は、主に ドメインに参加した PC が ホスト名を使って接続しようとした際に使われます。

ホスト名ではなく IP アドレスを使った接続では、Kerberos 認証は使われずに NTLM 認証にダウングレードされます。

**NTLM 認証** では、PC（非ドメイン環境のローカルアカウントも可）に ログオンしたアカウント・パスワードと同じものが、リモートホスト側で求められる アカウント・パスワード と合致すれば認証されます。

上記のどちらの場合にも適用させるために、① と ② のポリシーを有効化しています。
:::

次に、着目すべきは **"既定"** の部分です。
他に、**"新しい" ・ "保存された"** という文言が入った類似のポリシーもありますが、違いは どこで使われた資格情報なのか？ という点です。以下に一覧化してみました。

| # |資格情報の対象|
|:-:|:-:|
|既定|Windows へ最初にログオンする際に使用する資格情報|
|新しい|アプリケーションを実行するときに要求される資格情報|
|保存された|Windows 資格情報マネージャーを使用して保存または記録できる資格情報|

つまり、**"既定"** とは、「"OS に ログオン する際に使った ID と パスワード" と同じアカウント」を再利用して、RDP（厳密には CredSSP を利用するサービス）への接続に利用する という意味になります。

上記は、必要なことだけを 要約して説明しましたが、以下の記事では、その他のポリシーも含めて 全体を解説していますので、併せて参照ください。

https://qiita.com/carol0226/items/500f5c5a7ed51c699a55

# 注意点：本記事の手順が適用される条件とは？
本記事で紹介した手順によって、ログオン時のアカウント情報が使われるのですが、実は 条件があります。

その条件とは、"ログオン時に、**パスワード** を使っていた場合に限られる" ということです。

もし、**パスワード** 以外の方法として、Windows Hello for Business や、FIDO2 セキュリティキー などを使っていた場合は、SSO されずに、認証ウィンドウが開いてしまいます。

これらの認証を採用していて、ユーザー にパスワードが無い（パスワードレスな）環境の場合は、この記事の方法では SSO できないので、Remote Credential Gurard を使うことを検討してください。

https://qiita.com/carol0226/items/7ea3fe17a6327e18eb0a

# おまけ
本題とは違いますが、RDP 接続 を行う際にじゃまな存在として、認証に成功したあとに表示される、黄色い画面の存在があります。
<img width="200" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/5d798edf-6c8f-4fe1-bd3e-89cc810dae61.png">

この画面を出さないようにする方法は、以下に記事化していますので、併せて参照ください。

https://qiita.com/carol0226/items/45797cb7f6fa2409fde7

# 設定手順
では、実際に設定する手順の紹介です。
このポリシーは、ローカルグループポリシーで PC に１台ずつ構成することも、 Active Directory の GPO を使って ドメイン内の PC に設定を配布することもできますが、GPO で構成する際の手順を記載しています。

GPO は、ドメイン内の 全 PC に適用できますが、一部の PC にのみ適用させたい場合は、あらかじめ OU を作成し、OU 配下に コンピューターオブジェクト を配置しておいてください。

1．ドメインコントローラー の サーバーマネージャー で **ツール** メニューから **グループポリシーの管理** を開きます。
<img width="250" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3c15b416-61fa-47fb-67a2-57b54d6cbdeb.png">

2．**ドメイン全体** または **対象となる PC が含まれた OU** を右クリックし、**このドメインに GPO を作成し、このコンテナーにリンクする** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/00674bde-4189-7e5a-0709-d6f635e5da24.png)

3．任意の名称を付与して **OK** を押します。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/90454e07-408b-65f7-8304-1a8ed8667d9d.png">

4．作成された GPO を右クリックして **編集** を選択します。
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4b1c6cf2-a35b-f3cd-2158-f9d42854a7cb.png">

5．左ペインの **赤枠** で示された箇所を開いていきます。
※カッコ書きで、英語版 OS の場合の表記も記載しておきます。
[コンピューターの構成] (Computer Configuration)
　+-[ポリシー] (Policies)
　　+-[管理用テンプレート] (Administrative Templates)
　　　+-[システム] (System)
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e41501fb-e20c-53c2-69c1-22666f9b28b4.png">

6．[資格情報の委任] (Credentials Delegation) をクリックします。
右ペインに表示された ポリシー の中から、２つのポリシー について、１つずつダブルクリックして 設定 をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c96f9147-d7d8-1c72-99e3-f80a890d31e5.png)

7．**既定の資格情報の委任を許可する** の画面が開いたら、以下で示された **番号** の順に作業を行います。
① 設定を **有効** にします。
② **表示** のボタンを押すと、ウィンドウが開きます。
③ **OK** を押します。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/df061931-74fd-0a5a-d46c-9881822193a8.png">
② を押した際に表示された 以下の ウィンドウでは、TERMSRV/* と入力して **OK** を押します。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f2b5fab3-7d49-27bf-534b-c52252052d2b.png">

:::note info
**参考：委任する対象サーバーの指定方法**
一覧に追加する内容として、以下のような意味があるため、目的の内容に合わせて カスタマイズできます。

**TERMSRV/***
→　すべてのコンピューターで動作しているリモート デスクトップ セッション ホスト。

**TERMSRV/host.humanresources.fabrikam.com**
→　ズバリ host.humanresources.fabrikam.com という特定の１台で動作しているリモート デスクトップ セッション ホスト

**TERMSRV/*.humanresources.fabrikam.com**
→　*.humanresources.fabrikam.com 内のすべてのコンピューターで動作しているリモート デスクトップ セッション ホスト、つまり **abc**.humanresources.fabrikam.com でもよいし、**xyz**.humanresources.fabrikam.com でも良い。
:::

8．**NTLM のみのサーバー認証で既定の資格情報の委任を許可する** の画面が開いたら、以下で示された **番号** の順に作業を行います。
① 設定を **有効** にします。
② **表示** のボタンを押すと、ウィンドウが開きますが、前回と同様に操作します。
③ **OK** を押します。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2041da4d-3334-e6a2-0137-9ec21327ad72.png">

9．最後に 以下のような表示になっていれば **OK** です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/32d30dd9-8f7e-b214-6ac1-41bf429115db.png)

10．ポリシーの設定が終わったら、ドメインコントローラー上で、**gpupdate /force** を実行します。
そのあと、ドメインに参加した PC 上でも 同様に **gpupdate /force** を実行することで PC へ設定が反映されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/559635c4-af96-0d5a-117f-f7a86eae4480.png)

# 動作確認
資格情報の委任 を設定する前の デフォルトの際の動作イメージは、以下の記事に記載してあります。
この内容と、後述する 資格情報の委任 を設定したあとの動作を比較してみてください。

https://qiita.com/carol0226/items/290863f49e3bf7723fe8

## 資格情報の委任 を構成した際の動作イメージ
リモートデスクトップ接続（mstsc.exe）を起動した際は、以下のようになります。
赤線の通り、ログオン情報が RDP にも利用される旨のメッセージになっています。
**コンピューター名：** 接続先のホストを入力（最後に接続した宛先と、過去に接続した履歴が残っています）
**ユーザー名：** クライアントにログオンする際に使ったアカウントが表示（グレーアウトして変更できません）
**メッセージ：** Windows ログオン資格情報は、接続に使用されます。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/49b1140b-31a4-45cf-a296-084585a4210d.png">

上記の状態で、**接続** を行えば 認証ウィンドウが開くことなく、RDP 接続 が行われます。
※もし、接続先のクライアント か ホストが ドメインに参加していないなどの理由で、アカウントが合致しなければ、認証ウィンドウは表示されます。

## ログオン時とは別のアカウントでログオンさせたい場合
**資格情報を常に確認する** にチェックを入れます。
すると、ユーザー名 欄が、クリアされて 任意のアカウントを入力することが出来るようになります。
**メッセージ：** 接続時には資格情報を要求されます。現在のユーザーの資格情報を使用するには、次のチェックボックスをオフにしてください。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9b08299d-2d74-4364-8012-252c221d7d93.png">

:::note info
上記のように、OS の ログオン情報 とは違うアカウントを指定して RDP 接続ができるのが標準の動作となりますが、セキュリティ上、OS のログオンアカウント のみに縛りたい・・という場合があると思います。

その際には、以下の記事で紹介している **Remote Credential Guard** の利用を検討してください。

記事内で説明されている、リモートクライアント側 **② GPO で一律 Remote Credential Guard を有効化する場合** の設定を行うことで制限を掛けられます。

**RDP で SSO を実現！ Remote Credential Guard とは？**
https://qiita.com/carol0226/items/7ea3fe17a6327e18eb0a

Remote Credential Guard を使うと、**資格情報を常に確認する** の欄が グレーアウトされて、アカウントの **変更** や、**保存** が出来なくなります。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/74dd5c65-07bc-4605-8123-f583ab5325ab.png">