mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
SeaweedFS 4.49+ honours a public-read object or bucket ACL on an unsigned GET/HEAD/list even in a bucket the platform treats as private (seaweedfs/seaweedfs#11605). Since consumers hold WriteAcp, an app could expose objects through the public S3 API domain just by sending x-amz-acl: public-read. Put a bucket policy on every non-public consumer bucket that denies s3:Get* and s3:List* to principal "*" when aws:username is null. SeaweedFS evaluates that deny before any AllUsers grant; signed and presigned requests carry an IAM user ARN, so aws:username is set and they are not affected. Public buckets keep their anonymous Read grant, and a bucket that turns public gets our deny lifted again. Embedded sidecars publish no port and are left as they are. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>