Johdatus RLS-käytäntöihin
Hahmota rivitason suojauksen (Row-Level Security) perusteet, sen hyödyt ja erot perinteiseen sovellustason valtuutukseen
Johdatus RLS-käytäntöihin on ilmainen Supabase backend palveluna-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. 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ä 3 oppituntia.
Mitä rivitason suojaus on?
Tervetuloa rivitason suojauksen (Row-Level Security, RLS) pariin! RLS on tehokas tietokantaominaisuus, jonka avulla voitte hallita, mitä yksittäisiä rivejä käyttäjä voi käyttää taulussa.
Ajatelkaa sitä tietokannan jokaisen rivin portsarina, joka päättää määrittelemienne sääntöjen perusteella, kuka saa nähdä rivin tai käsitellä sitä. Tämä on olennaista suojattujen sovellusten rakentamisessa, kun eri käyttäjät tarvitsevat erilaisia näkymiä tietoihin.
Sovellustason ja tietokantatason todennus
Perinteisesti sovellukset suodattavat tiedot sen jälkeen, kun ne on haettu tietokannasta. Tämä tarkoittaa, että kaikki tiedot haetaan ensin, minkä jälkeen sovellus päättää, mitä käyttäjälle näytetään.
Rivitason suojauksessa (RLS) suodatus tapahtuu suoraan tietokannassa. Tietokanta itse päättää, mitä rivejä käyttäjä voi edes nähdä tai muokata, ennen kuin tiedot lähetetään sovellukselle.
RLS:n etu: parempi tietoturva
Kuvitelkaa sovellus, jossa käyttäjät voivat nähdä vain omat julkaisunsa. Ilman RLS:ää sovelluksen suodatuslogiikan virhe voisi vahingossa paljastaa toisen käyttäjän yksityisiä tietoja.
RLS estää tämän valvomalla käyttöoikeussääntöjä alimmalla tasolla eli itse tietokannassa. Vaikka sovelluskerroksessa olisi virhe, tietokanta ei lähetä luvattomia tietoja, mikä tarjoaa tärkeän suojakerroksen.
Miten RLS toimii (periaate)
Kun RLS otetaan käyttöön taulussa, jokainen kyseiseen tauluun kohdistuva kysely tarkistetaan automaattisesti määritettyjä käytäntöjä vasten. Käytännöt toimivat kuin vartijat, jotka tarkastavat jokaisen rivin.
Jos rivi ei täytä nykyistä käyttäjää koskevia käytännön ehtoja, sitä ei yksinkertaisesti palauteta. Tämä koskee SELECT-, INSERT-, UPDATE- ja DELETE-toimintoja ja varmistaa yhdenmukaisen käyttöoikeuksien hallinnan.
RLS:n ottaminen käyttöön Supabasessa
Ennen kuin voitte määrittää RLS-käytäntöjä, RLS on otettava käyttöön suojattavassa taulussa. Tämä tehdään yksinkertaisella SQL-komennolla.
Oletetaan, että käytössänne on posts-taulu. Ottaisitte RLS:n käyttöön näin:
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Tärkeää: Kun RLS on otettu käyttöön, kukaan ei voi käyttää taulua, ennen kuin luotte käyttöoikeuden erikseen sallivan käytännön!
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Mitä RLS-käytännöt ovat?
RLS-käytäntö on sääntöjoukko, joka määrittää, mitä toimintoja käyttäjä voi suorittaa taulun tietyille riveille. Käytännöt määritetään SQL:n avulla.
- Roolit: Määrittävät, mitä tietokantaroolia käytäntö koskee (esimerkiksi 'authenticated' tai 'anon').
- Toiminnot: Määrittävät, mihin tietokantatoimintoon käytäntö vaikuttaa (
SELECT,INSERT,UPDATE,DELETEtaiALL). - Ehdot: Asettavat kriteerit, jotka rivin on täytettävä (esimerkiksi
user_id = auth.uid()).
Yksinkertainen esimerkki RLS-käytännöstä
Tässä on esimerkki käytännöstä, joka sallii todennettujen käyttäjien nähdä posts-taulussa vain rivit, joiden author_id vastaa heidän käyttäjätunnustaan.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);auth.uid() on erityinen Supabase-funktio, joka palauttaa nykyisen todennetun käyttäjän tunnuksen.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);RLS:n keskeiset edut
Rivitason suojaus tarjoaa sovelluksillenne useita merkittäviä etuja:
- Parempi tietoturva: Estää luvattoman tietojen käytön suoraan tietokantatasolla.
- Yksinkertaisempi sovelluslogiikka: Vähentää monimutkaisen ja toistuvan suodatuskoodin tarvetta sovelluksessa.
- Yhdenmukainen valvonta: Säännöt koskevat kaikkia kyselyitä samalla tavalla asiakasohjelmasta tai työkalusta riippumatta.
- Auditoitavuus: Käyttöoikeussääntöjä on helpompi tarkastella ja hallita yhdessä keskitetysti sijaitsevassa paikassa (tietokannassa).
RLS ja tietokantanäkymät
Tietokantanäkymät voivat rajoittaa sarakkeiden käyttöä, kun taas RLS on tarkoitettu dynaamiseen rivitason suodatukseen nykyisen käyttäjän kontekstin perusteella. Niillä on eri käyttötarkoitukset:
- Näkymät: Ennalta määritettyjä tietojen osajoukkoja, joista on hyötyä monimutkaisten kyselyiden yksinkertaistamisessa tai sarakkeiden näkyvyyden rajoittamisessa. Ne eivät muutu kyselyn suorittajan perusteella.
- RLS: Suodattaa rivejä dynaamisesti kyselyn suorittajan, hänen roolinsa tai muiden reaaliaikaisten ehtojen perusteella. Se ratkaisee kysymyksen ”kuka saa nähdä minkäkin rivin” ja toimii tietoturvakerroksena.
RLS tarjoaa paljon vankemman ja joustavamman ratkaisun käyttäjäkohtaisen tietojen käytön suojaamiseen.
Testatkaa ymmärryksenne
Testatkaa tietonne rivitason suojauksen perusperiaatteesta.
RLS: tietokantanne portsari
Tässä oppitunnissa tutustuimme rivitason suojaukseen (RLS) ja ymmärsimme sen keskeisen tarkoituksen: tarkkarajaisen käyttöoikeuksien hallinnan tietokantatasolla.
Opitte, että RLS suodattaa tiedot lähteessä toisin kuin sovellustason suodatus, sekä sen, miten RLS otetaan käyttöön taulussa. Tutustuimme myös peruskäytäntöjen luomiseen ja RLS:n merkittäviin tietoturva- ja arkkitehtuurietuihin.
Seuraavaksi perehdymme monimutkaisempien RLS-sääntöjen ja -ehtojen toteuttamiseen!
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 ”Johdatus RLS-käytäntöihin” ilmainen?
Kyllä – oppitunnin ”Johdatus RLS-käytäntöihin” 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ä 3 oppituntia.
Mitä opin oppitunnilla ”Johdatus RLS-käytäntöihin”?
Hahmota rivitason suojauksen (Row-Level Security) perusteet, sen hyödyt ja erot perinteiseen sovellustason valtuutukseen 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 1/3.
Kuinka kauan ”Johdatus RLS-käytäntöihin”-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
- Johdatus RLS-käytäntöihin
- RLS:n testaaminen ja virheenkorjaus
- Roolipohjainen käyttöoikeuksien hallinta RLS:n ja omien claimien avulla