← ClaudeAtlas

object-storage-securitylisted

Secure object storage buckets on S3, Cloudflare R2, GCS, and MinIO against public exposure and credential abuse. Covers public access audit, bucket policy vs ACL vs IAM, presigned URLs with scoped credentials, CORS for direct browser upload, encryption choices, versioning and object lock, and access logging. Invoke when creating a new bucket, auditing inherited buckets for exposure, or wiring an app to storage with presigned uploads.
GoldenWing-360/claude-security-skills · ★ 15 · AI & Automation · score 78
Install: claude install-skill GoldenWing-360/claude-security-skills
# Object Storage Security Public-bucket leaks remain one of the top breach causes a decade after S3 launched — not because the controls are missing, but because the defaults were permissive for years and every provider's mental model (bucket policy, ACL, IAM, signed URL, public binding) overlaps just enough to confuse. One `public-read` flag or one over-broad access key turns a dumb byte store into a data breach. This skill is the baseline for any S3-compatible store: AWS S3, Cloudflare R2, Google Cloud Storage, self-hosted MinIO. The threat model is the same everywhere — accidental public exposure, over-scoped credentials, exfiltration you never notice, and uploads that come back to bite the app that serves them. For validating the file *contents*, see [`file-upload-security`](../file-upload-security/SKILL.md). ## When to invoke - Creating a new bucket for an app (uploads, backups, static assets) - Auditing buckets you inherited and did not provision - Wiring presigned upload/download URLs into an application - A credential that had storage access leaked or may have leaked - Moving from local-disk storage to object storage - Reviewing ransomware / mass-deletion resilience of stored data ## Step 1 — Public access audit Start by answering one question per bucket: *can an unauthenticated stranger read it?* ```bash # S3: Block Public Access must be on at BOTH levels aws s3api get-public-access-block --bucket example-app-uploads aws s3control get-public-access-block --acco