AVG vanaf het ontwerp, en elke toezegging getest

Een adres is een persoonsgegeven. Deze pagina geeft precies aan wat Addrova logt, opslaat en nooit bewaart. Elke bewering heeft een identificatie en is gekoppeld aan een geautomatiseerde test die bij elke codewijziging draait.

Technische documentatie bekijken

De zero-log-toezeggingen

In deze tabellen betekent „adres” elke invoer van de klant: vrije tekst, componenten, opgevraagde coördinaten, batchbestanden. De bron van waarheid is de zero-log-specificatie van de API, in het Frans; deze pagina vertaalt haar zonder de betekenis te wijzigen.

Versie van de specificatie van 2026-10-19

Wat wordt gelogd (uitputtende lijst)

IdBeweringGeautomatiseerde test
ZL-01Eén regel per HTTP-verzoek, met precies: methode, routesjabloon (/v1/geocode, nooit de echte URL of de querystring), status, duur, gepseudonimiseerde tenant, willekeurige verzoek-id. Geen IP-adres, geen user-agent, geen API-sleutel.api/tests/test_zerolog.py::test_access_log_exact_fields
ZL-02De enige andere berichten die de code van Addrova uitzendt, zijn die in de onderstaande inventaris; hun parameters zijn job-id’s, tellers, statussen of namen van uitzonderingstypen.api/tests/test_privacy_claims.py::test_log_inventory_matches_code
ZL-03De tenant wordt overal gepseudonimiseerd (logs, traces): 16 hexadecimale tekens van een gezouten SHA-256 van zijn identificatie; de identificatie in platte tekst verschijnt nooit.api/tests/test_observability.py::test_tenant_hash_is_stable_and_opaqueapi/tests/test_zerolog.py::test_access_log_exact_fields

Wat nooit wordt gelogd of getraceerd

IdBeweringGeautomatiseerde test
ZL-10Geen adres, geen opgevraagde coördinaat en geen API-sleutel verschijnt in de logs, op alle routes (geocodering, omgekeerd, autocomplete, reparatie, batch, Google- en Nominatim-compatibiliteit), ook niet bij fouten (engine uitgevallen, geweigerde invoer, ongeldige parameter, verkeerde sleutel, onbekende route).api/tests/test_zerolog.py::test_canary_never_logged
ZL-11Berichten van bibliotheken van derden worden geneutraliseerd: parameters gemaskeerd, querystring gewist, uitzondering teruggebracht tot haar type (zonder bericht en trace).api/tests/test_zerolog.py::test_third_party_logger_args_and_query_redacted
ZL-12Foutantwoorden geven noch de foutieve waarde noch het interne bericht van de engine terug.api/tests/test_api.py::test_geocode_invalid_paramsapi/tests/test_api.py::test_engine_errors_do_not_echo_query
ZL-13OpenTelemetry-traces bevatten alleen attributen van een toegestane lijst (methode, routesjabloon, status, gepseudonimiseerde tenant, engine-bewerking, land, aantal resultaten, nauwkeurigheid van het eerste resultaat), zonder gebeurtenissen; geen adres, geen coördinaat, geen sleutel en geen tenant-id in platte tekst.api/tests/test_observability.py::test_spans_carry_only_allowlisted_attributesapi/tests/test_observability.py::test_span_content
ZL-15Console: het e-mailadres, de magic-link-tokens en de sessietokens verschijnen in geen enkel log.api/tests/test_console.py::test_email_and_tokens_never_logged
ZL-16Openbare demo van de site (/demo/v1): noch het ingevoerde adres noch het IP-adres van de bezoeker verschijnt in de logs; het IP wordt nooit opgeslagen, alleen een HMAC-vingerafdruk met dagelijks wisselend geheim (onbruikbaar na rotatie) dient om verzoeken te tellen.api/tests/test_demo.py::test_demo_never_logs_address_or_ipapi/tests/test_demo.py::test_fingerprint_rotates_daily_and_hides_ipapi/tests/test_demo.py::test_redis_mode_shares_secret_and_counters
ZL-14Prometheus-metrics hebben alleen labels met begrensde waarden; een onbekend pad wordt geteld als <unmatched>.api/tests/test_observability.py::test_metrics_labels_are_boundedapi/tests/test_observability.py::test_spans_carry_only_allowlisted_attributes

Wat wordt opgeslagen, en hoe lang

IdBeweringGeautomatiseerde test
ZL-20API-sleutels worden alleen opgeslagen als SHA-256-vingerafdruk (plus 12 tekens voorvoegsel voor weergave).api/tests/test_tenancy_persistent.py::test_keys_are_hashed_and_revocable
ZL-21De database bevat geen verzoek en geen resultaat: alleen tenants, sleutels (vingerafdrukken) en gebruikstellers (tenant, dag, eindpunt, aantal).api/tests/test_privacy_claims.py::test_schema_has_no_content_columns
ZL-22Batch: het invoerbestand wordt verwijderd zodra de verwerking eindigt; het resultaat en de metadata van de job worden verwijderd aan het einde van de bewaartermijn (standaard 1 uur na afronding, configureerbaar) of onmiddellijk bij DELETE; een job die nooit is verwerkt, wordt na 24 uur opgeschoond.api/tests/test_batch.py::test_csv_roundtrip_usage_and_input_purgeapi/tests/test_batch.py::test_isolation_delete_and_expiryapi/tests/test_batch.py::test_result_purged_after_retention
ZL-23De metadata van een batchjob bevatten geen enkele regel van het bestand (tellers, datums, kolomnamen, standaardland).api/tests/test_privacy_claims.py::test_batch_metadata_has_no_row_content
ZL-25Console: het enige opgeslagen persoonsgegeven is het e-mailadres van het account (en dat van een lopende inloglink, 15 minuten geldig, eenmalig te gebruiken); link- en sessietokens worden alleen als SHA-256-vingerafdruk opgeslagen.api/tests/test_privacy_claims.py::test_schema_has_no_content_columnsapi/tests/test_console.py::test_link_is_single_use_and_logout
ZL-26Een organisatie ziet noch de sleutels noch het gebruik van een andere; een ingetrokken of verlopen (geroteerde) sleutel wordt geweigerd.api/tests/test_console.py::test_org_isolationapi/tests/test_console.py::test_keys_lifecycle_and_plan_limit
ZL-27Webhook aan het einde van een batch: de payload bevat alleen de identificatie, de status, de tellers en de links van de job, nooit een regel van het bestand of een adres; de URL en het geheim van de webhook worden nooit gelogd.api/tests/test_batch_stream.py::test_webhook_delivery_signed_without_addresses_and_retried
ZL-28Idempotentie (Idempotency-Key): alleen een SHA-256-vingerafdruk van het verzoek (en, bij een batch, de job-identificatie) wordt 24 uur bewaard, nooit het verzonden adres of het antwoord.api/tests/test_idempotency_versioning.py::test_idempotency_never_stores_addressapi/tests/test_idempotency_versioning.py::test_in_progress_conflict_and_stores_keep_no_content
ZL-29Geen niet-gedeclareerd uitgaand netwerkverkeer: in de namespace wordt standaard alles geweigerd; de website heeft geen uitgaand verkeer; de API bereikt alleen de cluster-DNS, haar databases (PostgreSQL, Redis), de interne OTel-collector en, voor webhooks, HTTPS naar het openbare internet (private, lokale en metadatabereiken uitgesloten). Geen analysetool van derden kan een verzoek ontvangen.api/tests/test_k8s_hardening.py::test_egress_is_limited_to_declared_flowsapi/tests/test_k8s_hardening.py::test_namespace_is_restricted_and_denies_by_default
ZL-24De batchjob van een klant is onzichtbaar voor andere klanten.api/tests/test_batch.py::test_isolation_delete_and_expiry

Wat (nog) niet bestaat

IdBeweringGeautomatiseerde test
ZL-30De asynchrone terugval van /v1/repair (LLM) is uitgeschakeld: geen externe aanroep, geen adres verlaat de dienst.api/tests/test_repair.py::test_repair_unrepairable_and_async_disabled
ZL-32In v0 wordt er niet echt een e-mail verzonden (in-memory postvak uit) en is er geen echte factureringsaanbieder gekoppeld (nepaanbieder).api/tests/test_privacy_claims.py::test_no_external_transport_by_default
ZL-31In v0 is er geen resultaatcache (de HMAC-cache met roterend geheim uit ADR 0005 is nog niet geïmplementeerd).api/tests/test_privacy_claims.py::test_no_result_cache_in_v0

Inventaris van logberichten

Dit zijn de enige berichten die de code uitzendt, in hun exacte formaat. Een test mislukt als de code en deze lijst uiteenlopen.

%s %s %d %.1fms tenant=%s rid=%s
job %s queued rows=%d
job %s %s rows=%d matched=%d
job %s failed: %s
engine loaded: %s
addrova_engine not installed, using the fake engine
usage flush failed: %s
index preloaded: %d bytes
webhook job %s attempt %d status %s
engine contract violation: candidate without source
engine failure: %s

Buiten het bereik van deze tests

Deze punten worden op een andere manier gecontroleerd, en dat zeggen we erbij:

  • Ingress / proxy: het toegangslog moet op de API-routes zijn uitgeschakeld (ADR 0004); infrastructuurconfiguratie, te controleren in infra/ en op het cluster.
  • Engine (addrova_engine): verbindt zich ertoe verzoeken niet te loggen (ADR 0002); de eigen tests controleren dat.
  • Export van traces: alleen als ADDROVA_OTLP_ENDPOINT is ingesteld, naar een collector gehost in de EU; zonder deze instelling verlaat geen trace het proces.
  • Opslag van batchbestanden: v0 op de lokale schijf van de container (rechten 0600); versleutelde EU-objectopslag gepland voor productie (ADR 0006, ADR 0009).

Omdat niets wordt bewaard, wordt niets hergebruikt

Addrova gebruikt uw verzoeken niet om modellen te trainen, datasets op te bouwen of de index te verrijken, en de code maakt dat concreet: zoekopdrachten en resultaten worden nooit gelogd (ZL-10), de database bevat geen verzoek en geen resultaat (ZL-21), batchbestanden worden na de verwerking verwijderd (ZL-22), er is geen resultaatcache (ZL-31) en er wordt geen adres naar een externe dienst gestuurd (ZL-30).

Nog niet toegezegd

  • Hosting uitsluitend in de EU: hostingaanbieder en regio zijn nog niet gepubliceerd. [À VÉRIFIER]
  • Subverwerkers en verwerkersovereenkomst (DPA): worden vóór de lancering gepubliceerd, met online ondertekening. [À VÉRIFIER]
  • Certificeringen: geen toegezegd. ISO 27001 staat gepland voor een latere fase.

Gegevensbronnen en licenties

We steunen op officiële open data onder open licenties (voor Frankrijk de Licence Ouverte 2.0). Elk API-antwoord bevat een lijst met bronvermeldingen. Data onder share-alike-licenties, zoals OpenStreetMap, staat in een aparte index en wordt nooit met de officiële index samengevoegd.

Vragen over compliance

Kan ik deze toezeggingen controleren?

Elke toezegging noemt de geautomatiseerde test die haar controleert. De tests draaien bij elke wijziging; een ervan mislukt als een genoemde test verdwijnt of als de loginventaris niet meer met de code overeenkomt. Toegang tot de testsuite voor audits moet nog worden bepaald. [À VÉRIFIER]

Loggen jullie mijn IP-adres?

De applicatie niet: het toegangslog bevat geen IP-adres, geen user-agent en geen API-sleutel (ZL-01). Ook bij de ingress ervoor moet het toegangslog zijn uitgeschakeld; dat is een infrastructuurinstelling en hierboven vermeld als buiten het bereik van de tests.

Hoe lang worden batchresultaten bewaard?

Standaard een uur na afronding, of tot u de job verwijdert (ZL-22). Het invoerbestand wordt verwijderd zodra de verwerking eindigt.