Share this
GCP Security: Building data teams that don’t live in firefighting mode
Ronnie Bathoorn
on May 18, 2026 10:38
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.
%20(5)-1.png?width=1120&height=630&name=Blog%20Format%20(1120%20%C3%97%20630px)%20(5)-1.png)
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.

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.
Ronnie Bathoorn
Ronnie is Head of Development and Lead Developer at Crystalloids, where he has been building scalable cloud and analytics solutions for over 18 years.
With a background in Computer Science and a specialization in Machine Learning, Ronnie combines architectural vision with hands-on engineering expertise. He designs and builds...
Share this
- May 2026 (2)
- April 2026 (17)
- March 2026 (5)
- February 2026 (4)
- January 2026 (2)
- December 2025 (2)
- November 2025 (2)
- October 2025 (2)
- September 2025 (3)
- August 2025 (2)
- July 2025 (1)
- June 2025 (1)
- April 2025 (4)
- February 2025 (2)
- January 2025 (3)
- December 2024 (1)
- November 2024 (5)
- October 2024 (2)
- September 2024 (1)
- August 2024 (1)
- July 2024 (4)
- June 2024 (2)
- May 2024 (1)
- April 2024 (4)
- March 2024 (2)
- February 2024 (1)
- January 2024 (4)
- December 2023 (1)
- November 2023 (4)
- October 2023 (4)
- September 2023 (4)
- June 2023 (2)
- May 2023 (2)
- April 2023 (1)
- March 2023 (1)
- January 2023 (4)
- December 2022 (1)
- November 2022 (4)
- October 2022 (3)
- July 2022 (1)
- May 2022 (2)
- April 2022 (2)
- March 2022 (5)
- February 2022 (2)
- January 2022 (5)
- December 2021 (5)
- November 2021 (4)
- October 2021 (2)
- September 2021 (1)
- August 2021 (3)
- July 2021 (4)
- May 2021 (2)
- April 2021 (1)
- February 2021 (2)
- December 2020 (1)
- October 2020 (2)
- September 2020 (1)
- August 2020 (2)
- July 2020 (2)
- June 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- November 2019 (3)
- October 2019 (2)
- September 2019 (3)
- August 2019 (2)
- July 2019 (3)
- June 2019 (4)
- May 2019 (2)
- April 2019 (4)
- March 2019 (2)
- February 2019 (2)
- January 2019 (4)
- December 2018 (2)
- October 2018 (1)
- September 2018 (2)
- August 2018 (1)
- July 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (5)
- February 2018 (1)
- January 2018 (3)
- November 2017 (2)
- October 2017 (2)


%20(1).png?width=75&height=75&name=Contact%20Services%20(800%20x%20800%20px)%20(1).png)
