SCP と RCP — サービスコントロールポリシー設計
AWS Organizations の SCP と RCP (Resource Control Policy) の違い、ガードレール設計、段階的適用、Deny の局所化を SAA 基礎から SAP 高度設計まで解説。
AWS Organizations の サービスコントロールポリシー (SCP) は、 組織単位 (OU) やアカウントに適用する 許可の最大範囲 (ガードレール) を定義します。 近年登場した RCP (Resource Control Policy) はリソースレベルのガードレールを提供します。 本記事では SCP / RCP の設計を SAA / SAP 両面から整理します。
SAA レベル:基礎概念
SCP の本質 — ガードレール
SCP は IAM ポリシーと 同じ JSON 構文 ですが、本質が異なります。
SAA レベル:基礎概念
SCP の核心は 「許可を与えるのではなく、許可の上限を定める」 ことです。 IAM ポリシーで許可されていても、SCP で許可されていなければ アクセスは拒否 されます。 「SCP = ガードレール(上限の設定)」が SAA の最重要ポイントです。
# アクセスが許可される条件
IAM ポリシー (Allow) AND SCP (Allow) = 許可
IAM ポリシー (Allow) AND SCP (Deny) = 拒否
IAM ポリシー (Deny) OR SCP (Deny) = 拒否
| 条件 | IAM ポリシー | SCP | 結果 |
|---|---|---|---|
| 許可 | Allow | Allow | 許可 |
| 拒否 | Allow | Deny | 拒否 |
| 拒否 | Deny | Allow | 拒否 |
| 拒否 | Deny | Deny | 拒否 |
SAA 試験のポイント
「SCP で Allow しても、それだけではアクセスできない」 は SAA の超頻出です。 SCP の Allow は「最大範囲を設定する」だけで、IAM ポリシーでも許可が必要です。 逆に SCP の Deny は 絶対拒否(IAM ポリシーで Allow でも拒否)。 この非対称性が SAA の核心です。
SCP の適用単位
SCP は Root、OU、アカウント に適用できます。適用範囲は階層的に下位に継承します。
- 下位は上位の SCP を継承: 全親 OU の SCP が AND で適用
- FullAWSAccess: Root にはデフォルトで
FullAWSAccessが必要(無いと全アカウントが停止) - 管理アカウントは SCP 対象外: 管理アカウント自体は SCP の影響を受けない
SAA 頻出
管理アカウント (Management Account) は SCP の対象外 です。 これは「SCP で管理アカウント自身をロックアウトする事故」を防ぐための仕様です。 SAA で「管理アカウントに SCP は適用されるか?」というひっかけ問題が頻出します。
代表的なガードレール例
| ガードレール | 目的 | SCP の内容 |
|---|---|---|
| リージョン制限 | データ主権・コスト管理 | 許可リージョン外の新規リソース作成を Deny |
| セキュリティサービス無効化防止 | セキュリティ維持 | GuardDuty/Security Hub の無効化操作を Deny |
| ルートユーザー使用制限 | セキュリティ | ルートユーザーの日常使用を Deny |
| サービス制限 | ガバナンス | 未承認サービス(例: 未認可リージョンの Rekognition 等)を Deny |
SAP レベル:高度な設計シナリオ
段階的 SCP 適用の設計
SAP では 階層的に SCP を段階適用 して、リスクの高い操作を階層ごとに防ぎます。
SAP レベル:高度な設計シナリオ
段階的 SCP 設計の定石は 「上位 OU は広く、下位 OU は狭く」 です。 Root 直下は最小限の Deny(全組織共通の禁止事項)、 Production OU ではより厳格なリージョン制限や承認要求を追加、という階層化で 「局所的な要件は局所的な SCP で」実現します。
Deny の局所化原則
設計上の落とし穴
Root 直下に過剰な Deny を設定すると、意図せず全組織を停止 させるリスクがあります。 Deny はなるべく 下位 OU に局所化 し、影響範囲を最小化するのが SAP のベストプラクティスです。 特に Root 直下の Deny は「組織全体に影響」するため、慎重な設計が必要です。
リージョン制限 SCP の実装例
データ主権やコスト管理のため、許可リージョン以外でのリソース作成を禁止 する SCP は頻出です。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": [
"ap-northeast-1",
"us-east-1"
]
},
"ArnNotLike": {
"aws:PrincipalARN": "arn:aws:iam::*:role/AWSControlTowerExecution"
}
}
}
]
}
除外ロールの設計
リージョン制限 SCP では 自動化ロール(Control Tower 実行ロール等)を除外 する条件を入れるのが定石です。 これを忘れると、Control Tower のアカウント初期化が特定リージョンで失敗する事故に繋がります。 SAP では「誰を除外すべきか」の設計判断が問われます。
RCP (Resource Control Policy) の登場
近年登場した RCP は、SCP とは異なる リソースレベルのガードレール を提供します。
| ポリシー | 制御対象 | 代表ユースケース |
|---|---|---|
| SCP | アイデンティティ の許可上限 | アカウント内のプリンシパルが何をできるか |
| RCP | リソース へのアクセス上限 | リソースが誰からアクセスされるか |
SAP レベル:高度な設計シナリオ
RCP は 「組織外からのリソースアクセスを禁止」 というリソース側のガードレールを実現します。 従来は各リソースのリソースポリシーで個別設定していた「外部アカウント拒否」を 組織レベルで一括適用 できるのが RCP の強みです。 S3 バケット、KMS キー、Secrets Manager シークレット等の外部共有を組織的に防止できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:PrincipalOrgID": "o-xxxxxxxxxx"
},
"Bool": {
"aws:PrincipalIsAWSService": "false"
}
}
}
]
}
この RCP は 「組織外のプリンシパルからのリソースアクセスを禁止」 します。
組織 ID (aws:PrincipalOrgID) で組織メンバーかを判定するのがキモです。
SCP と RCP の使い分け
| シナリオ | 推奨ポリシー | 理由 |
|---|---|---|
| アカウント内のアクション制限 | SCP | プリンシパルの行動を制限 |
| リソースへの外部アクセス禁止 | RCP | リソース側の受信を制限 |
| サービスの利用禁止 | SCP | アクション単位の制限 |
| データ主権の強制 | RCP | リソースへのアクセス制限 |
SCP と RCP の混同
SCP は「アイデンティティが何をできるか」、RCP は「リソースが誰からアクセスされるか」 です。 「リソースポリシーがないサービス」でも RCP で組織的ガードレールを設定できるのが新しい強みですが、 適用対象のサービスは限定されているため、対応状況を確認する必要があります。
タグポリシーと SCP の連携
タグポリシー (Tag Policy) はタグの標準化を定義しますが、単体では 強制力が弱い です。 SCP と連携することで 必須タグ未付与のリソース作成を拒否 できます。
タグポリシー: タグの標準定義(強制力なし)
+ SCP (Resource Control): 必須タグ未付与リソース作成を Deny
= タグ付けの強制
タグ強制の完成形
タグポリシー + SCP + Config Rules の 3 段構えが SAP のタグガバナンス定石です。
- タグポリシーで標準定義
- SCP で未付与リソース作成を拒否(予防的)
- Config Rules で既存リソースの不備を検知・修復(是正的)
ガードレールのテストと段階導入
SCP/RCP の誤設定は 組織全体を停止 させるリスクがあるため、段階導入が重要です。
| 段階 | 手法 | 目的 |
|---|---|---|
| 1 | Audit OU でテスト | 影響範囲を限定して検証 |
| 2 | Dry Run (CloudTrail IAM Action) | 実際の Deny 影響を事前確認 |
| 3 | Sandbox OU に適用 | 実環境での動作確認 |
| 4 | 本番 OU に段階展開 | 影響を見ながら拡大 |
ガードレール導入の鉄則
「いきなり Production OU に SCP を適用しない」 が SAP の鉄則です。 まず Sandbox / Audit OU でテストし、CloudTrail で Deny されるべき操作が実際に Deny されるか を確認してから本番展開します。
制約とクォータ
| 項目 | 制約 |
|---|---|
| SCP の適用単位 | Root / OU / アカウント |
| 1 アカウントあたり SCP | 5(クォータ拡張可) |
| 管理アカウント | SCP 対象外 |
| RCP 対象サービス | S3, KMS, Secrets Manager, SQS 等(順次拡大) |
まとめ
- SAA: SCP はガードレール(許可上限)、Allow だけでは許可されない、 管理アカウントは対象外、という基本を理解する。
- SAP: 段階的 SCP 適用、Deny の局所化、RCP との使い分け、タグポリシー連携、 段階的テスト導入が求められる。
次は AWS Organizations ガバナンス設計 で、組織全体の統制体制を統合的に学びましょう。