Over the weekend, someone took control of the refrigeration systems in hundreds of French supermarkets and heated the fridges and freezers to as much as 50°C. Food was thrown out, some equipment caught fire, and shoppers found closed cold aisles on Monday morning. When I read the news, I was reminded of an old TV show that, in my opinion, got cybersecurity more right than many networks do today.
The Fall Of The Twelve Colonies
If you haven’t watched the reimagined Battlestar Galactica (the 2003 miniseries and the series that followed), go watch it. yes, there are spoilers ahead, but you’ve had over 20 years.
The Twelve Colonies built the Cylons, the Cylons rebelled, and after a war there was an armistice followed by 40 years of silence. The Colonial military then did what every organisation does after a long time without an incident: it decided that security was getting in the way. The fleet was networked, and a new Command Navigation Program was rolled out to every ship to make life easier for everyone.
That software had a back door. When the Cylons came back, they didn’t need to win a battle. They switched the fleet off, and the battlestars drifted helplessly while they were picked off one by one.
The exception was Galactica. It was the oldest battlestar in the fleet. It was about to be decommissioned and turned into a museum. Commander William Adama had fought in the first war, and he would not allow networked computers on his ship. His crew thought he was a dinosaur (corded phones and paper on a spaceship!), but Adama had seen the Cylons use networks against people before. When the attack came, there was nothing on Galactica for the Cylons to get into, and the museum piece was the only warship to survive.
The Temporary Exception
The writers did something clever at the start of season two. In “Scattered”, Galactica is separated from the fleet and has to calculate a jump faster than the isolated computers can manage. Adama has been shot; his executive officer, Colonel Tigh is in command, so Tigh orders the computers to be networked against Adama’s standing orders. The Cylons start hacking in almost straight away, and Gaeta’s firewall only just holds before he pulls the plug.
Everyone thinks they got away with it. They didn’t. A Cylon virus got in during that short window, sat quietly learning the ship, and came back in later episodes (“Valley of Darkness” and “Flight of the Phoenix”), where it very nearly handed Galactica to the enemy.
I’ve seen this situation plenty of times in real life. A developer, an engineer, or a consultant needs a temporary “allow” (or “allow all”) firewall rule just to get an application working. The work is finished, but nobody removes the rule. Three years later, nobody can explain why there isn’t one “allow” rule, but dozens of them. Does that sound familiar?
Back To France
Here’s what we actually know about the supermarket attack. On the night of 11 October, attackers took control of refrigeration controllers in hundreds of French stores and forced the fridges and freezers into defrost, heating them to as much as 50°C. Intermarché, Netto, Carrefour, Coopérative U, Monoprix, and E.Leclerc have all reported affected stores. Intermarché said that its affected stores threw away all of the products concerned; the Paris prosecutor has said that there were fires, and the head of Les Mousquetaires expects losses in the tens of millions of euros.
The device that was targeted is a Danfoss controller that runs all of the fridges and freezers in a store. Danfoss says that most of the affected units were older models that stopped getting security updates years ago, and that some of the current units that were hit were running out-of-date firmware. CERT-FR, part of the French national cyber security agency ANSSI, has told operators of these controllers to disconnect them or to tightly filter access to them, and pointed out that putting a management interface on the Internet goes against good practice.
What we don’t know is how the attackers got in. CERT-FR hasn’t said, Danfoss hasn’t said, and the Paris prosecutor’s investigation is still running. There is plenty of speculation online. What I will say is that devices that run something as important as a store’s cold chain, and that no longer get security fixes, are exactly the sort of thing that should be locked away from everything that has no business talking to them.
Isolation Doesn’t Mean Unplugging
I’m not going to tell you to rip out the network cards. Adama could do that on a warship; your business can’t. Supermarkets need contractors to look after refrigeration, and your workloads need to talk to users, to each other, and to partners. What Adama really did was refuse every connection that wasn’t essential to the mission, and that is the heart of zero trust. Microsoft boils it down to three principles:
- Verify explicitly
- Use least privilege access
- Assume breach
Put simply: isolate everything by default, using both the network and identity, and then open up only the communications that the business needs. Let’s look at how I do that in Azure.
Isolate With The Network
I’ve written about micro-segmentation in Azure networks before, explaining it as a submarine that seals off a flooded compartment so it can carry on with its mission. Galactica is the same idea on a sci-fi ship. The pattern that I deploy with customers goes like this:
- Every workload gets its own small virtual network, peered with the hub and nothing else. A compromised workload has no direct route to any other workload.
- All traffic between workloads, to and from on-premises, and to and from the Internet is routed through the firewall in the hub (Azure Firewall or a third-party NVA). I explained the routing in How Many Azure Route Tables Should I Have?
- The firewall denies everything that isn’t a documented flow.
- Every subnet has an NSG that restricts resource-to-resource traffic. Don’t forget to override AllowVnetInBound with an explicit deny, or your micro-segmentation is a fairy tale.
- Virtual machines don’t get public IP addresses, and Azure Policy stops anyone who tries. Admins connect through Azure Bastion or Microsoft Entra Private Access.
- Public network access is disabled on PaaS resources, such as Storage Accounts and Key Vaults, and Private Endpoints are used instead.
- Outbound Internet access is blocked by default, and only the FQDNs that a workload needs are allowed. That makes life much harder for an attacker who wants to talk to a command-and-control server or download their tools. Azure Firewall Premium adds IDPS and threat intelligence on top.
If you still think that a strong perimeter firewall is enough, then please read Why The Classic DMZ/Secure Zone Design Is Worthless in Azure.
Plenty of you also have devices like those refrigeration controllers: building management systems, HVAC, cameras, door access, or factory equipment. They can’t run security agents, and they often can’t be patched. Treat them the way Adama treated Galactica. Put them on their own network segment behind a firewall, block inbound access from the Internet, and if a contractor needs remote access, make them come through something that authenticates them first.
Isolate With Identity
The network decides what can connect. Identity decides who (or what) can do something once connected. You need both.
- Use Microsoft Entra ID for all administrative access, with MFA and device compliance enforced by Conditional Access. Get rid of local and shared admin accounts.
- Nobody should have standing admin rights. Use Privileged Identity Management so that admins are eligible for a role and activate it just in time, for a limited period, with approval for the sensitive roles.
- Contractors and managed service providers deserve extra attention. Give them guest accounts through access packages that expire, or use Azure Lighthouse with eligible authorisations so that the service provider doesn’t have permanent rights in your subscriptions. If their tenant gets compromised, you don’t want that to become your problem.
- Use managed identities for resource-to-resource authentication instead of secrets, and grant the smallest RBAC role at the smallest scope.
- Microsoft Entra Private Access can give a contractor access to one private application, subject to Conditional Access, instead of a VPN that drops them onto your network.
Only Open What The Business Needs
This is where most projects fall over. Isolation is easy to draw on a whiteboard and hard to live with, because every blocked connection turns into a ticket, and sooner or later somebody asks for “any/any, just for now”. That’s Colonel Tigh talking. Here’s what keeps it under control:
- Map the flows for each workload before it’s deployed: who talks to what, on which ports, and why.
- Every firewall and NSG rule has an owner and a business reason.
- Rules live in code (Bicep or Terraform) and change through pull requests. If it’s not in code, it shouldn’t be in Azure.
- Temporary access gets an expiry date.
- Rules are reviewed on a schedule, and if nobody can justify a rule, it goes.
- Everything is logged. VNet Flow Logs, Azure Firewall logs, and Entra ID sign-in logs should go into Microsoft Sentinel with alerting enabled. I like to think of every barrier as a string with a bell on it, but a bell is no use if nobody is listening for it.
So Say We All
Adama looked like a dinosaur right up until the day that it mattered. The rest of the fleet had picked convenience and lost almost everything in an afternoon. Make every connection in your network justify itself, give every identity only the access that it needs for as long as it needs it, and assume that something hostile is already looking for a way in. Some people will call that paranoid. Adama would have called it standing orders.





