Azure認定資格 WEB問題集&徹底解説
AZ-104:Microsoft Azure Administrator
問題文と選択肢
NetOpsRole のロール定義(抜粋)は次のとおりです。
"Actions": [ "Microsoft.Network/virtualNetworks/*", "Microsoft.Network/networkSecurityGroups/*", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/start/action", "Microsoft.Compute/virtualMachines/restart/action", "Microsoft.Authorization/*/read", "Microsoft.Resources/subscriptions/resourceGroups/read", "Microsoft.Resources/deployments/*" ], "NotActions": [ "Microsoft.Authorization/*/Write", "Microsoft.Authorization/*/Delete", "Microsoft.Network/virtualNetworks/subnets/delete", "Microsoft.Compute/virtualMachines/delete" ]Kimura が rg-net-ariake 内で実行できる操作はどれですか。
- 仮想ネットワーク内の既存サブネットを削除する
- 別のユーザーに NetOpsRole を割り当てる
- 新しい仮想ネットワークを作成し、ネットワークセキュリティグループを構成する
- 稼働中の仮想マシンを停止(割り当て解除)する
A. 仮想ネットワーク内の既存サブネットを削除する
Actions の Microsoft.Network/virtualNetworks/* はワイルドカードなので、仮想ネットワークの子リソースであるサブネットの操作も含みます。ここまでだけ見るとサブネットの削除は許可されているように見えます。
しかし NotActions に Microsoft.Network/virtualNetworks/subnets/delete があり、Actions から差し引かれます。Kimura にはほかのロールが無いため、別の割り当てで補われることもなく、この操作は実行できません。
B. 別のユーザーに NetOpsRole を割り当てる
ロールを割り当てる操作は Microsoft.Authorization/roleAssignments/write です。NetOpsRole の Actions にある Microsoft.Authorization は */read(参照)だけで、write はそもそも許可されていません。
さらに NotActions でも Microsoft.Authorization/*/Write と */Delete が除外されているため、二重の意味で実行できません。ロールの割り当てには、所有者・ユーザー アクセス管理者・ロールベースのアクセス制御管理者のように roleAssignments/write を含むロールが必要です。
C. 新しい仮想ネットワークを作成し、ネットワークセキュリティグループを構成する
新しい仮想ネットワークの作成は Microsoft.Network/virtualNetworks/write で、Actions の virtualNetworks/* に含まれます。ネットワーク セキュリティ グループの作成・規則の編集は networkSecurityGroups/* に含まれ、サブネットへの関連付けに必要なサブネットの書き込みと NSG の join アクションもそれぞれのワイルドカードに含まれます。
NotActions は Authorization の Write / Delete・サブネットの削除・仮想マシンの削除の 4 つで、いずれもこれらの操作に該当しません。リソースグループの参照(resourceGroups/read)と ARM デプロイ(deployments/*)も許可されているため、ポータルからの作成も行えます。この選択肢が正解です。
D. 稼働中の仮想マシンを停止(割り当て解除)する
Azure portal の[停止]が行う割り当て解除は Microsoft.Compute/virtualMachines/deallocate/action です。NetOpsRole が仮想マシンについて許可しているのは read・start/action・restart/action の 3 つだけで、deallocate/action は Actions に含まれていません。
NotActions に書かれていないのは「除外していない」だけで、「許可している」ことにはなりません。Actions に無い操作は最初から実行できないため誤りです。
実効権限 = Actions − NotActions。NotActions は「拒否」ではなく「引き算」、Actions に無いものは最初から無い。
正解への思考ルート
問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。| 要件 | 判断ポイント |
|---|---|
| NotActions に Microsoft.Network/virtualNetworks/subnets/delete がある | virtualNetworks/* で許可されたサブネットの削除が差し引かれる →選択肢(A)を消す |
| Microsoft.Authorization は Actions が */read だけで、NotActions に */Write と */Delete がある | ロールの割り当て(roleAssignments/write)はActions に無く、NotActions でも除外されている →選択肢(B)を消す |
| 仮想マシンの Actions は read・start/action・restart/action だけ | 停止(割り当て解除)の deallocate/action は Actions に無い。NotActions に無いことは許可の根拠にならない →選択肢(D)を消す |
| Kimura にはほかのロールが割り当てられていない | NotActions は拒否ではないので、本来は別ロールで補える。この条件によりNetOpsRole の定義だけで判定できる →選択肢(A・B)を消す(別ロールでの救済なし) |
| virtualNetworks/*・networkSecurityGroups/*・deployments/* が許可され、どの NotActions にも該当しない | 仮想ネットワークの作成(write)と NSG の構成は実効アクセス許可に残る →選択肢(C)が正解 |
ひっかけポイント
- 「NotActions に書かれていない操作は実行できる」と考えると D を選んでしまいます。NotActions は Actions からの引き算にすぎず、Actions に無い停止(割り当て解除)は最初から許可されていません。許可されているのは起動と再起動だけです
- 差し引かれるのはサブネットの削除だけではありません。NotActions は Authorization の Write・Delete、サブネットの削除、仮想マシンの削除の 4 つで、選択肢ごとにどれに当たるかを照合します
- Microsoft.Network/virtualNetworks/* にはサブネットなどの子リソースの操作も含まれるため、A は Actions だけを見ると許可に見えます。NotActions で差し引かれるかまで確認するのが手順です
- NotActions を「拒否」と誤解しないこと。別のロールで同じ操作が許可されていれば実行できます。問題文の「ほかのロールは割り当てられていない」は、この抜け道を塞いで答えを一意にするための条件です
出題バリエーション
同じ知識が本番では条件を変えて出題されます。| 問題文がこう変わったら | 正解はこう変わる |
|---|---|
| 「Kimura にネットワーク共同作成者ロールも割り当てられている」 | NotActions は拒否ではないため、ネットワーク共同作成者が許可するサブネットの削除(A)も実行できるようになる。 |
| 「Actions に Microsoft.Compute/virtualMachines/deallocate/action を追加した」 | 停止(割り当て解除)が実効アクセス許可に入り、D も実行できる。 |
| 「サブネットの削除を、ほかのロールの有無に関係なくだれにもさせたくない」 | NotActions では実現できない。拒否割り当ては利用者が直接作成できない(デプロイ スタックの拒否設定などで Azure が作成・管理する)ため、全員に効く削除ロック(CanNotDelete)や割り当ての見直しを検討する。 |
| 「Actions を Microsoft.Compute/virtualMachines/* に広げた」 | 仮想マシンの削除は NotActions で除外されたまま残るが、停止・割り当て解除やサイズ変更などは可能になる。 |
リファレンス
この問題を解くために必要な知識を扱う公式ドキュメントです。| 知識項目 | 公式ドキュメント |
|---|---|
| Actions − NotActions による実効アクセス許可と、NotActions が拒否ではないこと | Azure ロールの定義について - Azure RBAC |
| 拒否割り当ては利用者が直接作成できず Azure が作成・管理すること | Azure の拒否割り当てを一覧表示する - Azure RBAC |
NetOpsRole のロール定義(抜粋)は次のとおりです。
"Actions": [ "Microsoft.Network/virtualNetworks/*", "Microsoft.Network/networkSecurityGroups/*", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/start/action", "Microsoft.Compute/virtualMachines/restart/action", "Microsoft.Authorization/*/read", "Microsoft.Resources/subscriptions/resourceGroups/read", "Microsoft.Resources/deployments/*" ], "NotActions": [ "Microsoft.Authorization/*/Write", "Microsoft.Authorization/*/Delete", "Microsoft.Network/virtualNetworks/subnets/delete", "Microsoft.Compute/virtualMachines/delete" ]Kimura が rg-net-ariake 内で実行できる操作はどれですか。
- 仮想ネットワーク内の既存サブネットを削除する
- 別のユーザーに NetOpsRole を割り当てる
- 新しい仮想ネットワークを作成し、ネットワークセキュリティグループを構成する
- 稼働中の仮想マシンを停止(割り当て解除)する
次の問題前の問題
会員機能
お役立ち情報
姉妹サイト
AWS
- CLF:クラウドプラクティショナー
- SAA:ソリューションアーキテクト-アソシエイト
- AIF:AIプラクティショナー
- SOA:CloudOpsエンジニア-アソシエイト
- DVA:デベロッパー-アソシエイト
- DEA:データエンジニア-アソシエイト
- MLA:機械学習エンジニア-アソシエイト
- SAP:ソリューションアーキテクト-プロフェッショナル
- DOP:DevOpsエンジニア-プロフェッショナル
- AIP:生成AIデベロッパー-プロフェッショナル
- SCS:セキュリティ-専門知識
Microsoft Azure
- AZ-900:Microsoft Azure Fundamentals
- AZ-104:Microsoft Azure Administrator
- AI-901:Microsoft Azure AI Fundamentals
- DP-900:Microsoft Azure Data Fundamentals