Azure認定資格 WEB問題集&徹底解説

AZ-104:Microsoft Azure Administrator

正解 C問題
分野1:Azure ID とガバナンスの管理 タスクステートメント1.2:Azure リソースへのアクセスの管理
合格に向けて、もっと深く学習する
豊富な問題と詳細なAzureサービス解説を、1 時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
食品メーカーの有明食品では、ネットワーク運用担当者向けにカスタム Azure ロール「NetOpsRole」を作成し、リソースグループ rg-net-ariake のスコープでユーザー Kimura に割り当てています。Kimura にはほかのロールは割り当てられていません。
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 を割り当てる
  • 新しい仮想ネットワークを作成し、ネットワークセキュリティグループを構成する
  • 稼働中の仮想マシンを停止(割り当て解除)する
解説 頻出度★★★★★
この問題は、カスタムロールの定義を「Actions − NotActions = 実効アクセス許可」で読み解き、NotActions に書かれていなくても Actions に無い操作は実行できないことまで含めて、実行できる操作を 1 つに絞れるかがポイントです。

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 で除外されたまま残るが、停止・割り当て解除やサイズ変更などは可能になる。
関連サービスの解説 Azure Virtual Network (VNet)
Azure RBAC
ネットワークセキュリティグループ (NSG)
リファレンス この問題を解くために必要な知識を扱う公式ドキュメントです。
知識項目 公式ドキュメント
Actions − NotActions による実効アクセス許可と、NotActions が拒否ではないこと Azure ロールの定義について - Azure RBAC
拒否割り当ては利用者が直接作成できず Azure が作成・管理すること Azure の拒否割り当てを一覧表示する - Azure RBAC
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 100%
No.16 解説
食品メーカーの有明食品では、ネットワーク運用担当者向けにカスタム Azure ロール「NetOpsRole」を作成し、リソースグループ rg-net-ariake のスコープでユーザー Kimura に割り当てています。Kimura にはほかのロールは割り当てられていません。
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 を割り当てる
  • 新しい仮想ネットワークを作成し、ネットワークセキュリティグループを構成する
  • 稼働中の仮想マシンを停止(割り当て解除)する

(会員限定)当問題の評価をお願いします。改善に活用します。