Azure Stack HCI 23H2運用におけるAzureロールの検討

# 本記事について
本記事では先日GAしたAzure Stack HCI 23H2に関連するAzureロール（RBAC）についての情報をまとめます。
[Microsoft社Azure Stack Blog | Azure Stack HCI version 23H2 is generally available](https://techcommunity.microsoft.com/t5/azure-stack-blog/azure-stack-hci-version-23h2-is-generally-available/ba-p/4046110)

Azure Stack HCI 23H2ではクラウドベースの導入・管理をおこなう機能が提供され、これによってクラスターの構築やアップデート、クラスター上の仮想マシンをAzureポータルから作成・削除、起動・停止できるようになりました。
これに合わせていくつかのAzure Stack HCI管理用の組み込みロールが提供されています。

新しく提供された組み込みロールの中身を確認して、**Azure Satck HCIの運用におけるAzureロールの設計**について考えてみたいと思います。

:::note info
Azure Stack HCI 23H2は2024/2/18現在、既知の制限事項や、不具合が見られるようです。
本記事ではGAバージョン（10.2311.2.7）の環境での動作確認をベースに内容を記載していますが、すべてのクラスター環境で同様の動作をするかは保証できず、自身の環境での動作確認もおこなわれることを推奨します。
:::
:::note info
Azure Stack HCIの操作においては日本語版のAzureポータルでは一部の操作や表記に問題が出ることがみられたため、本記事では英語版での表記を元に組み込みロール等を表記しています。
日本語版Azureポータルの表記と異なりますのでご注意ください。
:::

# Azure Stack HCI運用に関連し得る組み込みロール
## Azure Stack HCI 23H2関連のAzureロール
Azure Stack HCIに関連しそうな組み込みロールを調べると以下の4つが見つかります。
その内No.1 - 3までのロールは以下Microsoft Learnのドキュメントに概要がまとめられています。
ドキュメントのページに"Preview"の記載が残っているため、組み込みロール自体の提供はまだプレビュー段階かもしれません。
ドキュメントの調査と動作確認をおこなった中で気になった点を補足します。
[Use Role-based Access Control to manage Azure Stack HCI Virtual Machines](https://learn.microsoft.com/en-us/azure-stack/hci/manage/assign-vm-rbac-roles)

|No.|ロール名|概要|
|:--|:--|:--|
|1|Azure Stack HCI Administrator|Azure Stack HCIクラスター関連リソースに関する管理者権限|
|2|Azure Stack HCI VM Contributor|Azure Stack HCI上に構築したArc VMに関する管理者権限|
|3|Azure Stack HCI VM Reader|Azure Stack HCI上に構築したArc VMに関する閲覧者権限（と思われる）※後述|
|4|Azure Stack HCI Device Management Role|クラスターのみが閲覧・操作できる権限|

### （補足）Azure Stack HCI Administratorロール
Azure Stack HCI関連リソースに関するほぼすべての管理者権限が含まれます。
加えて、**以下のロールの付与・削除権限もあります。**
ここまでにリストした4つのロール以外も含まれることから、Azure Stack HCIの管理で必要と考えられるロールについてのMicrosoftの考えが伺えるように思います。

"Azure Connected Machine"から始まる3つのロールはArc-enabled serversに関するロール、"Azure Resource Bridge Deployment Role"はAzure Arcリソースブリッジのデプロイに関するロール、"Key Vault Secrets User"はKey Vaultのシークレットを読み取ることができるロールです。
23H2ではシークレットの管理のためデプロイ時にKey Vaultを作成しており利用します。
- Azure Connected Machine Resource Manager
- Azure Connected Machine Resource Administrator
- Azure Connected Machine Onboarding
- Azure Stack HCI VM Contributor
- Azure Stack HCI VM Reader
- Azure Stack HCI Device Management Role
- Azure Resource Bridge Deployment Role
- Key Vault Secrets User

### （補足）Azure Stack HCI VM Readerロール
"Microsoft.AzureStackHCI"リソースプロバイダーの"VirtualMachines"等に対するRead権限があります。一方で、Azure Arc-enabled serversリソースである"Microsoft.HybridCompute"リソースプロバイダーの"machines"リソースに対するRead権限がありません。
**手元の23H2クラスターでAzureポータルから構築したArc VMのリソースを見ると、"Microsoft.HybridCompute/machines"となっています。そのため、本ロールだけではAzure Stack HCI上で構築したArc VMのリソースを閲覧することができませんでした。**

私の手元のクラスターの問題、Arc VMリソースの問題等の可能性もありますが、組み込みロールの紹介ページにPreviewとあることからもしかしたらロールの状態が意図しないものとなっている可能性も考えられますので、使用する際には必要な動作が可能か確認しておいた方がよさそうです。

### （補足）Azure Stack HCI Device Management Roleロール
こちらのロールは先述のドキュメントには記載がありませんが、クラスターリソースの管理権限がまとめられています。ホストノードのリソースは"Microsoft.HybridCompute/machines"として作成されているため、この権限のみではホストノードを閲覧・操作することはできません。
こちらはARMテンプレートを利用してAzure Satck HCIクラスターをデプロイするときに使用することが推奨されているロールのため、運用で特定の用途にて利用するロールではないと考えられます。
[Deploy via ARM template](https://learn.microsoft.com/en-us/azure-stack/hci/deploy/deployment-azure-resource-manager-template)

## Windows Admin Center in Azure関連のAzureロール
Azure Stack HCI 23H2の管理はAzureポータルから多くの操作がおこなえるようになりましたが、引き続きWindows Admin Centerでの操作にも対応しています。
Windows Admin Centerの利用方法は様々なパターンがあり、その点については本記事では言及しませんが、AzureポータルにてWindows Admin Centerを利用する機能もプレビューで提供されています（22H2時代からあり）。

このAzureポータルから利用する仕組みであるWindows Admin Center in Azureを利用するためには上記ロールとは別に"**Windows Admin Center Administrator Login**"ロールが必要になります。

# Azure Stack HCI 23H2運用におけるAzureロールの検討
まず、運用における担当者の役割について、今回は以下の3つを考えてみたいと思います。
役割と主な作業を列挙します。
1. Azure Stack HCIの運用管理をおこなうインフラ管理者
   - Azure Stack HCIの監視
   - Azure Stack HCIの更新
   - Azure Stack HCI上のVM構築のためのリソース（論理ネットワーク等）管理
2. Azure Stack HCI上にVMを構築して利用する開発者
   - Azure Stack HCI上のVM構築・削除
3. Azure Stack HCI上のVMを利用するVM利用者
   - Azure Stack HCI上のVMの起動・停止

これら3つの役割に対して組み込みロールのマッピングを考えてみます。
|No.|役割|Azureロール候補|備考|
|:--|:--|:--|:--|
|1|インフラ管理者|- Azure Stack HCI Administrator<br>- Windows Admin Center Administrator Login<br>- Monitoring Contributor|- Windows Admin Center Administrator LoginはWAC in Azureを利用する場合のみ<br>- Monitoring Contributorはクラスターの監視機能を利用するため<br>※障害時のクラスターの再登録、再構築等を考慮する場合はクラスター構築に必要なロールも検討|
|2|開発者|- Azure Stack HCI VM Contributor||
|3|VM利用者|- カスタムロールが必要||

3.VM利用者についてはAzureポータルからVMの起動・停止のみができる権限が望ましいのですが、現状これに該当するロールはありません。
これはAzure上の通常のVMも同様ですので、同様の考えでカスタムロールを作る必要がありそうです。
以下のような権限を定義したカスタムロールを作成することでAzure Stack HCI上のVMの起動・停止を許可することができました。
```
"permissions": [
    {
        "actions": [
            "Microsoft.AzureStackHCI/virtualMachineInstances/Start/action",
            "Microsoft.AzureStackHCI/virtualMachineInstances/Stop/action",
            "Microsoft.AzureStackHCI/virtualMachineInstances/Restart/action",
            "Microsoft.AzureStackHCI/virtualMachineInstances/Read",
            "Microsoft.HybridCompute/machines/read"
        ],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
    }
```
## まとめ
Azureポータルからの管理に移行しつつあるAzure Stack HCIについて、運用を見据えたAzureロールの現状を確認してみました。
オンプレWindows Admin Centerでの管理についても権限制御はできましたが、Azureを利用するユーザーにとってはAzureの権限管理にまとめられるのはうれしいところです。
まだGAしたばかりでこれから変化もあるかと思いますので引き続きAzure Stack HCI 23H2に注目していきましょう。