Amazon S3の「バージョニング」と「オブジェクトロック」機能についてまとめる。
用語
-
S3バージョニング
同一バケット内で同じキー名のオブジェクトに対して複数のバージョンを保持できる機能。これにより、オブジェクトが更新・削除された際にも、以前の状態に戻すことが可能となる。 -
オブジェクトロック
オブジェクトに対し、指定した期間または無期限に変更(削除や上書き)を防止する機能。- Governanceモード:一定の管理者権限があれば、ロック解除や上書きが可能。
- Complianceモード:設定された期間は強制的に不変状態となり、いかなる権限をもってしても変更できない(WORM: Write Once Read Many)。
用途
-
S3バージョニング
- 誤操作対策:誤ってオブジェクトを削除または上書きしてしまった場合に、以前のバージョンから復元できる。
- 変更履歴の保持:オブジェクトの更新履歴を保存し、変更内容の追跡や監査に利用可能。
- バックアップ・災害復旧:データ損失時の復旧手段として機能する。
-
オブジェクトロック
- 法令遵守:金融や医療など、規制に基づくデータ保持要件を満たすために、データの不変性を保証する。
- セキュリティ対策:内部・外部からの不正な削除や改ざんを防止し、重要データを保護する。
- コンプライアンス遵守:企業ポリシーに則ったデータ管理を実現する。
メリット
-
S3バージョニング
- データ保全:誤削除・上書きによるデータ損失リスクを大幅に低減。
- 迅速な復元:以前のバージョンに迅速にロールバックでき、システムの可用性を向上。
- 監査対応:変更履歴の追跡が可能なため、内部監査やセキュリティ対策に有効。
-
オブジェクトロック
- 不変性の保証:設定された期間中、データが意図せず変更されるリスクを排除。
- コンプライアンス強化:規制に応じたデータ保存ポリシーを実装することで、法的リスクを低減。
- セキュリティ向上:内部・外部の悪意ある操作からデータを保護。
未設定時に生じるリスク
-
S3バージョニング未設定の場合
- 誤ってオブジェクトを削除または上書きすると、元に戻す手段がなくなり、データ損失のリスクが増大する。
- 変更履歴が残らないため、監査対応やトラブルシューティングが困難になる。
-
オブジェクトロック未設定の場合
- 内部または外部からの不正な削除や改ざんに対して脆弱となり、データの信頼性や不変性が確保できない。
- 法令や規制によるデータ保持要件を満たさず、コンプライアンス違反のリスクが発生する。
AWS CLIによる設定方法
S3バージョニングの有効化
aws s3api put-bucket-versioning --bucket <bucket-name> --versioning-configuration Status=Enabled
オブジェクトロックの有効化
バケット新規作成
1.バケット作成時にオブジェクトロックを有効化
aws s3api create-bucket \
--bucket my-new-bucket \
--object-lock-enabled-for-bucket
2.オブジェクトロックの構成設定
- 既存バケットに対して、ロックルール(デフォルト保持ポリシー)を設定する。
- 例として、GOVERNANCE モードで30日間の保持を設定する場合を示す。
aws s3api put-object-lock-configuration \
--bucket my-new-bucket \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "GOVERNANCE",
"Days": 30
}
}
}'
作成済みバケット変更
- 既存バケットに対して put-object-lock-configuration コマンドを用い、オブジェクトロックを有効化し、デフォルト保持ポリシーを設定する。
- 以下は例として、GOVERNANCE モードで30日間の保持を設定するケース。
aws s3api put-object-lock-configuration \
--bucket my-existing-bucket \
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "GOVERNANCE",
"Days": 30
}
}
}'