Beveiliging & betrouwbaarheid
Laatst bijgewerkt: 7 oktober 2026
In het kort
Je content staat in je eigen GitHub-repository; onze database bevat alleen de account- en workflowgegevens die nodig zijn om de dienst te laten draaien (precies opgelijst in de privacyverklaring). PullPress vraagt GitHub de kleinst mogelijke rechten waarmee redacteuren nog kunnen werken, en is zo ontworpen dat zelfs een volledige storing van PullPress je nooit buitensluit van je content of je website platlegt.
Je content blijft in je repository
Elke pagina, elk bericht en elke afbeelding die je team bewerkt, wordt gecommit in je eigen GitHub-repository via de GitHub App die je installeert. Concepten zijn branches; gepubliceerde wijzigingen zijn gemergede commits met volledige geschiedenis. Onze database bewaart account- en workflowgegevens — accounts, reviewstatussen, titels van wijzigingsverzoeken, reacties en ideeën, titels van items met hun zoek-embeddings, en een cache van titels en datums van items die lijsten sneller maakt — maar je pagina's en berichten zelf staan in Git.
Die architectuur is je sterkste garantie: je content krijgt versies via Git, wordt gehost door GitHub en is volledig overdraagbaar. Stop morgen met PullPress en je houdt alles, met geschiedenis.
Inloggen en toegangsbeheer
Redacteuren loggen in met magische links die maar één keer en kort geldig zijn, verstuurd naar hun e-mail — er zijn geen wachtwoorden die kunnen uitlekken, hergebruikt of geraden worden, en het aantal aanvragen voor links is beperkt per client en per adres. Een nieuwe genodigde krijgt in de uitnodiging een persoonlijke inloglink: één keer bruikbaar, 7 dagen geldig, alleen als hash bewaard, gebonden aan dat ene account en ongeldig zodra die persoon ingelogd is; de link opent alleen een pagina, zodat mailscanners hem niet kunnen opgebruiken. Wie al een account heeft, wordt nooit via een uitnodiging ingelogd — die aanvaardt ze zelf. Dezelfde mail bevat een code van zes cijfers om op een ander toestel in te loggen: 10 minuten geldig, één keer bruikbaar, alleen als hash bewaard en ongeldig na vijf foute pogingen. Een sessie blijft 30 dagen na het laatste gebruik geldig. Schrijvers hebben nooit een GitHub-account nodig.
Toegang is gelaagd: rollen in de werkruimte (eigenaar, beheerder, lid), rollen per site (redacteur, goedkeurder, lezer) en optionele beperkingen per collectie, zodat een schrijver alleen ziet waar die aan mag komen. Toegang tot een site vereist altijd lidmaatschap van de werkruimte waartoe de site behoort, dus wie je uit een werkruimte verwijdert, verliest overal daarin de toegang, en alleen eigenaars kunnen eigenaarschap geven of afnemen. Elke toegang tot gegevens loopt op de server via één centraal controlepunt dat werkruimtes van elkaar scheidt, zodat de ene werkruimte nooit de sites of installaties van een andere kan lezen.
AI-agents koppelen via het Model Context Protocol met OAuth 2.1 met PKCE en kortlevende, roterende tokens — een refresh token die opnieuw gebruikt wordt nadat hij vervangen is, trekt de hele koppeling in (één nieuwe netwerkpoging binnen 30 seconden wordt getolereerd) — of met persoonlijke API-tokens die na 30 dagen, 90 dagen of een jaar verlopen (jij kiest) en alleen als hash bewaard worden. Elke koppeling heeft scopes (lezen, schrijven, goedkeuren en inplannen) die op het toestemmingsscherm getoond worden naast het exacte adres waarnaar de app terugstuurt; onbekende apps worden als niet-geverifieerd gemarkeerd, en elke nieuwe koppeling wordt naar de eigenaar van het account gemaild. Een account verwijderen of een toestel registreren voor pushmeldingen kan nooit met het token van een assistent. Een agent gaat nooit verder dan de rol van de persoon voor wie hij werkt: zonder de scope goedkeuren-en-inplannen kan hij alleen concepten maken en indienen ter review, en alleen een agent die werkt voor een goedkeurder die die scope gaf, kan wijzigingen goedkeuren of inplannen.
Minimale rechten op GitHub
De PullPress GitHub App vraagt alleen wat de editor nodig heeft: lezen/schrijven op de inhoud van de repository en pull requests, metadata alleen lezen, en optioneel checks alleen lezen. Hij heeft bewust geen toegang tot Actions-workflows, zodat zelfs een gecompromitteerd account je CI/CD-pipeline niet via PullPress kan aanpassen. Op organisatieniveau leest hij alleen het lidmaatschap (alleen lezen), en enkel om — met de eigen GitHub-autorisatie van wie koppelt — na te gaan of die eigenaar van de organisatie is voor die een installatie uit een andere werkruimte mag verhuizen.
Toegang tot GitHub gebeurt met kortlevende installatietokens per aanvraag. Voor een installatie aan een werkruimte gekoppeld wordt, bevestigt GitHub zelf — via de eigen GitHub-autorisatie van wie koppelt — dat die persoon er toegang toe heeft, zodat niemand de repositories van iemand anders kan koppelen door een installatienummer te raden. Privésleutels en geheimen blijven in omgevingsvariabelen op de server en worden nooit naar de browser gestuurd. Commits staan op naam van de redacteur die ze maakte, zodat je Git-geschiedenis eerlijk blijft. Die controle gebruikt PKCE, de eenmalige GitHub-autorisatie wordt meteen daarna ingetrokken, en een beheerder krijgt elke 180 dagen de vraag ze opnieuw te bevestigen, zodat iemand die je GitHub-organisatie verliet niet ongemerkt via PullPress blijft publiceren.
Beveiliging van het platform
Al het verkeer is versleuteld onderweg (HTTPS). Limieten op het aantal aanvragen beschermen inloggen, opslaan, nakijken en uitnodigingen tegen misbruik. Haalt PullPress voor jou een URL op (linkcontroles, de sitemap van je live site, webhooks voor meldingen), dan praat het alleen met publieke internetadressen op standaardpoorten, zodat het niet op interne netwerken gericht kan worden. Eigen AI-sleutels worden versleuteld bewaard. Facturatie gebeurt via Stripe — wij bewaren een verwijzing naar het abonnement, nooit kaartgegevens.
Een kwetsbaarheid gevonden? Meld ze aan security@pullpress.app (ook vermeld in /.well-known/security.txt) en we reageren zo snel mogelijk. Geef ons redelijk de tijd om een probleem op te lossen voor je het openbaar maakt.
Betrouwbaarheid en uptime
Ons interne, niet-bindende doel is 99,9% beschikbaarheid per maand voor de gehoste dienst — dat is geen contractuele SLA, en de gebruiksvoorwaarden voorzien geen servicecredits. We publiceren een openbare statuspagina op /status — huidige status, uptime-geschiedenis over 90 dagen en incidenten, berekend uit onze eigen health checks — plus een live health-endpoint (/api/health) dat onafhankelijke uptimemonitors kunnen volgen.
Belangrijker dan welk cijfer ook is wat er gebeurt als het misloopt: PullPress staat naast je website, niet eronder. Je site wordt gebouwd en gehost vanuit je repository door je eigen pipeline — ligt PullPress ooit plat, dan blijft je live website gewoon draaien, blijft je content in GitHub en gaat er niets verloren; bewerken pauzeert gewoon tot we terug zijn.
Back-ups en bewaartermijnen
Content: beschermd door Git zelf — volledige versiegeschiedenis in je repository, bewaard op de infrastructuur van GitHub. Per ongeluk verwijderd of gewijzigd? Elke eerdere versie kun je terugzetten uit de geschiedenis, in de app, zonder git-commando's.
Account- en workflowgegevens: bewaard in een beheerde Postgres-database (Supabase) met dagelijkse back-ups; back-ups worden na maximaal 30 dagen overschreven. Accountgegevens bewaren we zolang je account bestaat en worden verwijderd als je je account (zelf, via je profiel) of je werkruimte verwijdert; je content blijft in je repository, onder jouw controle.
Waar je gegevens staan
Je content staat waar je GitHub-repository staat, onder je overeenkomst met GitHub. Onze database bevat de hierboven beschreven account- en workflowgegevens, in een beheerde Postgres-database in de EU (Supabase), met de app gehost op Netlify; analytics draaien alleen met toestemming, op de EU-cloud van PostHog.
Onze verwerkersovereenkomst (/dpa) geldt automatisch voor elke werkruimte, en de actuele lijst van subverwerkers met hun locatie staat op /subprocessors.
Heeft je organisatie specifieke eisen rond de locatie van gegevens of leveranciersbeoordeling (vragenlijsten, details over de verwerking), contacteer ons dan op security@pullpress.app — die beantwoorden hoort bij het werk, het is geen enterprise-upsell.