{"id":2840,"date":"2026-11-01T19:40:00","date_gmt":"2026-11-01T19:40:00","guid":{"rendered":"https:\/\/www.rajeshkumar.xyz\/blog\/?p=2840"},"modified":"2026-11-01T19:40:00","modified_gmt":"2026-11-01T19:40:00","slug":"datasecops-plain-language-working-engineers","status":"publish","type":"post","link":"https:\/\/www.rajeshkumar.xyz\/blog\/datasecops-plain-language-working-engineers\/","title":{"rendered":"DataSecOps in Plain Language for Working Engineers"},"content":{"rendered":"<p>Somewhere in your next all-hands, somebody senior will ask the question that ends meetings: &#8220;so is our data actually protected?&#8221; Most engineers shrug; a few will have read this piece and will answer with something better than a feeling. DataSecOps, in plain language, is the set of habits that turns that question from a mood into a number, and explaining it clearly is one of the cheapest credibility upgrades available to a working engineer today.<\/p>\n<h2>What DataSecOps Means Without the Marketing<\/h2>\n<p>Strip the branding and here is the factual core. The label was minted by Ben Herzberg of Satori Cyber, who published its definition on 4 August 2021: an agile approach that keeps security applied to data and to the people using it, even as both change weekly. It is vendor vocabulary \u2014 standards bodies have stayed away from it, while data security governance remains the designation the industry used long before \u2014  and the vendor&#8217;s independence ended when Commvault announced the purchase \u2014 dated 28 August 2025 and preliminarily valued near USD 28.3 million. Analysts, refusing the drama, file the tools as data security platforms. The practice underneath is unglamorous and precise: know where sensitive data lives, set access per row, per column, per query, enforce when the query lands, watch what leaves, and keep cancelling access that nobody defends.<\/p>\n<h2>The Loop, Explained Like a Deployment<\/h2>\n<p>If you have ever shipped software through a pipeline, you already understand this discipline \u2014 it is your own habits applied to a different artifact. Discovery is your inventory job, done once properly and refreshed forever after. Classification is code review for columns: scanners draft the labels (Google&#8217;s and Presidio&#8217;s tools are common), and a human confirms the IDENTIFIER and SENSITIVE ones, because no scanner is fully accurate. Policy-as-code is exactly what it sounds like \u2014 rules in a repository, tested and reviewed, never configured by clicks in a console where nobody can say who changed what or when. Enforcement happens at query time, not in a binder. Egress control watches exports, shares and clones, the three exits people forget are exits. Reading access history is your log review, and the quarterly pass that revokes stale grants is your garbage collection. Even the request flow mirrors engineering practice: an ask declares the dataset, why it is needed, until when; the owner merges it like a pull request; the grant ships with an expiry. Routine requests land the same day; odd ones require a ticket, a signed risk acceptance and a firm end date before anything ships.<\/p>\n<h2>Where DataSecOps Gets Surprised by the Engines<\/h2>\n<p>Working engineers deserve the footnote-level truth about platforms, because that is where credibility is won. On Snowflake, masking, row access and classification require Enterprise Edition or higher; a tag holds one masking policy per data type; and once a policy attaches, you cannot replace it \u2014 only edit its body with SET BODY. Copies and certain overwrite-style operations drop the tags entirely, so a &#8220;quick clone&#8221; can quietly create an unguarded copy. Snowflake&#8217;s ACCESS_HISTORY window spans 365 days, may trail events by three hours, and leaves out failed queries. BigQuery trades speed for safety: row-level rules switch off partition pruning, and a WRITE_TRUNCATE load discards policy tags. Databricks is rolling out ABAC tags through Unity Catalog with pieces still labelled Beta, while Lake Formation filters reads but lets writes through. PostgreSQL has offered row-level security since 9.5 \u2014 January 2016 \u2014 yet its own referential-integrity checks step around those rules, a covert channel the documentation admits. Ranger, in the Hadoop world, has done row filters and column masking since 0.6. None of this is disqualifying; all of it belongs in your runbook, ideally written by you before somebody discovers it live.<\/p>\n<h2>Three Claims to Challenge in Any Meeting<\/h2>\n<p>Reputation compounds fastest when you correct a wrong claim with evidence. Keep these three ready:<\/p>\n<ul>\n<li>&#8220;We hashed the emails, so it&#8217;s anonymous.&#8221; Wrong. A deterministic hash joins cleanly against any table hashed the same way, and small inputs can be guessed. That is pseudonymisation \u2014 and the EDPB&#8217;s draft guidance 01\/2025 says pseudonymisation alone will normally fall short.<\/li>\n<li>&#8220;It&#8217;s encrypted, so we&#8217;re covered.&#8221; Encryption at rest guards the disks; at query time data is plaintext by design. The real question is who can run which query against which column.<\/li>\n<li>&#8220;We bought the platform; we&#8217;re done.&#8221; Buying before classifying is the classic anti-pattern \u2014 you cannot size a product for data you have not found, and a proxy overlay is bypassed by direct connections, shares and clones whenever they skip it.<\/li>\n<\/ul>\n<p>Each correction takes thirty seconds and lands hard, because each one names the documented failure mode rather than an opinion. Precision, not volume, is what gets you invited back to the architecture conversation.<\/p>\n<h2>Making It Your Brand<\/h2>\n<p>Personal branding in engineering is just being reliably the person with the working answer, and this field hands you two reusable artefacts. First, four numbers worth knowing cold, from a worked example: coverage lands at 87.5% (1,085 of 1,240 sensitive columns); 17.1% of sensitive reads still touch plain text; over-exposure counts 212 principals out of 940, a rate of 22.6%; and dormancy shows 310 of 1,900 grants asleep for ninety days, the 16.3% revoke queue. Quote those in a review and you are instantly the most prepared person present. Second, the maturity ladder with its checkable exits: half of tier-1 covered earns the second rung; the third needs over ninety percent and no console-only policies left, anywhere; the top rung arrives when a fresh sensitive table sits under protection before its first access is ever granted \u2014 without exception. Mention that the discipline&#8217;s own reference lives at the <a href=\"https:\/\/www.xopsschool.com\/datasecops\/\">Ops Atlas DataSecOps page<\/a> and you have handed the room a source instead of an opinion.<\/p>\n<p>Readers chasing the deeper data-side skills will find the pipeline abilities that pair with this in our <a href=\"https:\/\/www.rajeshkumar.xyz\/blog\/speed-up-big-data-work-with-smart-skills-on-thedataops-org\/\">big-data skills walkthrough<\/a>; the deployment discipline this whole loop imitates is covered in our <a href=\"https:\/\/www.rajeshkumar.xyz\/blog\/how-devops-teams-reduce-deployment-failures-with-automation\/\">automation-driven failure reduction<\/a> piece; and the container habits that keep workloads inspectable are in our <a href=\"https:\/\/www.rajeshkumar.xyz\/blog\/containerization-guide-for-modern-software-delivery-teams\/\">containerisation guide<\/a>. One closing habit, offered the way a colleague would: next time the room goes quiet after the question, do not recite the definition. Name a number, name its owner, and name the date it gets better. That is the whole trick, and it works every time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The label decoded for engineers: the loop you already know from deployments, engine-level surprises, three claims to challenge, and numbers worth quoting.<\/p>\n","protected":false},"author":6,"featured_media":2841,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[736],"tags":[],"series":[],"class_list":["post-2840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-career-growth"],"_links":{"self":[{"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/posts\/2840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/comments?post=2840"}],"version-history":[{"count":1,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/posts\/2840\/revisions"}],"predecessor-version":[{"id":2873,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/posts\/2840\/revisions\/2873"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/media\/2841"}],"wp:attachment":[{"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/media?parent=2840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/categories?post=2840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/tags?post=2840"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/www.rajeshkumar.xyz\/blog\/wp-json\/wp\/v2\/series?post=2840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}