はじめに
Azureユーザーへのロール割り当てにおいて、権限範囲をきちんと分けて担当外のリソースは設定変更できないようにしてみました。具体的には以下2つを実装しました
- 特定のスコープで特定の操作のみを許可する: 今回は1サブスクリプションをリソースグループで分けて使っている場合を想定し、リソースグループをスコープとしました(複数サブスクリプションを使い分けている(例: 開発用と本番用とか)の場合は、サブスクリプションがスコープになると思います)
- リソース毎のロール割当はしない(細かくなりすぎて管理が難しくなる)
ちなみにベストプラクティスのドキュメントには「ユーザー毎ではなくセキュリティグループに対してロールを割り当てるべし」とありますが、今回の対象はユーザー数が管理しきれる範囲内(10名前後)なので、ユーザー毎に割り当てています
設定手順
- Azure Portalでの操作に関するドキュメントはこちら
手順
- 数名の所有者を残し、サブスクリプションのIAMから全ロールを削除する
- その後リソースグループのIAMにおいて、必要なメンバーに対し適切なロールを設定する
注意点
- リソースグループのIAMから「サブスクリプション(継承済み)」であるロール割当を削除すると、サブスクリプションレベルで削除がなされます
- Azureのロール設定は加算方式のため、サブスクリプションレベルで所有者や共同作成者の場合、リソースグループレベルで閲覧者を設定してもoverrideできず効果がありません
- 「従来の管理者」タブのロールはサブスクリプション所有者ロールに相当するので、あわせて削除する。但し共同管理者以外は削除できません
サブスクリプションのレベルにおいて、権限的に強いロール(所有者や"従来の管理者"のサービス管理者等)を持つユーザーに対する制約のかけ方
単にロールを削除するだけだと、他ユーザーにロール割当ができなくなって普段の運用に困ったり、そもそもロールの削除自体できなかったりします("従来の管理者"のサービス管理者)。
強い権限を持つユーザーは普段は使わず、別ユーザーを作りそれに対し適切なロールを割り当て、普段はそれを使う、が一番簡単です。
その上で更に、
- サブスクリプションレベルでは、強いロールは剥奪し代わりにユーザーアクセス管理者ロールを割り当てる
- その上で、リソースグループレベルで適切なロールを割り当てる