掲載内容は個人の見解であり、所属する企業を代表するものではありません.
Microsoft Dev Box もその他の PaaS サービスと同様に 診断ログ を構成することで、ユーザーによるデータプレーン操作のログが取得可能です。 データプレーンというとわかりにくいですが、要は Dev Box (仮想マシン)の作成・削除や起動・停止といったログです。 だれが、いつ、どんな操作を行ったかといった情報は、管理者としては把握しておきたいですよね。
ただ実際にこれ以外にも代表的な監査視点としては以下のようなものがあるのではないでしょうか。
これらの情報の取得方法が記載された公式ドキュメントが現状見当たらないのですが、いろいろ触っていたら分かってきたことがあるのでまとめておきます。 いずれこういった情報も出そろってくるのではないかと思いますが、取り急ぎ。
上記の診断ログのドキュメントですと DevCenterDiagnosticLogs
というテーブルに関して記述があり、そのスキーマの説明は下記に記載があります。
これらを見ると上記の情報が割と取れるんじゃないかと期待が膨らみますが、実際にクエリをかけてみるとちょっと残念な気持ちです。
/
以降を見ると Dev Box の名前や操作内容が分かる(分かりにくい)リファレンスの他のページや Log Analytics Workspace をよく見ると、もう少し良さそうなテーブルがあることが分かります。
ちょっとこちらも見てみましょう。
改めて各 Dev Box 仮想マシン単位のライフサイクルを考えると、全体として作成・削除
があり、その間に起動・停止
が複数回繰り替えさえるのが一般的だと思います。
この辺りの情報取得は DevCenterResourceOperationLogs
テーブルの方が使い勝手が良さそうでした。
ただ対象となる Dev Box VM の名前、Dev Center プロジェクトの名前、ユーザー情報は SubResourceId
をパースしてやらないと分からなさそうです。
DevCenterResourceOperationLogs
| where OperationName startswith "DevBox"
| parse SubResourceId with '/tenants/' entra_id '/devcenters/' devcenter '/projects/' project_name '/users/' user '/devboxes/' devbox_name
| project TimeGenerated, OperationName, Message, devcenter, project_name, user, devbox_name
| order by TimeGenerated desc
ここで出ている user は Microsoft Entra ID で管理されたユーザーのオブジェクト ID です。 人間に易しい名前ではないのが残念ですが、下記のコマンドで確認できます。
az ad user show --id guid-of-user-objectid
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [],
"displayName": "Developer 01",
"givenName": "01",
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"jobTitle": null,
"mail": "userName@mail.example.com",
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": "Developer",
"userPrincipalName": "userName@example.com"
}
あるいは Azure ポータルの Microsoft Entra ID 管理画面で、ユーザーのオブジェクト ID を検索しても確認できます。
上記のログから各種イベントは把握できるのですが、課金に直結する利用時間(起動~停止)に関しては工夫が必要になりますし、そもそも DevBox のサイズが分かりません(Dev Box 定義やプールの情報が分からないため)。
そうすると DevCenterBillingEventLogs
テーブルの名前が魅力的ですので、こちらにもクエリをかけてみましょう。
ざっと見た感じだと以下の基準で集計できそうです。
UsageResourceName
が Dev Box の名前 になっているUsageType
は Compute
と Storage
で分類できるStartTime
から EndTime
の 1 時間間隔でレコードが記録されているQuantity
で、単位は UnitType
で分かる例えば各ユーザーの 1 日当たりの Dev Box 利用時間(インスタンスの区別はなし)は以下のように確認できます。 使いすぎには気を付けましょう。
DevCenterBillingEventLogs
| where UsageType == 'Compute'
| summarize sum(Quantity) by UserId, bin(StartTime, 1d)
| render columnchart
この DevCenterBillingEventLogs
テーブルから直接的な金額は分からないのですが、この後の Cost Management で確認する際には、このテーブルから得られる UsageResourceUniqueId
が有用です。
DevCenterBillingEventLogs
| parse BilledResourceId with '/subscriptions/' subscid 'resourceGroups' rg '/providers/Microsoft.DevCenter/projects/' project_name '/pools/' pool
| distinct UserId, UsageResourceName, UsageResourceUniqueId, project_name, pool
監査や監視する上で大事なのはやはり課金額ですが、これは Azure Portal の Cost Management から確認できます。
各 Dev Box 仮想マシンから発生した課金額には devboxuniqueid
というリソースタグが付与されているのですが、これは DevCenterBillingEventLogs
テーブルの UsageResourceUniqueId
と一致します。
よって、確認手順は以下のようになります。
コスト分析
を開く)ここまではあくまでも Azure リソースの観点から見たログですので、実際にユーザーがサインインしたかどうかまでは分かりません。
下記のいずれかを開き、ユーザー
メニューから サインイン ログ
を開くと、様々なアプリケーションへのサインイン履歴が確認できます。
Dev Box 関連でいうと下記の2つが代表的な確認ポイントになると思います。
Microsoft Developer Portal
というアプリケーションでフィルターして確認できますWindows Sign In
というアプリケーションでフィルターして確認できます下記は Intune 管理センターの画面ですが、Azure ポータルや Entra 管理センターでもほぼ同様の手順になります。