あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

Amazon S3のオブジェクトロックについて調べてみた

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.オブジェクトロックを有効化


感想

検証および期間限定保護する場合はガバナンスモードで使用し、なにか問題が発生した場合はリーガルホールドで保護する。法的に保護しなければいけないものはコンプライアンスモードで絶対に変更されないようにする。
という用途となるかな。(´ω`)