Introduktion till RLS-policyer
Förstå grunderna i Row-Level Security, dess fördelar och hur det skiljer sig från traditionell auktorisering på applikationsnivå
Introduktion till RLS-policyer är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 1 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Vad är radnivåsäkerhet?
Välkommen till radnivåsäkerhetens (RLS) värld! RLS är en kraftfull databasfunktion som låter dig styra vilka enskilda rader en användare får åtkomst till i en tabell.
Se det som en dörrvakt för varje rad i databasen, som avgör vem som får se eller interagera med den utifrån regler du definierar. Detta är viktigt när du bygger säkra applikationer där olika användare behöver olika datavyer.
Autentisering på appnivå jämfört med databasnivå
Traditionellt filtrerar applikationer data efter att den har hämtats från databasen. Det innebär att all data hämtas och att appen sedan avgör vad som ska visas för användaren.
Med Row-Level Security (RLS) sker filtreringen direkt i databasen. Databasen avgör själv vilka rader en användare över huvud taget får se eller ändra innan de skickas till applikationen.
RLS-fördelen: djupare säkerhet
Föreställ dig en app där användare bara får se sina egna inlägg. Utan RLS skulle ett fel i applikationens filtreringslogik kunna råka exponera en annan användares privata data.
RLS förhindrar detta genom att upprätthålla åtkomstregler på den lägsta nivån – i själva databasen. Även om det finns ett fel i applikationslagret skickar databasen inte obehöriga data, vilket ger ett viktigt extra försvarslager.
Så fungerar RLS (koncept)
När RLS är aktiverat för en tabell kontrolleras varje fråga mot definierade policyer. Dessa policyer fungerar som säkerhetsvakter som granskar varje rad.
Om en rad inte uppfyller policyvillkoren för den aktuella användaren returneras den helt enkelt inte. Detta gäller för operationerna SELECT, INSERT, UPDATE och DELETE, vilket säkerställer en konsekvent åtkomstkontroll.
Aktivera RLS i Supabase
Innan du kan definiera RLS-policyer måste du aktivera RLS för den specifika tabell du vill skydda. Detta görs med ett enkelt SQL-kommando.
Anta att du har en tabell som heter posts. Du aktiverar RLS så här:
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Viktigt: När RLS har aktiverats kan ingen komma åt tabellen förrän du har skapat en policy som uttryckligen tillåter det!
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;Vad är RLS-policyer?
En RLS-policy är en uppsättning regler som avgör vilka åtgärder en användare får utföra på specifika rader i en tabell. Du definierar dessa policyer med SQL.
- Roller: Anger vilka databasroller policyn gäller för (t.ex. 'authenticated' och 'anon').
- Operationer: Definierar vilken typ av databasoperation den påverkar (
SELECT,INSERT,UPDATE,DELETEellerALL). - Villkor: Anger vilka kriterier en rad måste uppfylla (t.ex.
user_id = auth.uid()).
Ett enkelt exempel på en RLS-policy
Här är ett exempel på en policy som gör att autentiserade användare bara får visa rader i tabellen posts där deras användar-ID matchar inläggets author_id.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);auth.uid() är en särskild Supabase-funktion som returnerar ID:t för den aktuella autentiserade användaren.
CREATE POLICY "Users can view their own posts" ON posts
FOR SELECT
TO authenticated
USING (auth.uid() = author_id);Viktiga fördelar med RLS
RLS ger flera tydliga fördelar för dina applikationer:
- Förbättrad säkerhet: Förhindrar obehörig åtkomst till data direkt på databasnivå.
- Enklare applikationslogik: Minskar behovet av komplex och upprepad filtreringskod i appen.
- Konsekvent tillämpning: Reglerna gäller enhetligt för alla frågor, oavsett klient eller verktyg.
- Granskningsbarhet: Det blir enklare att granska och hantera åtkomstregler på en centraliserad plats (databasen).
RLS jämfört med databasvyer
Databasvyer kan begränsa åtkomsten till kolumner, medan RLS är utformat för dynamisk filtrering på radnivå utifrån den aktuella användarens kontext. De fyller olika syften:
- Vyer: Fördefinierade delmängder av data som är användbara för att förenkla komplexa frågor eller begränsa synligheten för kolumner. De ändras inte beroende på vem som ställer frågan.
- RLS: Filtrerar rader dynamiskt utifrån vem som ställer frågan, vilken roll personen har eller andra realtidsvillkor. Det handlar om 'vem som får se vilken rad' och fungerar som ett säkerhetslager.
RLS erbjuder en betydligt robustare och flexiblare lösning för säker åtkomst till användarspecifika data.
Kontrollera dina kunskaper
Testa dina kunskaper om kärnkonceptet radnivåsäkerhet.
RLS: Databasens dörrvakt
I den här lektionen introducerade vi radnivåsäkerhet (RLS) och förstod dess huvudsakliga syfte: att ge detaljerad åtkomstkontroll på databasnivå.
Du lärde dig att RLS filtrerar data vid källan, till skillnad från filtrering på applikationsnivå, samt hur du aktiverar det för en tabell. Vi berörde också hur man skapar grundläggande policyer och de betydande säkerhets- och arkitekturfördelar som RLS medför.
Härnäst går vi djupare in på hur du implementerar mer komplexa RLS-regler och villkor!
Lär dig Supabase som Backend as a Service med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 11
- Lektioner
- 40
Vanliga frågor
Är lektionen ”Introduktion till RLS-policyer” gratis?
Ja – hela texten till ”Introduktion till RLS-policyer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.
Vad lär jag mig i ”Introduktion till RLS-policyer”?
Förstå grunderna i Row-Level Security, dess fördelar och hur det skiljer sig från traditionell auktorisering på applikationsnivå Ni övar på Supabase som Backend as a Service med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Supabase som Backend as a Service?
Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 3.
Hur lång tid tar lektionen ”Introduktion till RLS-policyer”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Supabase som Backend as a Service-lektionen?
Ja. Varje Supabase som Backend as a Service-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till RLS-policyer
- Testning och felsökning av RLS
- Rollbaserad åtkomst med RLS och anpassade claims