Secured Data Catalogue and Internal Portal
A DDI/NADA metadata catalogue hardened for restricted microdata, a tested library module, and server upgrades rehearsed on a full replica with scripted rollback.
- Role
- Administrator, integrator and developer
- Period
- 2026, ongoing
- Status
- In development
- Context
- Internal portal of the Financial Control Directorate · not exposed to the internet
Engineering figures
- 4access profiles, from visitor to administrator
- 17 / 0upgrade checks passed / failed on the production run
- 431database files copied and verified by SHA-256 before the upgrade
- 87 + 26module tests without and with the database, all green
- 76CHECK constraints in the module schema
- 360cases in the module's access matrix
Engineering figures describe the system, not its business findings, which remain confidential.
01Executive summary
The procurement microdata contains named individuals, so its catalogue had to do more than display metadata. I administer and extend an internal portal built on the World Bank's NADA catalogue and Metadata Editor: French localisation, four access profiles with restricted files, security fixes found by testing, and a library and media module developed with automated tests.
Every change is applied by a script that can verify, apply and restore, and is rehearsed on a replica before reaching the workstation. The same discipline was used to upgrade PHP, Apache and an end-of-support MySQL 8.0 to 8.4 LTS without a single failed check.
02Pipeline and processing
- Localisation and fixes delivered as an idempotent patch script with verify and restore modes; originals backed up, second run without effect, restoration identical to the byte.
- Upgrade of PHP 8.4.10 to 8.4.27, Apache 2.4.63 to 2.4.69 and MySQL 8.0.42 to 8.4.13: pre-check, full rehearsal on a copy on separate ports, apply script with simulation, then a non-regression suite.
- Library module: schema migrations, an access matrix of 360 cases, 87 tests without database and 26 with the database, delivered through a pull request with a SHA-256 manifest recomputed on the main branch.
- Next step in progress: read API and consultation pages for the module.
03Security and governance
- Access tiers: metadata readable by all; documents for signed-in accounts; restricted microdata and the nominative dictionary for authorised accounts; technical exports and the API for administrators only.
- Testing with a standard account revealed that the software's default 'user' role was flagged as administrator, which opened restricted files and parts of the administrative API; access checks were rewired on the site-administration rule.
- Storage moved outside the web root, direct file URLs returning 404, open registration closed, login attempts capped per account, production mode enabled, firewall rules on database and web ports.
- Secrets stored outside the code and read through a single helper; legal pages in French and English with traced acceptance at first sign-in.
04Technology stack
- NADA 5.4
- World Bank Metadata Editor
- PHP 8.4
- MySQL 8.4
- Apache 2.4
- Python
- JavaScript
- Git / GitHub
05Engineering decisions
-
Rehearse every change on a replica
- Choice
- Copy of the application on separate ports, same configuration byte for byte.
- Why
- An in-place MySQL major upgrade has no rollback other than the data copy; the rehearsal is the safety net.
-
Scripts, not manual edits
- Choice
- Verify, apply and restore modes for every patch of third-party code.
- Why
- Third-party software gets reinstalled; a replayable script turns a fragile customisation into a maintainable one.
06Technical challenges
- A regression reintroduced old files over earlier security fixes; it was caught by the non-regression suite and the fixes were reapplied by script.
- The desktop application rewrites parts of the web server configuration at start-up, so network closure had to rely on firewall rules rather than configuration files.
- A PHP extension loaded in production but not in the rehearsal copy because its DLL path came from the launcher; the rehearsal was corrected to mirror production exactly.
07Limitations
- Single-workstation hosting; a server of the directorate is required before wider access.
- Data-protection formalities with the national authority are pending the directorate's decision.