IAMポリシーをどれだけ丁寧に書いても、権限を持つ管理者が「うっかり」あるいは「意図的に」やってしまう操作は防げません。組織全体で「これだけは絶対にやらせない」という一線を引くのが AWS Organizations と SCP の役割です。この記事は、クラウド設計ガイドラインの実装編として、SCPによるガードレールの敷き方を実務目線でまとめます。

01IAMだけでは統制しきれない、という前提

アカウントを立ち上げ、最小権限のIAMポリシーを設計する。ここまでは IAM設計の現実解アカウント初期設定 で扱ってきた通りです。しかしIAMには構造的な限界があります。IAMは「その主体に何を許可するか」を定義する仕組みであって、「権限を持つ管理者に何をさせないか」を強制する仕組みではありません。

典型的なのが、AdministratorAccess を持つ運用担当者です。彼らは業務上ほぼ何でもできます。だからこそ、東京リージョン以外にうっかりリソースを立ててしまう、検証のつもりで本番のS3バケットを消してしまう、といった操作も「権限的には」通ってしまいます。IAMポリシーで縛ろうとしても、管理者権限を持つ本人がそのIAMポリシーを書き換えられるなら、統制は成立しません。

ここで必要になるのが、個々のアカウントやIAMの外側から、組織全体に上限をかけるガードレールです。それが AWS Organizations と SCP(サービスコントロールポリシー)です。マルチアカウント全体の統制像は マルチアカウント統制 でも整理しています。

02SCPは「許可を上限で絞る」もの、許可自体はIAM側

SCPで最初に必ず押さえてほしい原則があります。SCPは権限を「付与」しません。あくまで、IAMで付与できる権限の「上限(ガードレール)」を定義するだけです。ある操作が実際に実行できるかどうかは、「SCPで許可されている」かつ「IAMで許可されている」の両方を満たしたときだけ、というANDの関係になります。

この原則を取り違えると、「SCPを付けたのに権限が足りない」「SCPで許可したのに動かない」という混乱に陥ります。SCPは足し算ではなく引き算、と覚えておくのが実務では安全です。

現場のコツ:SCPには「許可リスト方式(許可を明示的に列挙し、それ以外を暗黙拒否)」と「拒否リスト方式(FullAWSAccessを土台に、禁止したいものだけDenyで重ねる)」があります。運用のしやすさと事故の起こりにくさから、実務では拒否リスト方式(Deny を積み上げる)から始めるのが定石です。許可リスト方式は強力ですが、新サービスを使うたびにSCPの改修が必要になり、現場を止めがちです。

実効権限 = SCPの上限 ∩ IAMの許可 SCP(上限のフタ) 組織が許す最大範囲 IAM(実際の付与) 主体ごとに付与 実効 権限 SCPで許可され、かつIAMでも許可された操作だけが実行できる
図:SCPは上限(フタ)、IAMは実際の付与。両方で許可された共通部分だけが実効権限になります。

03OU設計 — ガードレールを掛ける単位を決める

SCPはアカウント単位でも掛けられますが、実務ではOU(Organizational Unit)に掛けるのが基本です。OUは目的や環境が近いアカウントをまとめる箱で、SCPはこのOUの階層に沿って継承されます。ルート → 親OU → 子OU → アカウント、と上から下へ全てのSCPが積み重なって効いていきます。

まず作りたいのが、AWSも推奨する定番のOU構成です。過度に細分化せず、意味のある単位に留めるのが長持ちのコツです。

現場のコツ:OUは「SCPを変えたい単位」で切ります。組織図(部署)で切ると、統制ルールが部署をまたいで揺れたときに破綻します。まず「本番と非本番で禁止事項が違うか」「例外を許すアカウントをどこに隔離するか」という統制の観点で線を引き、部署の都合はタグやアカウント命名で吸収するのが現実的です。

OU階層とSCPの継承 Root 全体共通SCP Security OU 監査・ログ集約 Workloads OU アプリ稼働 Sandbox OU 検証・例外 本番 OU +厳格なSCP 非本番 OU やや緩め 上位のSCPは下位すべてに継承され、下位で追加のDenyを重ねられる ※管理アカウント(Management Account)にはSCPが効かない点に注意
図:OU階層に沿ってSCPが継承されます。本番OUには全体共通SCPに加えて、より厳しいSCPを重ねます。

04実際に敷くガードレールの型

ここからは具体的に、どんなSCPを敷くかです。最初から全部盛りにせず、事故インパクトの大きいものから順に入れていくのが安全です。代表的なガードレールを挙げます。

現場のコツ:リージョン制限のSCPは、入れた瞬間に「東京以外を触る正規の作業」まで止めるので、事故が最も起きやすいものの一つです。IAM・STS・Organizations・CloudFront・Route 53・WAF(グローバル)・Support などグローバル扱いのアクションを NotActionCondition で除外できているか、必ず検証アカウントで先に確認してください。除外リストはAWSの公式ドキュメントで最新を確認するのが安全です。

05SCPの限界と、RCP・IAMとの役割分担

SCPは強力ですが万能ではありません。実務で必ず知っておくべき限界がいくつかあります。

整理すると、組織全体の「絶対にやらせない一線」をSCP、リソースへの外部アクセス境界をRCP、個々の主体の実権限をIAM、という三層で考えると設計が素直になります。SCPの文字数上限などのクォータもあるため、詰め込みすぎず、この役割分担を守ることが結果的に運用を軽くします。

06導入の進め方 — いきなり本番に掛けない

SCPの怖いところは、間違えると組織全体の作業が一斉に止まる点です。だからこそ、段取りが全てです。EMWが実務で踏む手順はおおむね次の通りです。

この考え方は、移行プロジェクトの初期に統制の土台を作る流れとも地続きです。全体像は 移行の全体フロー設計ガイドライン と合わせて読むと、どの工程でガードレールを敷くべきかが見えてきます。

現場のコツ:SCPの変更は「誰でもいつでも触れる」状態にしないでください。SCPそのものを操作できる権限を絞り、変更はコード(IaC)とレビューを経てだけ反映する運用にすると、統制の土台が管理者の思いつきで崩れる事故を防げます。ガードレールを守るガードレール、という二重の設計が効きます。

まとめ

IAMは「何を許可するか」、SCPは「何を絶対にさせないか」。この二つは競合するものではなく、層が違う別々の仕事です。SCPは権限を付与せず上限を絞るだけ、という原則さえ外さなければ、リージョン制限・ルート抑止・重要リソースの削除防止・タグ強制といったガードレールは、組織全体の事故を確実に減らします。

大切なのは、統制を掛けすぎて現場を止めないこと、そして例外を野放しにして空洞化させないこと。この落とし所は、実際に手を動かしながら組織の実態に合わせて調整するしかありません。マルチアカウント全体の統制像は マルチアカウント統制、費用感は 料金 も併せてご覧ください。

組織全体のガードレール設計は、統制のかけ過ぎで現場が止まるのも、緩すぎて事故が起きるのも避けたい繊細な領域です。OU設計とSCPの落とし所づくりはEMWの実務経験が活きる領域ですので、お問い合わせからお気軽にご相談ください。

相談する
← ブログ一覧へ戻る