Supabase backend palveluna · Oppitunti

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.

Oppitunti 2/412 vaihetta

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()- ja path_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.

Aloita maksutta

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

  1. Tiedostojen tallentaminen Supabase-säilöihin
  2. Käytön hallinta käytännöillä
  3. Mediasisällön lataaminen ja hakeminen
  4. Kuvamuunnokset ja allekirjoitetut URL-osoitteet
← Takaisin: Supabase backend palveluna