Introduksjon til RLS-policyer
Forstå grunnprinsippene for Row-Level Security, fordelene ved dette og hvordan det skiller seg fra tradisjonell autorisering på applikasjonsnivå
Introduksjon til RLS-policyer er en gratis leksjon i Supabase som backend som tjeneste på CoddyKit. Dette er leksjon 1 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Supabase som backend som tjeneste, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.
Hva er sikkerhet på radnivå?
Velkommen til verdenen av Row-Level Security (RLS)! RLS er en kraftig databasefunksjon som lar Dem kontrollere hvilke enkeltstående rader en bruker kan få tilgang til i en tabell.
Tenk på det som en dørvakt for hver rad i databasen, som avgjør hvem som får se eller samhandle med raden, basert på regler De definerer. Dette er avgjørende for å bygge sikre applikasjoner der ulike brukere trenger ulike datavisninger.
Autentisering på appnivå kontra databasenivå
Tradisjonelt filtrerer applikasjoner data etter at de er hentet fra databasen. Det betyr at alle data hentes, og deretter bestemmer appen hva som skal vises til en bruker.
Med Row-Level Security (RLS) skjer filtreringen direkte i databasen. Selve databasen avgjør hvilke rader en bruker i det hele tatt kan se eller endre, før de sendes til applikasjonen.
Fordelen med RLS: Bedre sikkerhet
Se for Dem en app der brukere bare kan se sine egne innlegg. Uten RLS kan en feil i applikasjonens filtreringslogikk føre til at en annen brukers private data blir eksponert ved et uhell.
RLS forhindrer dette ved å håndheve tilgangsreglene på laveste nivå – i selve databasen. Selv om applikasjonslaget har en feil, vil databasen ikke sende uautoriserte data, noe som gir et viktig ekstra forsvarslag.
Slik fungerer RLS (konsept)
Når RLS er aktivert for en tabell, kontrolleres alle spørringer mot tabellen automatisk opp mot definerte policyer. Disse policyene fungerer som sikkerhetsvakter som kontrollerer hver rad.
Hvis en rad ikke oppfyller policyens betingelser for den aktuelle brukeren, returneres den ganske enkelt ikke. Dette gjelder for operasjonene SELECT, INSERT, UPDATE og DELETE, slik at tilgangskontrollen blir konsekvent.
Aktivere RLS i Supabase
Før De kan definere RLS-policyer, må De aktivere RLS på den bestemte tabellen De vil beskytte. Dette gjør De med en enkel SQL-kommando.
La oss si at De har en posts-tabell. De aktiverer RLS slik:
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Viktig: Når RLS er aktivert, kan ingen få tilgang til tabellen før De oppretter en policy som uttrykkelig tillater det!
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Hva er RLS-policyer?
En RLS-policy er et sett med regler som bestemmer hvilke handlinger en bruker kan utføre på bestemte rader i en tabell. De definerer disse policyene ved hjelp av SQL.
- Roller: Angi hvilke databaseroller policyen gjelder for (for eksempel «authenticated» og «anon»).
- Operasjoner: Definerer hvilken type databaseoperasjon den påvirker (
SELECT,INSERT,UPDATE,DELETEellerALL). - Betingelser: Angir kriteriene en rad må oppfylle (for eksempel
user_id = auth.uid()).
Et enkelt eksempel på en RLS-policy
Her er et eksempel på en policy som lar autentiserte brukere bare se rader i posts-tabellen der bruker-ID-en deres samsvarer med author_id for innlegget.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);auth.uid() er en spesiell Supabase-funksjon som returnerer ID-en til den nåværende autentiserte brukeren.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);Viktige fordeler med RLS
Row-Level Security gir flere betydelige fordeler for applikasjonene Deres:
- Bedre sikkerhet: Forhindrer uautorisert datatilgang direkte på databasenivå.
- Enklere applikasjonslogikk: Reduserer behovet for kompleks og gjentakende filtreringskode i appen.
- Konsekvent håndheving: Reglene gjelder likt for alle spørringer, uavhengig av klient eller verktøy.
- Mulighet for revisjon: Det blir enklere å gjennomgå og administrere tilgangsregler på ett sentralisert sted (databasen).
RLS kontra databasevisninger
Databasevisninger kan begrense tilgangen til kolonner, mens RLS er laget for dynamisk filtrering på radnivå basert på den aktuelle brukerens kontekst. De har ulike formål:
- Visninger: Forhåndsdefinerte delmengder av data, nyttige for å forenkle komplekse spørringer eller begrense hvilke kolonner som vises. De endres ikke basert på hvem som spør.
- RLS: Filtrerer rader dynamisk basert på hvem som spør, hvilken rolle brukeren har eller andre sanntidsbetingelser. Det handler om «hvem som kan se hvilken rad», og fungerer som et sikkerhetslag.
RLS gir en langt mer robust og fleksibel løsning for sikkerhet rundt brukerspesifikk datatilgang.
Kontroller forståelsen Deres
Test kunnskapene Deres om det grunnleggende konseptet Row-Level Security.
RLS: Databasens dørvakt
I denne leksjonen introduserte vi Row-Level Security (RLS) og så på hovedformålet: detaljert tilgangskontroll på databasenivå.
De lærte at RLS filtrerer data ved kilden, i motsetning til filtrering på applikasjonsnivå, og hvordan det aktiveres for en tabell. Vi var også innom hvordan man oppretter grunnleggende policyer, samt de betydelige sikkerhetsmessige og arkitektoniske fordelene RLS gir.
Deretter går vi dypere inn i implementering av mer komplekse RLS-regler og -betingelser!
Lær deg Supabase som backend som tjeneste med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 11
- Leksjoner
- 40
Ofte stilte spørsmål
Er leksjonen «Introduksjon til RLS-policyer» gratis?
Ja – hele teksten i «Introduksjon til RLS-policyer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Supabase som backend som tjeneste-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Supabase som backend som tjeneste inneholder totalt 3 leksjoner.
Hva lærer jeg i «Introduksjon til RLS-policyer»?
Forstå grunnprinsippene for Row-Level Security, fordelene ved dette og hvordan det skiller seg fra tradisjonell autorisering på applikasjonsnivå Du øver på Supabase som backend som tjeneste med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Supabase som backend som tjeneste?
Ingen tidligere erfaring er nødvendig. Supabase som backend som tjeneste på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 3.
Hvor lang tid tar leksjonen «Introduksjon til RLS-policyer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Supabase som backend som tjeneste-leksjonen?
Ja. Alle Supabase som backend som tjeneste-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Introduksjon til RLS-policyer
- Testing og feilsøking av RLS
- Rollebasert tilgang med RLS og egendefinerte claims