[小ネタ] Control Tower の AWS Backup 統合機能で作成されたボールトに Vault Lock は設定できません
こんにちは!クラウド事業本部のおつまみです。
みなさん、ランサムウェア対策として AWS Backup の Vault Lock を検討したことはありますか?
先日、Control Tower の AWS Backup 統合機能を使っている環境で、Control Tower が作成したバックアップボールトに対して、 Vault Lock を設定しようとしたところ、SCP に拒否され設定できませんでした。

今回はその原因と仕組みを解説します。
3行まとめ
- Control Tower の AWS Backup 統合機能で作成されたボールトには
aws-control-towerタグが自動付与される - Control Tower の SCP(
CT.BACKUP.PV.3)によりbackup:PutBackupVaultLockConfigurationが Deny される - CT 管理下のボールトへの Vault Lock 設定は技術的にできないため、導入には別途設計が必要
Control Tower の AWS Backup 統合機能とは
AWS Control Tower には、Landing Zone に AWS Backup を統合する機能があります(2024年11月追加)
この機能を有効化すると、以下の AWS Backup ボールとロックが自動作成されます。
| アカウント | 作成されるリソース |
|---|---|
| 各メンバーアカウント | aws-controltower-local-backupvault-{アカウントID} |
| Central Backup Account | aws-controltower-backup-vault-{アカウントID} |

このメンバーアカウントのリソースに aws-control-tower-backup<周期>: true 形式のタグを付与するだけで、バックアップが自動実行され、Central Backup Account のボールトへクロスアカウントコピーされます。管理オーバーヘッドが少なく、マネージドで進めやすい構成です。
その他自動作成されるリソースの詳細は以下の公式ドキュメントをご参照ください。
AWS Backup の有効化時に AWS Control Tower で作成されるリソース
Vault Lock を設定しようとしたら拒否された
今回ランサムウェア対策強化のため、メンバーアカウントの aws-controltower-local-backupvault-xxx に Vault Lock を設定できるかなと思い、設定しようとしたところ、以下のエラーが発生しました。
An error occurred (AccessDeniedException) when calling the
PutBackupVaultLockConfiguration operation:
Implicit deny in service control policy

なぜ拒否されるのか、原因を調べてみました。
原因:Control Tower の SCP(CT.BACKUP.PV.3)
Control Tower が管理するリソースを保護するため、Landing Zone には複数の予防的 SCP(サービスコントロールポリシー)が自動適用されています。今回の拒否の原因は CT.BACKUP.PV.3(CTBACKUPPV3) です。
[CT.BACKUP.PV.3] AWS Control Tower が管理する AWS Backup リソースの修正を禁止する
SCP の内容は以下の通りです。
{
"Condition": {
"Null": {
"aws:ResourceTag/aws-control-tower": false
},
"ArnNotLike": {
"aws:PrincipalARN": "arn:*:iam::*:role/AWSControlTowerExecution"
}
},
"Action": [
"backup:CreateBackupPlan",
"backup:CreateBackupVault",
"backup:CreateLogicallyAirGappedBackupVault",
"backup:DeleteBackupPlan",
"backup:DeleteBackupVault",
"backup:DeleteBackupVaultLockConfiguration",
"backup:PutBackupVaultLockConfiguration",
"..."
],
"Resource": [
"arn:*:backup:*:*:backup-plan:*",
"arn:*:backup:*:*:backup-vault:*"
],
"Effect": "Deny"
}
このポリシーは、以下の 4つの条件がすべて揃った場合 に Deny を発動します。
| 条件 | aws-controltower-local-backupvault-xxx の場合 |
|---|---|
aws-control-tower タグが付与されている |
該当(CT統合機能が自動付与) |
AWSControlTowerExecution ロール以外が実行 |
該当 |
| リソースがバックアップボールト | 該当 |
アクションが PutBackupVaultLockConfiguration |
該当 |
aws-controltower-local-backupvault-xxx は CT 統合機能が作成する際に aws-control-tower タグを自動付与するため、4条件すべてに該当し、Deny が発動します。
なぜこのような SCP が存在するのか
この SCP の目的は、Control Tower が管理するリソースをユーザーの誤操作・意図しない変更から保護することです。AWSControlTowerExecution ロール(Control Tower 自身の管理操作用)のみが例外として許可されており、それ以外のプリンシパルによる変更はすべて拒否されます。
これは Control Tower の「ガードレール(予防的統制)」の一部であり、Landing Zone の更新が安定して動作することを保証するための設計です。Control Tower が管理するリソースを直接変更しないことについては、公式ガイダンスにも明記されています。
AWS Control Tower リソースの作成と変更に関するガイダンス
「AWSControlTowerExecution ロールで実行すれば設定できるのでは?」
技術的には AWSControlTowerExecution ロールで AssumeRole して実行すれば SCP を回避できます。しかし、以下の理由から 推奨しません。
AWSControlTowerExecution ロールの使用が推奨されない理由
- このロールは Control Tower 自身の管理操作専用であり、日常的な利用は想定されていない
- Compliance Mode で Vault Lock を設定すると解除不可能(AWS サポートでも不可)なため、Landing Zone 更新時に Control Tower 側がボールトの変更を試みても失敗する可能性がある
- ドリフト検出の対象となるリスクがある
Vault Lock の Compliance Mode については公式ドキュメントをご参照ください。
最後に
今回は Control Tower の AWS Backup 統合機能で作成されたボールトに Vault Lock を設定しようとして、SCP に拒否された原因を解説しました。
Control Tower の AWS Backup 統合機能はマネージドで便利な反面、Vault Lock のような高度なセキュリティ設定を後から加えようとすると SCP の制約に直面します。Vault Lock の導入を検討される場合は、Control Tower 管理外の独自ボールトを別途作成する設計が必要になります。
同様の検討をされている方の参考になれば幸いです。
最後までお読みいただきありがとうございました!
どなたかのお役に立てれば幸いです。
以上、おつまみでした!





