---
title: "Supabase Public Bucket: wer Ihre Dateien lesen kann"
description: "Was ein öffentlicher Supabase-Bucket ändert und was nicht, was mein lokaler Test für öffentlich und privat lieferte und wann Sie welchen nutzen."
url: "https://madsalt.tech/de/notes/supabase-public-bucket/"
author: "Denys Zaichenko"
author_url: "https://madsalt.tech/de/about/"
language: "de"
published: 2026-11-04
---

# Supabase Public Bucket: wer Ihre Dateien lesen kann

Kurz gesagt

Ein öffentlicher Bucket liefert jede Datei darin an jeden aus, der die URL hat, ohne Key und ohne Login: Ihre Storage-Policies werden für Downloads nicht gefragt. Auf meinem lokalen Stack lieferte dieselbe Testdatei aus einem öffentlichen Bucket `200` mit ihrem Inhalt und aus einem privaten `400`. Uploads, Löschen und Verschieben laufen weiter über Policies. Nutzen Sie öffentliche Buckets für Dateien, die von Natur aus öffentlich sind, etwa Avatare und Artikelbilder, und für alles andere private Buckets mit Signed URLs.

Mein kostenloser [Supabase-Sicherheitscheck](https://madsalt.tech/de/tools/supabase-security-check/) hat zwei Regeln zu Buckets: "Öffentliche Storage-Buckets" listet sie auf, damit Sie prüfen können, ob jeder öffentlich sein soll, und "Öffentliche Buckets ohne Upload-Limits" meldet öffentliche Buckets ohne Größen- oder Dateityp-Limit. Hier steht, was das Public-Flag tatsächlich ändert.

## Was bedeutet ein öffentlicher Bucket in Supabase?

Der [Leitfaden zu Buckets](https://supabase.com/docs/guides/storage/buckets/fundamentals) von Supabase definiert zwei Zugriffsmodelle. In einem privaten Bucket läuft jede Operation, auch der Download, über RLS-Policies auf `storage.objects`; eine Datei wird mit dem Token des Nutzers oder einer ablaufenden Signed URL gelesen. In einem öffentlichen Bucket umgeht das Abrufen und Ausliefern von Dateien die Zugriffskontrolle, jeder mit der URL kann die Datei also lesen. Auf Hochladen, Löschen, Verschieben und Kopieren wirkt die Zugriffskontrolle weiterhin.

Buckets sind standardmäßig privat. Öffentlich wird ein Bucket, wenn jemand das Häkchen im Dashboard setzt oder ihn mit `public: true` anlegt, was eine verbreitete Abkürzung ist, wenn ein Bild nicht lädt.

## Was lieferte jeder Bucket in meinem Test?

Auf einem lokalen Supabase-Stack (CLI 2.109.1) legte ich einen öffentlichen und einen privaten Bucket an, lud dieselbe kleine Textdatei mit dem secret key in beide hoch und rief sie dann ohne jeden Key ab, wie ein Fremder mit dem Link:

![Dieselbe Datei, ohne Key abgerufen. Lokales Supabase Storage, ein öffentlicher und ein privater Bucket. Öffentlicher Bucket: Abruf, kein Key → Bucket öffentlich → 200, Datei; Privater Bucket: Abruf, kein Key → Bucket privat → 400, nicht gefunden.](https://madsalt.tech/charts/de/supabase-public-bucket.svg)

*Meine Nachstellung auf einem lokalen Supabase-Stack, 23. Oktober 2026.*

| Abruf von `2026/invoice-001.txt`                          | Öffentlicher Bucket | Privater Bucket           |
| --------------------------------------------------------- | ------------------- | ------------------------- |
| `/storage/v1/object/public/…`, ohne Key                   | `200`, Dateiinhalt  | `400`, "Bucket not found" |
| `/storage/v1/object/authenticated/…`, nur publishable key | `200`               | `400`                     |

Der private Bucket antwortet, als gäbe es ihn nicht, und das ist richtig so. Der öffentliche gibt die Datei an jeden heraus, der den Pfad errät oder findet.

## Warum ist die URL so wichtig?

Eine öffentliche Datei ist nur so geheim wie ihr Pfad. Pfade sind oft vorhersehbar: eine Nutzer-ID, ein Datum, eine Rechnungsnummer. Außerdem gelangen sie über Seitenquelltext, geteilte Links, Browserverlauf und Logs nach außen. Eine Rechnung, ein Passscan oder ein unterschriebener Vertrag in einem öffentlichen Bucket ist faktisch veröffentlicht.

## Wie wählen Sie und beheben es?

- **Öffentlicher Bucket:** Dateien für alle, etwa Avatare, Produktfotos und Blogbilder. Setzen Sie am Bucket ein Größenlimit und erlaubte MIME-Typen, damit der öffentliche Upload-Pfad, den Ihre Policies erlauben, nicht dazu taugt, beliebige andere Dateien zu hosten.
- **Privater Bucket:** Dokumente, Exporte, Rechnungen, alles Persönliche. Laden Sie mit der Sitzung des Nutzers herunter oder erzeugen Sie eine ablaufende Signed URL.

So sehen Sie Ihre Buckets und ihre Limits:

```sql
select id, public, file_size_limit, allowed_mime_types
from storage.buckets
order by public desc, id;
```

Ein privater Bucket braucht außerdem Policies auf `storage.objects`, die meist prüfen, ob der erste Ordner des Pfads die ID des Nutzers oder der Firma ist. Zählen Sie diese Policies nach einem Projektumzug: Bei einer App scheiterte jeder Upload, weil die Policy-Migration nie lief, was ich in meiner [Sicherheits-Checkliste für Lovable-Apps](https://madsalt.tech/de/blog/lovable-app-security-checklist/) beschrieben habe. Was der publishable key sonst noch erreicht, steht in [Supabase anon key vs service role key](https://madsalt.tech/de/blog/supabase-anon-key-vs-service-role-key/).
