Azure Windows 10 VM に Azure AD ユーザーで RDP 接続したい (主に接続元のはなし)

Azure Windows 仮想マシンに Azure AD ユーザーでリモートデスクトップ接続できる機能自体は、2019 年末にプレビュー発表されたものです。

[参考：Azure AD authentication to Windows VMs in Azure now in public preview](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/azure-ad-authentication-to-windows-vms-in-azure-now-in-public/ba-p/827840?WT.mc_id=AZ-MVP-5003113)
[参考：Azure Active Directory 認証 (プレビュー) を使用して Azure 内の Windows 仮想マシンにサインインする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113)

あるところで、単体で Windows 10 の Azure 仮想マシンを利用したく、「Windows 10 Enterprise E3」ライセンスを調達しました。Azure Windows 10 仮想マシンで、「Windows 10 Enterprise E3」ライセンスを正常にアクティベートさせるためには、このライセンスを割り当てられている Azure AD ユーザーでサインインします。これにより、(ゲスト) OS が Windows 10 Pro から Windows 10 Enterprise へとエディションが自動的にステップアップします。
※ステップアップすることで、正常にライセンスがアクティベートできていることが確認できます。

[参考：Windows 10 サブスクリプションのライセンス認証](https://docs.microsoft.com/ja-jp/windows/deployment/windows-10-subscription-activation?WT.mc_id=AZ-MVP-5003113)

ということで、先に示したプレビュー機能を利用することになります。

接続先の Azure Windows 仮想マシンの作り方については、公式ドキュメントや先人のみなさまのブログをご参照いただければと思いますが、ここでは、接続元の端末に関することを中心にお話しできればと思います。


# 接続先の Azure Windows 10 VM を作成する

とは言っても、接続先の Azure Windows 10 仮想マシンの作成について軽く触れておきます。

接続先の Azure Windows 10 仮想マシンの作り方については、以下で示す公式ドキュメントの手順に従って作成してください。「Microsoft Windows 10 Pro」でバージョン 1809 以降のイメージから作りましょう。

[参考：Azure 内の Windows VM に対して Azure AD ログインを有効にする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113#enabling-azure-ad-login-in-for-windows-vm-in-azure)
[参考：仮想マシン ロールの割り当てを構成する](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113#configure-role-assignments-for-the-vm)

Azure ポータルで手順に従って作成する際、[管理] タブに [Azure AD 資格情報を使用してログインする (プレビュー)] 項目が見当たらないかもしれません (筆者の場合、つい最近いなくなってしまいました...)。その場合は、仮想マシン作成後に公式ドキュメントに書いてあるように、Azure Cloud Shell で「AADLoginForWindows」拡張機能をインストールしましょう。

```:AzureCLI(AADLoginForWindowsをインストールする)
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADLoginForWindows \
    --resource-group <仮想マシンが属しているリソース グループ> \
    --vm-name <仮想マシン>
```

また、既に存在する Windows 10 仮想マシンに Azure AD ユーザーでサインインしたい場合は、上記の拡張機能をインストールするほかに、Azure Cloud Shell で「システムマネージド ID を有効」にします。

```:AzureCLI(システム割り当てマネージドIDを有効にする)
az vm identity assign \
    -g <仮想マシンが属しているリソース グループ> \
    -n <仮想マシン>
```

[参考：既存の Azure VM 上でシステム割り当てマネージド ID を有効にする](https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/qs-configure-cli-windows-vm?WT.mc_id=AZ-MVP-5003113#enable-system-assigned-managed-identity-on-an-existing-azure-vm)

[参考：Azure Cloud Shell の概要](https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview?WT.mc_id=AZ-MVP-5003113)

Windows 10 仮想マシンを手順どおりに作成すると、Azure AD デバイスに「Azure AD Join」としてデバイス参加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/e9f68ae4-0418-637e-3491-a76cff8852dc.png)

加えて、[仮想マシン ロールの割り当てを構成する](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113#configure-role-assignments-for-the-vm)こともお忘れなく。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/97aee9a4-285f-a4f8-0b8f-77f238e983bc.png)


# Azure AD ユーザーで RDP 接続してみる

忘れないうちに、サインインする Azure AD ユーザーにライセンスを割り当てておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/e8fc5509-d05a-6ab5-f086-280436f599e0.png)

それではさっそく、Azure Windows 10 仮想マシンに Azure AD ユーザーで RDP 接続してみると「ログオンに失敗しました」とメッセージが出力されて接続できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/cf17b5bb-07e1-cced-190e-27ff636035cd.png)

Azure AD ユーザーでサインインするためには、接続元の PC に対しても準備が必要です。
これについては、公式ドキュメントに以下のように書かれています。

[参考：Azure AD 資格情報を使用して Windows VM にログインする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113#log-in-using-azure-ad-credentials-to-a-windows-vm)

> **重要**
> **Azure AD 参加済みの VM にリモート接続できるのは、VM として同じディレクトリに対して Azure AD 登録済み (最低限必要なビルドは 20H1)、Azure AD 参加済み、またはハイブリッド Azure AD 参加済みの Windows 10 PC からのみです。** さらに、Azure AD 資格情報を使用して RDP 接続するには、ユーザーは 2 つの Azure ロールのいずれか (仮想マシンの管理者ログイン、または仮想マシンのユーザー ログイン) に属している必要があります。 Azure AD 登録済みの Windows 10 PC を使用している場合は、資格情報を AzureAD\UPN 形式で入力する必要があります (例: AzureAD\john@contoso.com)。 現在、AADLoginForWindows 拡張機能で Azure Active Directory 認証を使用してログインするために Azure Bastion を使用することはできません。直接 RDP のみサポートされています。

※20H1・・・Windows 10 2020 May Update (バージョン 2004) 

要するに、接続先の仮想マシンが Azure AD Join している Azure AD に、接続元 PC も Azure AD Register (Windows 10 バージョン 2004 以降)、Azure AD Join または Hybrid Azure AD Join としてデバイス参加している必要があるということです。なので、この要件を満たしていない PC からリモートデスクトップ接続すると、先のように接続できない現象が発生します。

[参考：Azure AD 登録済みデバイス](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/concept-azure-ad-register?WT.mc_id=AZ-MVP-5003113)
[参考：Azure AD 参加済みデバイス](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/concept-azure-ad-join?WT.mc_id=AZ-MVP-5003113)
[参考：ハイブリッド Azure AD 参加済みデバイス](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/concept-azure-ad-join-hybrid?WT.mc_id=AZ-MVP-5003113)


## 手元の PC を Azure AD Join して RDP 接続してみる

手元にある Windows 10 PC のバージョンはまだ「1909」 でしたので、「Azure AD Join」としてデバイスを参加させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/85d71fb6-a97f-4cbe-96d1-3f339c8f72e6.png)

[設定] を開き、[アカウント] > [職場または学校にアクセスする] と順にクリックします。
次に、右側の [接続] をクリックして、「職場または学校アカウントのセットアップ」画面を開きます。そして、画面下部にある [このデバイスを Azure Active Directory に参加させる] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/33860745-03a9-144f-a6f4-f4912190d2be.png)

ウィザードに従って、資格情報を入力してサインインします。そうすると、PC が Azure AD デバイスに「Azure AD Join」としてデバイス参加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/619bafc3-6b8a-a18f-4cef-eb3d343b9b5e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/886b3e58-49a6-7352-78c2-5429ebeb6427.png)

これで問題なく Azure AD ユーザーでリモートデスクトップできますが、Windows Server AD ドメインに参加している PC が外部の Azure AD に「Azure AD Join」としてデバイス参加することはできないなどの課題があるかと思います。


## 【ここが本題】Azure 上に用意した踏み台 VM を経由して RDP 接続してみる

仮想マシンを踏み台にしてリモートデスクトップ接続するなら、以下の方法が考えられると思います。

- Azure 上に AD ドメイン環境を構築して踏み台の仮想マシンを「Hybrid Azure AD Join」としてデバイス参加させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/a429dd5b-654d-0f94-aade-f91540d2a396.png)

- 踏み台の仮想マシンを「Azure AD Join」としてデバイス参加させる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/741831ce-506d-9478-e789-da4d1f8a5a12.png)


### さらに対策は必要だった

ただし、踏み台の仮想マシンを「Hybrid Azure AD Join」または「Azure AD Join」としてデバイス参加しただけでは、操作対象の仮想マシンにリモートデスクトップ接続できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/cf17b5bb-07e1-cced-190e-27ff636035cd.png)

この解決方法は、以下のトラブルシューティングに記載されていました。

[参考：承認されていないクライアント](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows?WT.mc_id=AZ-MVP-5003113#unauthorized-client)

> さらに、Azure AD への参加が完了した後に **AADLoginForWindows 拡張機能がアンインストールされていないこと**を確認します。

ちょっと見落としがちな内容 (回りくどい言いまわし笑) でしたが、記載されているとおり踏み台にする仮想マシンに対しても**「AADLoginForWindows」拡張機能をインストールする**必要があります。あともうひとつ。踏み台の仮想マシンを「Azure AD Join」でデバイス参加する場合は、**「システムマネージド ID」も有効にする**必要があります。

- 踏み台 VM の拡張機能の確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/fb7029b4-7e04-52e6-3dbb-57a6cd1835eb.png)

- 踏み台 VM での Azure AD Join の確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/ea3af35b-6cd5-ea16-fe98-8577e0ffde05.png)

[参考：dsregcmd コマンドを使用したデバイスのトラブルシューティング](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/troubleshoot-device-dsregcmd?WT.mc_id=AZ-MVP-5003113)

これにより、問題なく操作対象の仮想マシンにAzure AD ユーザーでサインインでき、かつ「Windows 10 Pro」から「Windows 10 Enterprise」へとエディションが自動的にステップアップして、サインインした Azure AD ユーザーに割り当てたライセンスが正常にアクティベートしていることが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230264/c0ed52f6-f0c0-8ff9-6d88-e29d25e7ccb8.png)


# まとめ

Azure AD 資格情報を有効化する機能は、Azure 仮想マシンを Workgroup として運用しつつ Azure AD の資格情報を利用できることがひとつの利点です。
これは、Azure 仮想マシンを Azure AD などのドメインに参加することを強制せずとも、Azure AD 資格情報を使用できることから、より多くのユーザーの運用形態に添える可能性があることを考慮したものとなります。
上記の利点により、より効率的にライセンスのアクティベーションを実施することができます。