- Newest
- Most votes
- Most comments
They all look good to me, one more way would be using MFA delete to protect your data.
You can lock root out of that as well but as root user, you have permissions to delete bucket policies. So, you delete existing one and put a new one back.
Another option would be to apply Object Lock in Legal Hold (indefinite) mode to the objects in scope (S3 Batch Operations can help with this), and restrict who can remove that property as per https://repost.aws/articles/ARHP6wZxPyQ-6xGawE5MFPuw/denying-removal-of-amazon-s3-object-lock-legal-hold.
If versioning is not enabled, you can also enforce use of conditional writes for if-none-match to prevent overwrites, per https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-writes-enforce.html
If versioning is enabled, denying s3:DeleteObjectVersion via a Resource Control Policy (RCP) (as well as s3:PutLifecycleConfiguration and s3:PutBucketVersioning) will prevent deletion. Ensure you already have a Lifecycle rule to expire noncurrent versions after your desired recovery window, as well as the usual rules to delete expired delete markers and incomplete multipart uploads
If you you do want to use Object Lock, take a look at this solution for short-term, indefinite immutability: https://aws.amazon.com/blogs/storage/maintaining-object-immutability-by-automatically-extending-amazon-s3-object-lock-retention-periods/
Relevant content
- asked 6 years ago
- AWS OFFICIALUpdated 7 months ago
