security

  • Retention split by class, on 900 million rows

    One table with two retention requirements, seven years apart, and no column distinguishing them. The technical work was a generated column and a backfill; the work that took…

  • A certificate inventory built by scanning ourselves

    An inventory of what is configured, compared against an inventory of what is actually listening. Scanning your own address space is a thing that feels excessive until it…

  • Anonymising rows that must be kept and must not identify

    Financial records retained for seven years, containing personal data that may not be retained that long. Keeping the postcode district and discarding the rest is the compromise that…

  • An ssh certificate authority, one year on

    A year of eight-hour certificates rather than an authorized_keys file, and the operational reality of it. The mid-incident expiry is the failure mode that theory does not predict,…

  • An internal certificate from a private authority, expiring

    A service-to-service certificate issued by an internal authority in 2022, with a three-year validity nobody had recorded. A certificate with a three-year validity is a reminder set three…

  • The backup that had to leave the building

    Every backup in one provider’s object storage, and a disaster recovery plan that assumes the disaster is local.

  • What we do not let it near, written down

    A scope decision recorded as a rule, because a rule can be reviewed and a feeling cannot. The list is short and it is the shape that matters…

  • Three suggestions that would have been vulnerabilities

    Six months of review findings, filtered to the ones with a security consequence. All three are patterns that appear constantly in public code, which is presumably why they…

  • The incident that was a certificate, again

    The third certificate incident in six years, each with a different cause. An expired certificate on a service nobody remembered was serving TLS.

  • The archive table nobody could delete from

    900 million rows, a retention policy, and a legal question nobody had asked. A table that grows forever because deleting from it might be illegal.