Azure Active Directory 認証を使用して Azure 内の Windows 仮想マシンにサインインする際の手順＆躓いたこと

既存の Azure VM（Windows Server 2019）に対して、Azure AD 認証を使って RDP 接続できるようにした際の備忘録です。
Azure AD ログイン VM 拡張機能（ADDLoginForWindows）を使用した方法となります。

#前提条件
- クライアントPC が Windows 10 Professional または Windows 10 Enterprise であること
- 接続先の仮想マシンが Windows Server 2019 または Windows 10 1809 以降であること
- ポート443を経由した次のエンドポイントへの発信アクセスが許可されていること
  - https\://enterpriseregistration.windows.net  
  - https\://login.microsoftonline.com  
  - https\://device.login.microsoftonline.com  
  - https\://pas.windows.net

＜参考＞
　[Azure Active Directory 認証 (プレビュー) を使用して Azure 内の Windows 仮想マシンにサインインする - 必要条件](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#requirements)

#手順
##クライアントPCでの作業
###１．Azure AD Join（Azure AD 参加）
① [設定]-[アカウント]-[職場または学校にアクセスする]を選択
② [＋接続]をクリック
③ Azure AD のユーザー/パスワードを入力

###２．ローカルセキュリティポリシーの設定
① [管理ツール]-[ローカルセキュリティポリシー]を開く
② [ローカルポリシー]-[セキュリティオプション]を選択し、以下を __有効__ にする
　・ネットワーク セキュリティ: オンライン ID を使用するためのこのコンピューターへの PKU2U 認証要求を許可する

＜参考＞
　[ネットワーク セキュリティ: オンライン ID を使用するためのこのコンピューターへの PKU2U 認証要求を許可する](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/security-policy-settings/network-security-allow-pku2u-authentication-requests-to-this-computer-to-use-online-identities)

##Azureポータルでの作業
###１．マネージドIDの割り当て
① Azureポータルにログイン
② [Virtual Machines] から接続先の仮想マシンを選択
③ [設定]-[ID]-[システム割り当て済み]を選択
④ [状態]を __オン__ に変更し、[保存]を選択

###２．Azure AD ログイン VM 拡張機能のインストール
① Azureポータルにログイン
② Cloud Shell を起動し、シェルを __Bash__ に切り替える
③ 以下のコマンドを実行

```
az vm extension set \
    --publisher Microsoft.Azure.ActiveDirectory \
    --name AADLoginForWindows \
    --resource-group 【接続先の仮想マシンのリソースグループ名】 \
    --vm-name【接続先の仮想マシン名】
```

<details><summary>※戻り値の例</summary><div>

```
{- Finished ..
  "autoUpgradeMinorVersion": true,
  "enableAutomaticUpgrade": null,
  "forceUpdateTag": null,
  "id": "/subscriptions/【サブスクリプションID】/resourceGroups/【リソースグループ名】/providers/Microsoft.Compute/virtualMachines/【VM名】/extensions/AADLoginForWindows",
  "instanceView": null,
  "location": "【ロケーション名】",
  "name": "AADLoginForWindows",
  "protectedSettings": null,
  "provisioningState": "Succeeded",
  "publisher": "Microsoft.Azure.ActiveDirectory",
  "resourceGroup": "【リソースグループ名】",
  "settings": null,
  "tags": null,
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "typeHandlerVersion": "1.0",
  "typePropertiesType": "AADLoginForWindows"
}
```

</div></details>

 ＜参考＞
　[Azure Cloud Shell のエクスペリエンスを使用して Azure AD ログインを有効にする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#using-the-azure-cloud-shell-experience-to-enable-azure-ad-login)

####３．Azureロールの割り当て
① Azureポータルにログイン
② [Virtual Machines] から接続先の仮想マシンを選択
③ [アクセス制御 (IAM)]を選択
④ 仮想マシンのログインに使用する Azure AD ユーザー に対し、以下のいづれかのロールを割り当てる

|ロールの名称|説明|
|:--|:--|
|仮想マシンの管理者ログイン|管理者特権を持つユーザーとしてログインする|
|仮想マシンのユーザー ログイン|一般ユーザーとしてログインする|

＜参考＞
　[仮想マシン ロールの割り当てを構成する](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#configure-role-assignments-for-the-vm)


##接続先の仮想マシンでの作業
###１．ローカルセキュリティポリシーの設定
① [管理ツール]-[ローカルセキュリティポリシー]を開く
② [ローカルポリシー]-[セキュリティオプション]を選択し、以下を __有効__ にする
　・ネットワーク セキュリティ: オンライン ID を使用するためのこのコンピューターへの PKU2U 認証要求を許可する

##ログイン方法
通常のリモートデスクトップ接続と同じ。
ユーザーは Azure AD ユーザー（`xxxx@xxxx.onmicrosoft.com`の形式）で入力する。
ログインできない場合は `AzureAD\xxxx@xxxx.onmicrosoft.com` を試してみる。

例）
　`AzureAD\abcd@efgh.onmicrosoft.com`

#躓いたこと＆解決方法

###その１．クライアントPC で Azure AD 参加 に失敗する
→ Windows 10 Home では Azure AD 参加 が出来ないっぽいです。
　Windows 10 Professional にアップグレードしましょう。

###その２．ログインに失敗する（お使いの資格情報は機能しませんでした）
→ クライアントPC が Azure AD 参加 されていないようです。
　Azure AD 参加 させましょう。

###その３．ログインに失敗する（使用しようとしているサインイン方法は許可されていません）
→ Auzre AD ユーザーで多要素認証（MFA）が有効化されてます。
　Windows Hellow for Business などの強力な認証方法を使用するか、MFAをバイパスする方法を検討してください。
　MFAをバイパスする方法は以下があります。
　　・Azure AD ユーザーの MFA を無効化する
　　・条件付きアクセスでAzure VM への接続の際は MFA を要求しないよう構成する

　なお、「セキュリティの既定値群」が __有効__ かつ、Azure AD ユーザー に Azure AD の管理者のロールが割り当てられている場合、MFAが強制される場合があります。これを回避する場合は、「セキュリティの既定値群」を __無効__ にする、もしくは Azure AD ユーザー から管理者のロールを削除してください。

＜参考＞
[セキュリティの既定値群とは](https://docs.microsoft.com/ja-jp/azure/active-directory/fundamentals/concept-fundamentals-security-defaults)

###その４．ログインに失敗する（このデバイスを使用できないようにアカウントが構成されています）
→ Azure AD ユーザー に Azureロール が割り当てられてないです。
　「__仮想マシンの管理者ログイン__」または「__仮想マシンのユーザー ログイン__」を割り当ててください。

###その５．ログインに失敗する（Azure Bastion を使用）
→ 2021/02 現在、Auzre Bastion 経由 ので Azure Active Directory 認証 はサポートされてないみたいです。。。

#参考
[Azure Active Directory 認証 (プレビュー) を使用して Azure 内の Windows 仮想マシンにサインインする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows)
　[・必要条件](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#requirements)
　[・Azure Cloud Shell のエクスペリエンスを使用して Azure AD ログインを有効にする](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#using-the-azure-cloud-shell-experience-to-enable-azure-ad-login)
　[・仮想マシン ロールの割り当てを構成する](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#troubleshoot)
　[・トラブルシューティング](https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows#troubleshoot)
[ネットワーク セキュリティ: オンライン ID を使用するためのこのコンピューターへの PKU2U 認証要求を許可する](https://docs.microsoft.com/ja-jp/windows/security/threat-protection/security-policy-settings/network-security-allow-pku2u-authentication-requests-to-this-computer-to-use-online-identities)
[セキュリティの既定値群とは](https://docs.microsoft.com/ja-jp/azure/active-directory/fundamentals/concept-fundamentals-security-defaults)