Insights

GCP Security: Building data teams that don’t live in firefighting mode

Here is a pattern that plays out in data teams more often than anyone likes to admit: a pipeline breaks at 11pm, three people get notified (two of which are not sure why they were contacted), and nobody is exactly sure who owns the problem. Someone fixes it by doing roughly what they did the last time it broke, the ticket gets closed, and nothing changes for the future. That is not a security incident. That is a Tuesday.

GCP Security: Building data teams that don’t live in firefighting mode

Most data teams are not struggling because they lack tools. Google Cloud Platform (GCP) alone gives you IAM, Security Command Center, Dataplex, column-level security in BigQuery, org-level policies, and more. The tooling is genuinely good, but the problem is that good tooling applied to a poorly structured environment does not make the environment secure.

Nobody sets out to build a fragile security posture

Ask a data team why a particular access rule exists and half the time nobody knows. Maybe it was introduced during an incident two years ago. Maybe it came from another project. Maybe someone needed quick access to hit a deadline and nobody revisited it afterwards.

The complexity quietly builds up.

That BigQuery dataset accessible to the entire org? Someone had a deadline. The service account with broader permissions than it should have? Fixing the underlying cause felt like a bigger job than bumping the role. The system remembers every shortcut long after the deadline is forgotten.

This is where ownership matters. When it is clear who is responsible for access, definitions, and ongoing maintenance, decisions stay grounded in context. When ownership is unclear at the organisational level, security tooling fills the gap in the wrong direction: more complexity, not more effectiveness.

The access conversation teams keep avoiding

Principle of least privilege sounds obvious until you actually try to enforce it. Then it turns into a negotiation. Teams want broad access because it is faster. Engineers want service accounts that just work without filing a ticket every time a new permission is needed. Leadership wants security without friction, which is a reasonable thing to want and a genuinely hard thing to deliver.

The teams that get this right are not the ones with the strictest policies. They are the ones that made structural decisions early. The tooling to do this exists and is not exotic. The hard part is making the organisational decisions first: what counts as sensitive, who is accountable, which environments are production. Once those are settled, the implementation is the straightforward part. Without them, you are just adding locks to a building where nobody agrees on which rooms matter.

Access review is where this either holds or falls apart. Quarterly reviews that are treated as a genuine exercise, not a box to tick, make a real difference. When someone leaves or a project ends, permissions go with them. Teams that skip this step do not avoid the work. They just do it later, under pressure, after something has already gone wrong.

GCP Security: Building data teams that don’t live in firefighting mode

If nobody trusts the alerts, you have no alerts

Security Command Center is a capable platform. It will surface findings across your entire GCP footprint: misconfigurations, exposed data, anomalous access patterns, actual threats. Teams that implement it without configuring it properly get the same experience every time: an overwhelming volume of findings, most of which feel irrelevant, and a gradual collective decision to stop paying attention to the alerts.

The fix is not complicated but it requires time nobody wants to spend:

  • Understand the severity tiers.
  • Suppress findings that are not actionable in your specific environment.
  • Route alerts to people who have the context to evaluate them (not a shared inbox that everyone monitors and nobody owns).
  • Treat calibration as ongoing work, not a one-time setup task.

The goal is a team that trusts what its alerts are telling it, and has the structure to act on them.

The environment boundary that is worth defending

Hard separation between development and production is one of those decisions that feels like overhead until the moment it prevents a serious incident, at which point it feels like the smartest thing you ever did.

Not logical separation. Physical separation: different projects, different service accounts, different IAM policies, different billing accounts. Dev environments have loose permissions by design because experimentation requires flexibility. That is fine. What is not fine is when those environments can reach production data or services, which happens more often than it should because the boundary was never drawn clearly.

A cloud landing zone with a proper project hierarchy and org-level policies makes this separation the default rather than something that depends on individual engineers remembering to do the right thing. Organisation policies in GCP let you enforce constraints at the resource level regardless of what individual project owners configure, which means the guardrails hold even when teams are moving fast. A well-designed cloud foundation is where you build this properly, before the environment grows to the point where retrofitting is painful.

There is also a cost argument here that is easy to overlook. Clear environment separation forces teams to be explicit about what is actually running in production, which turns out to be useful information. The relationship between unclear ownership and unnecessary infrastructure costs on GCP is more direct than most teams expect until they sit down and look at their billing data with fresh eyes.

Retrofitting is hard. Staying in firefighting mode is harder.

Security is not a project with a finish line. But there is a meaningful difference between a team that is always reacting and one that has built enough structure to absorb problems without drama. If your environment is already complex, that does not mean starting over. It means being honest about where the gaps are and closing them in the right order.

Most teams are closer than they think. The structure does not have to be perfect to be significantly better than what firefighting mode costs you every week. That is the work we do with teams that are already deep in it and want to get the boring stuff right.