Īsumā
Publisks bucket katru savu failu izsniedz ikvienam, kam ir URL, bez atslēgas un pieteikšanās: lejupielādei jūsu storage politikas netiek apskatītas. Manā lokālajā vidē tas pats testa fails no publiska bucket atgrieza 200 ar saturu, bet no privāta 400. Augšupielādes, dzēšana un pārvietošana joprojām iet caur politikām. Publiskus bucket lietojiet failiem, kas pēc dabas ir publiski, piemēram, avatariem un rakstu attēliem, bet visam pārējam privātus bucket ar parakstītiem URL.
Manai bezmaksas Supabase drošības pārbaudei ir divi noteikumi par bucket: “Publiski storage bucket” tos uzskaita, lai varētu apstiprināt, ka katram tiešām jābūt publiskam, un “Publiski bucket bez augšupielādes ierobežojumiem” atzīmē publiskos bucket bez izmēra vai failu tipa ierobežojuma. Lūk, ko publiskais karogs patiesībā maina.
Ko Supabase nozīmē publisks bucket?
Supabase bucket ceļvedis definē divus piekļuves modeļus. Privātā bucket katra operācija, arī lejupielādes, iet caur RLS politikām uz storage.objects; failu nolasa ar lietotāja tokenu vai parakstītu URL, kas beidzas. Publiskā bucket failu izgūšana un sniegšana apiet piekļuves kontroli, tāpēc ikviens ar URL var failu nolasīt. Piekļuves kontrole joprojām attiecas uz augšupielādi, dzēšanu, pārvietošanu un kopēšanu.
Bucket pēc noklusējuma ir privāti. Bucket kļūst publisks, kad kāds Dashboard atķeksē rūtiņu vai izveido to ar public: true, kas ir bieža īsceļa metode, kad attēls neielādējas.
Ko katrs bucket atgrieza manā testā?
Lokālā Supabase vidē (CLI 2.109.1) izveidoju vienu publisku un vienu privātu bucket, augšupielādēju abos to pašu mazo teksta failu ar secret key un tad pieprasīju to bez jebkādas atslēgas, kā svešinieks ar saiti:
Pieprasījums failam 2026/invoice-001.txt |
Publisks bucket | Privāts bucket |
|---|---|---|
/storage/v1/object/public/…, bez atslēgas |
200, faila saturs |
400, “Bucket not found” |
/storage/v1/object/authenticated/…, tikai publishable key |
200 |
400 |
Privātais bucket atbild tā, it kā tā nebūtu, kas ir tieši tas, ko vēlaties. Publiskais izsniedz failu ikvienam, kas ceļu uzmin vai atrod.
Kāpēc URL ir tik svarīgs?
Publisks fails ir tik slepens, cik tā ceļš. Ceļi bieži ir paredzami: lietotāja id, datums, rēķina numurs. Tie noplūst arī caur lapas pirmkodu, kopīgotām saitēm, pārlūka vēsturi un žurnāliem. Rēķins, pases skenējums vai parakstīts līgums publiskā bucket faktiski ir publicēts.
Kā izvēlēties un labot?
- Publisks bucket: faili, kas paredzēti visiem, piemēram, avatari, produktu foto un bloga attēli. Iestatiet bucket faila izmēra ierobežojumu un atļautos MIME tipus, lai publisko augšupielādes ceļu, ko atļauj jūsu politikas, nevarētu izmantot kam citam.
- Privāts bucket: dokumenti, eksporti, rēķini, viss personiskais. Lejupielādējiet ar lietotāja sesiju vai izveidojiet parakstītu URL, kas beidzas.
Lai redzētu savus bucket un to ierobežojumus:
select id, public, file_size_limit, allowed_mime_types
from storage.buckets
order by public desc, id;
Privātam bucket vajag arī politikas uz storage.objects, parasti pārbaudot, ka ceļa pirmā mape ir lietotāja vai uzņēmuma id. Pēc projekta pārcelšanas saskaitiet šīs politikas: vienā lietotnē katra augšupielāde neizdevās, jo politiku migrācija nekad netika palaista, ko aprakstīju savā Lovable lietotnes drošības kontrolsarakstā. Ko vēl var sasniegt publishable key, ir rakstā Supabase anon key vs service role key.