正解: 3 (選択肢3)。閲覧者をサブスクリプションに、仮想マシン共同作成者とストレージアカウント共同作成者を RG1 に割り当てる、計3つの割り当てが必要です。
解説各要件を最小権限で満たすため、必要なロールとスコープを分解します。
- すべてのリソースを表示: サブスクリプション全体への読み取りが必要 → サブスクリプション スコープで 閲覧者 (Reader) を割り当て(割り当て1)。
- VM の再起動 + RG1 にのみ VM 作成: RG1 スコープで 仮想マシン共同作成者 (Virtual Machine Contributor) を割り当て(割り当て2)。スコープを RG1 に限定することで RG2 では作成不可となり、再起動権限も含まれます。
- RG1 にのみストレージアカウント作成: RG1 スコープで ストレージアカウント共同作成者 (Storage Account Contributor) を割り当て(割り当て3)。
1つの割り当て=「ロール + プリンシパル + スコープ」の組み合わせです。閲覧者はサブスクリプション スコープ、他2つは RG1 スコープと、スコープが異なるため統合できず、最小でも3つになります。共同作成者 (Contributor) をサブスクリプション全体に割り当てれば1つで済みますが、RG2 にも作成できてしまい最小権限に反するため不適切です。
各選択肢の検討- 1 (1): 不正解。閲覧者と作成権限を1ロールで満たすにはサブスクリプション スコープの共同作成者等が必要となり、RG1 限定要件に反します。
- 2 (2): 不正解。閲覧(サブスクリプション スコープ)と RG1 限定の作成権限を2つに収めることはできません。VM とストレージは別のビルトインロールです。
- 3 (3): 正解。閲覧者(サブスクリプション) + 仮想マシン共同作成者(RG1) + ストレージアカウント共同作成者(RG1) の3つ。
- 4 (4): 不正解。3つで全要件を満たせるため、4つは最小ではありません。
参考: Microsoft LearnAzure 組み込みロールAzure RBAC のスコープを理解する