CloudTrailの証跡を作成しS3へログを保管する設定を入れる際、S3のオブジェクト保護設定する必要があったので調べてみた。
S3 オブジェクトロックとは
Write Once Read Many(WORM)モデルを使用してオブジェクトを保存できる。
オブジェクトロックにより、オブジェクトが削除または上書きされることを、一定期間または無期限に防止できる。
docs.aws.amazon.com
S3オブジェクトロックの2つのモード
※リテンションモードというらしい。。。新しい用語作るの好きね。
・ガバナンスモード:特別なアクセス許可を持たない限り、ユーザーはオブジェクトのバージョンの上書きや削除、ロック設定を変更することができない。必要に応じて一部のユーザーにリテンションの変更、オブジェクトの削除を許可することができる。
・コンプライアンスモード:AWSアカウントのrootを含めオブジェクトのバージョンを上書き、削除することができない。リテンションモードの変更や、保持期間の変更も不可となる。
オブジェクトロックに必要なアクセス許可
下記のアクセス許可が必要。
- s3:BypassGovernanceRetention
- s3:GetBucketObjectLockConfiguration
- s3:GetObjectLegalHold
- s3:GetObjectRetention
- s3:PutBucketObjectLockConfiguration
- s3:PutObjectLegalHold
- s3:PutObjectRetention
リテンションモードを使用する要件
ガバナンスモードでリテンション設定の上書き・削除するを可能とする要件
- s3:BypassGovernanceRetentionアクセス許可が必要。
- 変更要求リクエストにx-amz-bypass-governance-retention:trueを要求ヘッダーを含める必要がある
リーガルホールド
上記のオブジェクトロックの他にリーガルホールドという設定がある。
リテンションモードの保持期間に関係なくオブジェクトの上書き・削除を防ぐ。
リーガルホールドを解除後は保持期間が終了するまでオブジェクトバージョンは保護される。
リーガルホールドの適用・解除にはs3:PutObjectLegalHoldアクセス許可が必要。
設定方法
S3バケット作成時に下記を設定
1.バケットのバージョニング有効化
2.オブジェクトロックを有効化
感想
検証および期間限定保護する場合はガバナンスモードで使用し、なにか問題が発生した場合はリーガルホールドで保護する。法的に保護しなければいけないものはコンプライアンスモードで絶対に変更されないようにする。
という用途となるかな。(´ω`)