Naar inhoud
lightbulb Welkom op de nieuwe kennisbank | We hebben de docs volledig vernieuwd met meer dan 160 features. Bekijk wat nieuw isarrow_forward

Beveiligingsfilters instellen in AppSheet

Beveiligingsfilters in AppSheet bepalen per gebruiker welke rijen op het apparaat terechtkomen, zodat niemand data van een ander team of gevoelige records binnenhaalt.

Beveiligingsfilters instellen in AppSheet is een van de belangrijkste stappen om je app veilig te maken. Zonder filter haalt elke gebruiker alle data binnen, ook gegevens die niet voor hem of haar bedoeld zijn. Met een beveiligingsfilter beperk je per gebruiker welke rijen op het apparaat terechtkomen. In dit artikel leer je hoe dat werkt en hoe je het combineert met gebruikersrollen.

Wat doet een beveiligingsfilter?

Een beveiligingsfilter is een Ja of Nee-formule die AppSheet voor elke rij van een tabel evalueert. Levert de formule true op, dan komt de rij in de app. Levert hij false op, dan wordt de rij weggelaten. Het filter draait aan de serverkant, dus niet-toegestane rijen komen nooit op het apparaat van de gebruiker terecht. Dat is een wezenlijk verschil met alleen rijen verbergen in een weergave.

dangerous

Verbergen is geen beveiligen

Een rij verbergen in een weergave (bijvoorbeeld met Show If) is geen beveiliging. De data staat dan nog steeds op het apparaat en is met enige moeite te benaderen. Echte beveiliging regel je met een beveiligingsfilter, dat de data al aan de serverkant wegfiltert voordat die het apparaat bereikt.

Een beveiligingsfilter instellen

Beveiligingsfilter toevoegen

  1. Ga in de AppSheet-editor naar het tabblad Security.
  2. Open de sectie Security filters.
  3. Kies de tabel waarvoor je het filter wilt instellen.
  4. Schrijf een formule die true oplevert voor de rijen die de gebruiker mag zien.
  5. Gebruik USEREMAIL() om naar de ingelogde gebruiker te verwijzen.
  6. Sla op en test met verschillende accounts.

Een veelgebruikt filter laat een gebruiker alleen de eigen rijen zien. Je vergelijkt dan een eigenaar-kolom met USEREMAIL(), de functie die het mailadres van de ingelogde gebruiker teruggeeft:

USEREMAIL() = [Eigenaar]

Tip om het schrijven van zo'n rij vanzelf goed te laten gaan: zet bij de eigenaar-kolom de Initial value op USEREMAIL(). Nieuwe records krijgen dan automatisch het mailadres van de maker, zodat ze meteen onder het juiste filter vallen.

Filters efficient houden

Niet elke formule is even snel. AppSheet kan een filter op twee manieren uitvoeren: alle rijen ophalen en daarna filteren, of de database meteen om de juiste rijen vragen. Die tweede manier is veel sneller en wordt alleen gebruikt als je formule eenvoudig genoeg is.

lightbulb

Schrijf filters die de database kan vertalen

Houd een beveiligingsfilter zo simpel mogelijk: een directe vergelijking van een kolom met een waarde, of een AND() van zulke vergelijkingen. Vermijd zware functies of berekeningen in het filter zelf, want dan kan AppSheet de query niet aan de database delegeren en haalt het alsnog alle rijen op.

Filters combineren met rollen

Vaak wil je niet dat iedereen hetzelfde ziet. Een manager moet doorgaans meer kunnen dan een medewerker. Daarvoor combineer je USEREMAIL() met een rol. AppSheet kent hiervoor de functie USERROLE(), en voor fijnmazige rollen kun je een aparte gebruikerstabel met mailadres en rol bijhouden.

De rollen werken dan zo:

  • Admin: ziet alle rijen. In het filter bouw je een uitzondering zodat het true oplevert voor iedereen met de rol admin, ongeacht de eigenaar van de rij.
  • Gebruiker: ziet alleen de eigen rijen of die van het eigen team. Het filter vergelijkt de eigenaar of het team van de rij met de gegevens van de ingelogde gebruiker.

Een filter dat beide combineert ziet er bijvoorbeeld zo uit:

OR(USEREMAIL() = [Eigenaar], USERROLE() = "Admin")

Deze formule haalt een rij binnen als de eigenaar overeenkomt met de ingelogde gebruiker, of als die gebruiker de rol Admin heeft.

info

Beheer rollen centraal

Bewaar gebruikersrollen in een aparte tabel met het mailadres en de rol per persoon. In je beveiligingsfilters zoek je dan met een LOOKUP() de rol van de huidige gebruiker op. Zo beheer je toegang op één plek en hoef je bij een wijziging maar één rij aan te passen in plaats van elk filter los.

Waarom filters ook de prestaties helpen

Beveiligingsfilters maken je app niet alleen veiliger, maar vaak ook sneller. Doordat een gebruiker alleen de eigen rijen binnenhaalt in plaats van de hele dataset, is er minder data om te synchroniseren. Bij grote tabellen scheelt dat merkbaar in laadtijd en dataverbruik.

warning

Test altijd met meerdere accounts

Test beveiligingsfilters voordat je de app uitrolt. Een fout in een filter kan ervoor zorgen dat iemand niets ziet, of erger, dat iemand juist te veel ziet. Gebruik de previewfunctie waarmee je de app als een andere gebruiker bekijkt en controleer per rol of de juiste rijen verschijnen.

Veelgestelde vragen

Wat is het verschil tussen een beveiligingsfilter en Show If?

Een beveiligingsfilter werkt aan de serverkant en houdt data van het apparaat. Show If verbergt alleen iets in de weergave, terwijl de data nog op het apparaat staat. Voor echte beveiliging gebruik je altijd een beveiligingsfilter.

Vertraagt een beveiligingsfilter mijn app?

Meestal versnelt het juist, omdat er minder data wordt gesynchroniseerd. Wel moet de formule efficient zijn: een eenvoudige vergelijking van een kolom met een waarde laat AppSheet de database direct bevragen, zware berekeningen niet.

Kan een gebruiker het filter omzeilen?

Nee. Omdat het filter aan de serverkant draait, komen niet-toegestane rijen nooit op het apparaat. Dat maakt het een betrouwbare beveiligingslaag, in tegenstelling tot verbergen in de weergave.

Welke functie geeft de ingelogde gebruiker terug?

De functie USEREMAIL() geeft het mailadres van de ingelogde gebruiker. Daarmee bepaal je per rij of die voor de huidige gebruiker bedoeld is.

Hoe geef ik admins toegang tot alle rijen?

Combineer de eigenaar-check met een rolcheck, bijvoorbeeld OR(USEREMAIL() = [Eigenaar], USERROLE() = "Admin"). De rij komt dan binnen voor de eigenaar of voor iedere admin.

Werkt een beveiligingsfilter ook offline?

Ja. Het filter bepaalt welke rijen tijdens het synchroniseren op het apparaat komen. Daarna werkt de gebruiker offline alleen met die toegestane rijen, dus de beperking blijft ook zonder verbinding gelden.

Volgende stappen

Met beveiligingsfilters staat de basis van een veilige app. Combineer ze met een doordachte goedkeuringsworkflow zodat alleen de juiste mensen kunnen beslissen, en denk na over hoe je de app veilig uitrolt naar je team. Veiligheid is geen losse stap maar een laag die door je hele app loopt.