Beveiliging in het kort

Wie het goedkeurde, tegen welke koers, op welke dag: vastgelegd, of iemand erom vraagt of niet.

Goedkeuringen, betaalstatus, wisselkoersen en rolwijzigingen worden door de server vastgelegd op het moment dat ze gebeuren, niet zes weken later gereconstrueerd uit een groepsapp.

Auditlog
Winter Beats
  • Uitgave goedgekeurd · €980,00
    A. Silva · 2 min geleden · boven drempel
  • Rol van lid gewijzigd · M. Lopes → Boekhouding
    A. Silva · 14 min geleden
  • Uitgave ingediend · $500 → €462,18 @ 0,9244
    J. Costa · 1 uur geleden
  • Budgetregel bewerkt · Productie +€2.000
    A. Silva · gisteren
Pijler 01 // Audittrail

Standaard een audittrail

Elke financiële wijziging draagt de persoon die hem maakte en het moment waarop. Het evenement aanmaken, een uitgave goedkeuren, een budgetregel verschuiven: alles komt in de eigen geschiedenis van dat evenement.


  • Wie en wanneer bij elke wijziging
  • Geschreven door de API, niet door de client
Pijler 02 // Toegang

Toegang op basis van rol

Een stagemanager die bonnen indient en een boekhouder die facturen als betaald markeert, hebben niet dezelfde rechten nodig. Vier rollen, en elk endpoint controleert die van de aanvrager voordat het iets doet.


  • Vier rollen, aan de serverkant gecontroleerd
  • Organisatieclaim in het token
Pijler 03 // Geschiedenis

Historische wisselkoersen bewaard

Een leverancier die in dollars factureert, houdt het dollarbedrag en de koers van de dag waarop je het invoerde. Een rapport maanden later toont wat de show kostte, niet wat hij kost volgens de koers van vandaag.


  • Wisselkoers opgeslagen bij invoer
  • Btw-behandeling per regel vastgelegd
Pijler 04 // Helderheid

Operationele helderheid

Budget, uitgaven, inkomsten en goedkeuringen staan op dezelfde gegevens, dus de marge die je in een rapport leest komt uit regels waarop je kunt klikken.


  • Budget, uitgaven en inkomsten samen
  • Exports uit dezelfde gegevens
Hoe een verzoek wordt gecontroleerd

Vier grenzen die elke schrijfactie passeert.

Dit zijn de lagen waar een verzoek doorheen gaat voordat het een getal kan wijzigen. Ze zijn in elke omgeving hetzelfde.

Grens 01Firebase Auth

Geauthenticeerde sessie

Firebase Auth stelt vast wie het vraagt. Inloggen kan met e-mail en Google-SSO.


  • E-mail en Google-SSO
  • Sessie vastgesteld voor al het andere
Grens 02Door de server uitgegeven

Organisatieclaim in het token

Een orgId-claim die de server uitgeeft, beperkt elke leesactie tot de gegevens van die organisatie. Alle records staan onder /orgs/{orgId}.


  • orgId-claim in het token
  • Alle records onder /orgs/{orgId}
Grens 03Per endpoint

Rechtencontrole aan de serverkant

Elk endpoint controleert de rol van de aanvrager voordat het iets doet. Een knop verbergen is geen controle; de controle op de server wel.


  • requireRole() voordat er iets gebeurt
  • Een verborgen knop is geen controle
Grens 04Afgedwongen door regels

Schrijfacties gaan via de API

De beveiligingsregels weigeren schrijfacties van de client, dus btw- en koersmomentopnames kunnen niet vanuit de browser worden vervalst.


  • Schrijfacties van de client geweigerd
  • Momentopnames niet te vervalsen
Een uitgewerkt voorbeeld

Vier regels uit het record van één evenement.

Elke regel hier wordt door de server geschreven. De client kan geen auditregel of koersmomentopname maken.

Wat het record bewaart
Winter Beats · evenementgrootboek
  • Uitgave goedgekeurd · €980,00
    A. Silva · boven drempel · vastgelegd met wie en wanneer
  • Btw-tarief vastgelegd · Btw 23% opgeslagen op de regel
    Het tarief later hernoemen in de lijst verandert deze regel niet
  • Wisselkoers vastgelegd bij invoer · $500 → €462,18 @ 0,9244
    Opgeslagen op het record, nooit opnieuw berekend bij een rapport
  • Rol gewijzigd · M. Lopes → Boekhouding
    Claim aan de serverkant opnieuw uitgegeven; geldt vanaf de volgende tokenvernieuwing
Due diligence

Wat we op papier kunnen zetten.

De eerlijke versie van een beveiligingspagina: wat er vandaag is ingebouwd en waar je het zelf kunt controleren. Als iets er niet is, zeggen we dat gewoon.

OnderwerpStand van zakenZo controleer je het
GegevenslocatieFirebase (Google Cloud), europe-west1, België. Standaard alleen in de EU.Vermeld in ons privacybeleid, met de lijst van subverwerkers.
AVGVerzoeken om inzage, correctie, verwijdering en overdraagbaarheid worden ondersteund.Privacybeleid; mail ons om een recht uit te oefenen.
KaartgegevensCashbox slaat nooit kaartgegevens op. Stripe verwerkt betaalgegevens in zijn eigen PCI-conforme omgeving.Stripe staat op de lijst van subverwerkers.
Scheiding tussen organisatiesAfscherming per organisatie, afgedwongen door Firestore-beveiligingsregels op een claim die de server uitgeeft.De regels worden gedekt door een geautomatiseerde testsuite in de repository.
AudittrailFinanciële wijzigingen worden vastgelegd met wie en wanneer, aan de serverkant geschreven.Zichtbaar in het product, in de geschiedenis van elk evenement.
VerwerkersovereenkomstOp aanvraag beschikbaar; op maat bij het Enterprise-abonnement.Neem contact op en we sturen de actuele overeenkomst.
Formele certificeringCashbox is momenteel niet SOC 2- of ISO 27001-gecertificeerd. We zullen niet anders beweren.Vraag ons rechtstreeks naar de huidige plannen en planning.
Praktijk

Hoe evenemententeams dit inrichten.

Toegang en rechten

Alleen eigenaren komen bij de facturering. Eigenaren en directie kunnen uitnodigen. Geef de rest van het productieteam de rol eventmanager en je boekhouder de rol boekhouding.

Goedkeuringscontrole

Zet de drempel op het bedrag dat je wilt zien voordat het wordt uitgegeven. Alles tot en met dat bedrag wordt bij indienen goedgekeurd; alles daarboven wacht op een beoordelaar.

Bewijsstukken bij de gegevens

Voeg de factuur bij de uitgave als je die vastlegt. Hij blijft bij het record, achter dezelfde organisatiecontrole als al het andere, zodat afsluiten geen zoektocht door mailboxen wordt.

Controleerbaar bij het afsluiten

Exporteer uit dezelfde gegevens waar de goedkeuringen doorheen gingen. Je boekhouder krijgt de cijfers van het evenement met de geschiedenis erachter, geen spreadsheet die iemand heeft overgetypt.

De verwerkersovereenkomst nodig, of wil je beter kijken?

Vraag het en we sturen de actuele verwerkersovereenkomst, de lijst met subverwerkers of een uitleg van hoe rollen en goedkeuringen zijn ingericht.