Käytön hallinta käytännöillä
Toteuta tiedostoillesi hienojakoinen käyttöoikeuksien hallinta Supabase Storagen käytäntöjen avulla ja varmista tietoturva.
Käytön hallinta käytännöillä on ilmainen Supabase backend palveluna-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Supabase backend palveluna-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Supabase backend palveluna-kurssilla on yhteensä 4 oppituntia.
Storage Policy -käytäntöjen esittely
Tervetuloa! Tässä oppitunnissa perehdymme Supabase Storagen Storage Policy -käytäntöihin. Näiden käytäntöjen avulla hallitsette, kuka voi käyttää, ladata tai poistaa bucketeissanne olevia tiedostoja.
Voitte ajatella niitä pilvitiedostojenne vartijoina, jotka varmistavat, että vain valtuutetut toiminnot suoritetaan.
Miksi Storagen suojaus on tärkeää
Ilman asianmukaisia käytäntöjä tiedostonne voivat olla haavoittuvia. Kuka tahansa voisi mahdollisesti ladata haitallista sisältöä, tai arkaluonteiset käyttäjätiedot voisivat paljastua julkisesti.
- Luvattoman käytön estäminen: Pitäkää yksityiset tiedostot suojattuina.
- Latausten hallinta: Varmistakaa, että vain oikeutetut käyttäjät voivat lisätä tiedostoja.
- Poistojen hallinta: Estäkää tiedostojen tahaton tai haitallinen poistaminen.
Käytännöt ovat välttämättömiä suojattujen sovellusten rakentamisessa.
RLS:n käyttöönotto bucketeille
Tietokantataulujen tapaan Supabase Storage käyttää bucketeissa rivitason suojausta (Row-Level Security, RLS). Ennen kuin voitte käyttää mitään käytäntöjä, RLS on otettava käyttöön Storage-bucketissanne.
Voitte tehdä tämän Supabase-hallintapaneelin Storage-osiossa napsauttamalla bucketia ja ottamalla käyttöön Enable RLS -valinnan tai suoraan SQL:llä:
ALTER TABLE storage.buckets
ENABLE ROW LEVEL SECURITY;Käytäntösyntaksin ymmärtäminen
Storage-käytännöt kirjoitetaan SQL:llä tietokannan RLS:n tapaan. Niissä määritetään sallitut toiminnot (SELECT, INSERT, UPDATE, DELETE) ja niiden ehdot.
Käytännön keskeiset osat:
- CREATE POLICY: Aloittaa käytännön määrityksen.
- ON storage.objects: Määrittää taulun, johon käytäntöjä sovelletaan.
- FOR [action]: Määrittää toiminnon (SELECT, INSERT, UPDATE, DELETE).
- USING / WITH CHECK: Asettaa käytännön ehdot.
Käytäntö: julkinen lukuoikeus
Luodaan käytäntö, joka sallii kaikkien lukea tiedostoja tietystä bucketista, esimerkiksi public-images-bucketista. Tämä on yleistä esimerkiksi profiilikuvien ja tuotekuvien kaltaisille resursseille.
Osa auth.role() = 'anon' tarkoittaa todentamattomia käyttäjiä, ja auth.role() = 'authenticated' kirjautuneita käyttäjiä. Sallimme tässä molemmat.
CREATE POLICY "Allow public read access"
ON storage.objects FOR SELECT
TO public
USING (bucket_id = 'public-images');Käytäntö: todennettujen käyttäjien lataukset
Luodaan nyt käytäntö, joka sallii vain todennettujen käyttäjien ladata tiedostoja user-uploads-buckettiin. Haluamme erityisesti, että he voivat ladata tiedostoja vain omalla käyttäjätunnuksellaan nimettyyn kansioon.
Käytämme auth.uid()-funktiota nykyisen käyttäjän tunnuksen hakemiseen ja path_tokens[1]-arvoa tiedostopolun ensimmäisen osan tarkistamiseen.
CREATE POLICY "Allow authenticated user upload"
ON storage.objects FOR INSERT
TO authenticated
WITH CHECK (bucket_id = 'user-uploads' AND auth.uid()::text = path_tokens[1]);Käytäntö: todennetut käyttäjät lukevat omia tiedostojaan
Täydennetään latauskäytäntöä varmistamalla, että todennetut käyttäjät voivat lukea user-uploads-bucketista vain itse omistamiaan tiedostoja.
Tässä käytännössä auth.uid()-funktion avulla verrataan tiedoston omistajaa (joka tallennetaan storage.objects-taulun owner-sarakkeeseen) ja tarkistetaan myös tiedostopolku.
CREATE POLICY "Allow authenticated user read their own"
ON storage.objects FOR SELECT
TO authenticated
USING (bucket_id = 'user-uploads' AND auth.uid() = owner);storage.objects-taulu
Storage-käytännöt toimivat piilotetussa storage.objects-taulussa. Tämä taulu tallentaa kaikkien bucketeissanne olevien tiedostojen metatiedot. Sen sarakkeiden ymmärtäminen on olennaista tehokkaiden käytäntöjen kirjoittamisessa.
- id: Objektin yksilöivä tunniste.
- bucket_id: Sen bucketin tunnus, johon objekti kuuluu.
- name: Koko polku ja tiedostonimi.
- owner: Tiedoston ladanneen käyttäjän
auth.uid(). - path_tokens: Merkkijonojen taulukko, joka edustaa polun osia.
Käytäntö: poisto vain ylläpitäjille
Joskus vain tietyillä käyttäjillä, kuten ylläpitäjillä, pitäisi olla oikeus poistaa tiedostoja. Luodaan käytäntö, joka sallii poistamisen vain, jos käyttäjällä on tietty rooli, esimerkiksi admin-rooli.
Tämä edellyttää mukautettua funktiota käyttäjäroolien tarkistamiseen. Vaihtoehtoisesti voitte tarkistaa tietyn `owner` UID:n, jos käytössä on vain yksi ylläpitäjätili.
CREATE POLICY "Allow admins to delete"
ON storage.objects FOR DELETE
TO authenticated
USING (bucket_id = 'sensitive-data' AND auth.jwt() ->> 'user_role' = 'admin');Käytäntöjen tehokas testaaminen
Käytäntöjen luomisen jälkeen on erittäin tärkeää testata niitä perusteellisesti. Voitte tehdä tämän seuraavasti:
- Kirjautukaa sisään eri käyttäjinä: Testatkaa todennetuilla ja todentamattomilla käyttäjillä sekä käyttäjillä, joilla on eri rooleja.
- Yrittäkää kiellettyjä toimintoja: Yrittäkää ladata, lukea tai poistaa tiedostoja, joiden käytäntöjen pitäisi estää toiminto.
- Käyttäkää Supabase-asiakasohjelmaa: Tehkää API-kutsuja
supabase-js-kirjastolla tai muilla asiakasohjelmakirjastoilla ja tarkkailkaa vastauksia (esimerkiksi odottamalla 403 Forbidden -virheitä).
Varmistakaa aina ennen tuotantoon viemistä, että käytännöt toimivat tarkoitetulla tavalla.
Käytäntöjen pikakertaus
Olette oppineet luomaan erilaisia Storage-käytäntöjä. Mikä seuraavista ehdoista sallisi todennetun käyttäjän lisätä tiedoston private-docs-nimiseen bucketiin vain, jos tiedosto sijoitetaan hänen käyttäjätunnustaan vastaavaan kansioon?
Kertaus: Storage-käytännöt
Hienoa työtä! Olette oppineet suojaamaan Supabase Storagen käytännöillä. Käsittelimme seuraavat aiheet:
- RLS:n merkitys Storage-bucketeille.
- Käytäntöjen luominen eri toiminnoille (luku, lisäys, poisto).
auth.uid()- japath_tokens-arvojen käyttäminen tarkkaan hallintaan.storage.objects-taulun ymmärtäminen.
Vahvojen Storage-käytäntöjen toteuttaminen on ratkaisevan tärkeää sovelluksenne tiedostonhallinnan turvallisuuden ja eheyden kannalta.
Opi Supabase backend palveluna tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 11
- Oppitunnit
- 40
Usein kysytyt kysymykset
Onko oppitunti ”Käytön hallinta käytännöillä” ilmainen?
Kyllä – oppitunnin ”Käytön hallinta käytännöillä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Supabase backend palveluna-kurssin, päivitä CoddyKit PROhon. Supabase backend palveluna-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Käytön hallinta käytännöillä”?
Toteuta tiedostoillesi hienojakoinen käyttöoikeuksien hallinta Supabase Storagen käytäntöjen avulla ja varmista tietoturva. Harjoittelet Supabase backend palveluna-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Supabase backend palveluna-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Supabase backend palveluna-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Käytön hallinta käytännöillä”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Supabase backend palveluna-oppitunnilla?
Kyllä. Jokainen Supabase backend palveluna-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Tiedostojen tallentaminen Supabase-säilöihin
- Käytön hallinta käytännöillä
- Mediasisällön lataaminen ja hakeminen
- Kuvamuunnokset ja allekirjoitetut URL-osoitteet