OUを作っただけでは、まだ制御していなかった

第7回では、samekoro-labをLab OUへ、samekoro-prodをProd OUへ配置しました。役割は見やすくなりましたが、その時点では分類しただけです。

次に試したかったのは、OUへルールを適用するとメンバーアカウント側の操作が本当に止まるのかということでした。SCPという言葉は知っていても、自分のアカウントで拒否されるところを見るまでは、どこまで効くのかを実感できていませんでした。

最初は「強い権限なら越えられるのでは」と考えた

SCPはService Control Policyの略で、Organizations内のメンバーアカウントで利用できる権限の上限を定めるガードレールです。権限を新しく与えるポリシーではありません。

この説明を読んでも、最初はAdministratorAccessを持つ管理者なら操作できるのでは、と考えました。アカウントの管理者権限と、組織側からかける制御の関係が頭の中で混ざっていたからです。

そこで、結果が分かりやすく、検証範囲をLab OUに限定できる操作として、組織からの離脱を止めるルールを試しました。

DenyLeaveOrganizationをLab OUへ適用した

作成したSCPの名前はDenyLeaveOrganizationです。対象は、メンバーアカウントがOrganizationsから離脱する操作です。

今回は組織全体やProd OUへ広げず、Lab OUへ適用しました。AWS公式資料でも、SCPは影響を確認しながら小さな単位で試すことが勧められています。自分の環境でも、まず検証用として分けた場所へ付けるのが自然でした。

ポリシー名、適用先、止めたい操作を一つに絞ったことで、確認時に何が原因で拒否されたのかを追いやすくしました。

メンバーアカウント側から離脱を試した

適用しただけでは、設定が存在することしか分かりません。samekoro-lab側から組織を離れる操作を試し、実行できないことを確認しました。

ここで見たかったのは特定のエラー文ではなく、メンバーアカウント側に管理者権限があっても、Organizations側で明示的に拒否した操作は通らないという結果です。

拒否を確認して、SCPが「各アカウントへ同じ権限設定を配るもの」ではないことがはっきりしました。各アカウントの権限とは別の層で、越えてはいけない上限を置いています。

SCPだけで権限管理が終わるわけではない

ここで一度、SCPがあればIAM側の権限を考えなくてよいのか、と逆方向にも迷いました。しかし、SCPは許可を付けるものではありません。

利用者やロールへ何を許可するかはIAM側で決め、そのうえでOrganizations側のSCPが最大範囲を絞ります。今回なら、AdministratorAccessが操作を許可していても、Lab OUのSCPが離脱を拒否しているため実行できません。

二つを同じ「権限設定」としてまとめず、役割を分けて考える必要がありました。

個人環境で試した理由

企業なら、組織からの離脱はアカウント管理や請求、監査にも関わります。SCPの変更手順、例外、レビュー、復旧経路まで決めて運用するはずです。

今回は個人の検証環境なので、Lab OUという限定した場所で、ポリシーを付けた結果を自分で確認できました。大きなルールを先に増やすのではなく、一つの拒否を最後まで追うことで、SCPの役割を理解することを優先しました。

まとめ

DenyLeaveOrganizationをLab OUへ適用し、samekoro-labがOrganizationsから離脱できないことを確認しました。

分かったのは、管理者権限の強さだけでは決まらない制御があることです。SCPは権限を与えず、メンバーアカウントが越えられない上限を組織側に置きます。

次は、分けた三つのAWSアカウントへIAM Identity Centerから入るために、ユーザー・グループ・許可セット・割り当てをどうつないだかを整理します。