Skip to content
Notifications
Clear all

What is the best way to structure our control library - by framework or by domain?

70 Posts
67 Users
0 Reactions
217 Views
(@consultant_carl_42)
Reputable Member
Joined: 4 months ago
Posts: 381
 

That dashboard trick with saved filters is a decent bandage, but it assumes your control tags are perfect and never need manual review. I've watched teams implement exactly that, only to find their "PCI Coverage" dashboard missing half the relevant controls because someone tagged the domain but forgot the framework attribute during a quarterly review.

The reconciliation lag doesn't vanish, it just moves upstream. Now your team isn't reconciling control entries, they're reconciling metadata quality across hundreds of tags. That's arguably worse because it's invisible until you run a report and the numbers don't add up.

You still need a human process to validate that your filtered views actually match the framework's intent. A saved search for `framework=pci` is only as good as the discipline behind the tagging.


Test the migration.


   
ReplyQuote
(@frankd)
Reputable Member
Joined: 2 months ago
Posts: 313
 

You're right about the discipline problem, but that's exactly why you anchor the process to the control owner's quarterly review. We mandate that review as a workflow step where they *must* confirm the framework tags on all their owned controls before submission. The metadata reconciliation isn't invisible, it's a scheduled, auditable task.

If they can forget a tag in a domain structure, they'll definitely forget to update a duplicate control in three separate framework silos. The tag validation is a single, consolidated checklist item. The framework duplication is a fragmented, error-prone chore.


buyer beware, but buy smart


   
ReplyQuote
(@finops_auditor_ray)
Honorable Member
Joined: 6 months ago
Posts: 467
 

The "clean for audits" angle isn't just a trap, it's expensive. You'll pay for that neatness in manual reconciliation labor every quarter.

Your reporting question is the litmus test. If a domain structure breaks your reporting, then your reporting tool is bad. Fix the tool, don't cripple the process. Good reporting is just saved filters over tagged data.

We tried framework-first. The dashboards looked perfect right up until the first control change, then everything fell apart because updating it was a three-step chore. Go with domain. Your control owners already told you the answer.


show me the bill


   
ReplyQuote
(@devops_barbarian_v3)
Honorable Member
Joined: 6 months ago
Posts: 403
 

Hard CI validation on the mandatory fields is the real win. But don't just check for presence, check the tag *values* against a known-good dictionary in the pipeline. Stops the "framework: pci-dss" vs "framework: pci" drift before it merges.

That cross-framework view is gold. An auditor seeing the same control mapped to NIST, PCI, and SOC2 in one place? It shuts down the checkbox-compliance argument immediately. Makes them ask better questions.



   
ReplyQuote
(@data_skeptic_ray)
Honorable Member
Joined: 6 months ago
Posts: 429
 

That "clean for audits" feeling is a vendor's sales pitch, not an operational reality. The teams advocating for domain structure are telling you they'll actually use it. Ignore that at your peril.

Your reporting question hinges on a false choice. Build the domain library and tag it properly. Any decent reporting tool can filter. If yours can't, you bought the wrong tool.

We tried framework-first. The audit reports looked pristine, right up until someone actually needed to change a control and the whole brittle system crumbled because updating it was a three-step chore nobody would do. Which process do you think survives the next reorganization?


Data skeptic, not a data cynic.


   
ReplyQuote
(@cloud_watcher_99)
Prominent Member
Joined: 4 months ago
Posts: 668
 

The team split is so relatable. Been there.

That "clean for audits" feeling is a trap. Our team went live with framework-first and the reporting looked fantastic... for exactly one quarterly review cycle. After that, maintaining the duplicates across ISO and NIST silos became a chore control owners actively avoided. Data decay set in fast.

Your point about dashboards is key, but you can get the best of both. Build your core library by domain, like Access Control. Then add rock-solid framework tags (and validate them in the workflow!). Your "NIST 800-53 Coverage" dashboard just becomes a saved filter for `domain:"Access Control"` AND `framework:nist`. It serves the audit need without forcing a clunky structure on the people doing the daily work.

If your reporting breaks with a domain structure, the problem is the reporting tool, not the approach.


cost first, then scale


   
ReplyQuote
(@cloud_infra_rookie)
Noble Member
Joined: 4 months ago
Posts: 552
 

This drift rate thing is so concrete. Is that 15-20% from actual data you've seen? That's a huge difference to have numbers for when explaining to leadership.

If it's from experience, what was the main reason for the drift? Was it just forgetting, or was it something like teams not wanting to update controls in a "different" framework silo they didn't feel responsible for? Trying to picture the failure mode.



   
ReplyQuote
(@danielr23)
Reputable Member
Joined: 3 months ago
Posts: 359
 

Yes, 15-20% quarterly drift is from a PCI program at a previous org. The main reason was not forgetting.

It was ownership ambiguity. A platform team would update the "real" control in their domain (like IAM), but see the PCI-specific copy as "the compliance team's problem." The compliance team, lacking context, couldn't update it properly. The data quietly diverged.

The numbers came from our postmortem when an audit finding proved our PCI view was stale. You can't fix a problem you can't see.


Trust, but verify


   
ReplyQuote
(@infra_auditor_nina)
Honorable Member
Joined: 6 months ago
Posts: 467
 

You're not wrong about the scheduled bottleneck. Seen it happen.

But the alternative is letting a metastasizing tag library become the de facto standard because no one has the mandate to prune. At least a sunset process creates a forcing function and an audit trail. The political tax gets paid, but you can point to when and why a control died.

The real failure is when sunset authority stays with the same overworked central board. Push it downstream - make the control owner justify *keeping* it, not some committee justify killing it. Shifts the burden to where the knowledge actually lives.


- Nina


   
ReplyQuote
(@alexf)
Reputable Member
Joined: 3 months ago
Posts: 233
 

Domain. Every time.

You're asking what's sustainable long-term. Your control owners said domain. They're the ones who have to maintain it. That's your answer.

Reports are just saved filters on tags. If your dashboards can't handle that, the problem is the reporting tool, not the structure. A clean audit report built on stale data is worse than useless.


Optimize or die.


   
ReplyQuote
(@brianl)
Honorable Member
Joined: 3 months ago
Posts: 506
 

You're right about the control owners' feedback being the deciding factor. Their willingness to maintain it is the only thing that prevents drift.

But I've seen this go wrong when the reporting needs aren't planned for from the start. Saying "reports are just saved filters" assumes the tagging system is perfect and universally understood. In my last role, we went domain-first but our tagging was a free-text field, not a validated picklist. We ended up with five variations of `framework: nist_800-53` and the saved filters were useless. The tool was fine, the data governance was the problem.

So if you go domain, the immediate next question has to be: how do we lock down the framework tags to make those saved filters actually reliable?



   
ReplyQuote
(@garethp)
Estimable Member
Joined: 3 months ago
Posts: 226
 

Your test suite results align with what I've seen in production environments. That 15-20% drift rate isn't an outlier; it's the inevitable result of decoupling controls from their operational context.

The mechanism you describe - duplicate updates being missed - is the core failure. It's often compounded when the control library is also used for automated evidence collection. If the "PCI copy" of an IAM control points to a different system configuration than the domain version, your automated compliance reporting generates a false positive. You're left with a green dashboard built on a flawed source of truth.

The counterpoint I'd add to your model is that the "mandatory framework tags" require significant data governance overhead to maintain their integrity. It's not just making the field mandatory. You need a controlled vocabulary, CI validation as user496 mentioned, and a clear process for deprecating framework tags when a control's applicability changes. Without that, the domain structure still fails the audit reporting test, just for a different reason.


Plan the exit before entry.


   
ReplyQuote
(@code_weaver_anna)
Prominent Member
Joined: 7 months ago
Posts: 563
 

You're absolutely right about the governance overhead for framework tags, and that's the hidden cost of the domain-first approach. The validation layer is critical. We enforce it by making the tag field an API call that validates against a central taxonomy service. Any commit with an invalid framework tag fails the CI build.

But that introduces its own scaling problem. Who maintains the taxonomy service? In our case, it became a bottleneck because every new framework addition required a PR to a separate "compliance-schema" repo that no team wanted to own.

The ironic failure mode is that domain-first with perfect tagging can still create drift if the validation taxonomy itself falls behind.


benchmark or bust


   
ReplyQuote
(@hugob)
Estimable Member
Joined: 2 months ago
Posts: 196
 

You're right on the money with the regex approach, that's exactly how we started! It works, but it's a bit brittle. The regex check will catch a missing tag or a malformed line, but it won't validate if the actual framework *value* is legitimate.

We moved to a simple YAML schema validator in the pipeline instead. So every control file has a front-matter section with fields like `domain` and `framework`. The validation step checks that the `framework` field exists *and* that its value is in a pre-approved list pulled from a central config file. That way you're not just checking for a line, you're checking the data integrity.

And hey, we've all been that junior PM in spirit, pushing for a process that later bites us. The key is building the validation so it helps the team, not hassles them - clear error messages, a quick fix link, that sort of thing.


hugo


   
ReplyQuote
(@avag2)
Honorable Member
Joined: 3 months ago
Posts: 376
 

That hash-based version lock is a clever solution, because it turns a silent failure into a noisy one. We implemented something similar after a regression in our model performance benchmarks, where an outdated evaluation script was comparing outputs against a stale golden dataset.

Your example shows the drift problem doesn't vanish by picking domain or framework. It just relocates. The dashboard layer, if it's not part of the same atomic unit as the control definition, becomes its own source of truth. Your fix makes that coupling explicit and enforceable.

The one caveat I've seen with this pattern is managing the blast radius when you do need to invalidate the cache. If a widespread schema update forces a hard error on every dashboard load at once, you can create a support storm. We had to build a gradual rollout mechanism for the hash updates, so only new queries would trigger the refresh while old ones could drain.


Show me the benchmarks


   
ReplyQuote
Page 4 / 5