devsecopsmaturitymodel / DevSecOps-MaturityModel

GNU General Public License v3.0
460 stars 266 forks source link

Team-based assessment #211

Closed wurstbrot closed 5 months ago

corrupt commented 1 year ago

DSOMM currently assesses whole organizations. Every dimension can be adapted to meet organizational requirements and needs, but the implementation level diagram is always an assessment of all processes at once.

Team-based workflows can be modeled in one of two ways:

The former approach brings with it a lot of organizational overhead.

Therefore, DSOMM should be able to model and assess processes for individual teams.

One possible implementation can be a separate yaml schema for team definitions and an according array of teams per individual requirement. A requirement should only be considered fully fulfilled once each team implemented it.

Screenshot 2023-02-01 at 18 03 45
corrupt commented 1 year ago

Example of a per-team implementation level diagram with only team-relevant categories.

image
akhileshappala commented 1 year ago

Hi @corrupt and @wurstbrot The above design change looks good, But if we select 2 internal steps and select team 1 and Team 2. it means both teams are executing those 2 steps.

But Team 2 doesn't want to execute one of the steps of the selected ones. At this time we are not giving the option to the user to execute the specific step for an individual team.

Can we have the something like one below where we select the team and then select the operation to be done?

image

The above design is for, when we want to do the process at the team level. if a user wants to go with the organization level. we have separate Teams and Organizations separated like below. where all steps will be executed at org level image

Whereas in organizations we will have the same look as we have currently.

when the user selects a teams level, we will disable the organization and team 1, team 2 will be coming under it

Please let me know your opinion or suggestions. As of now, I am writing the proposal,I will include the design changes and work in my weekly deliverables based on the decisions.

kjartab commented 11 months ago

Having used DSOMM a bit Im not convinced this is the way to go. While you could do this for "team-based activities" it wont cut it for other "dimensions". Most organizations are complex with many different teams, environments, applications and systems. Examples of granularity:

For example a team can be responsible for many different systems/apps. Will you add a new list there?

To me it seems like it would be worthwhile to take step back and look at it from a more atomic "activity" point of view:

Which context are we in?

  1. Context: Organization: security training for all employees - true
  2. Context: Environment A: Filter outgoing traffic - true
  3. Context: Team 1: security champion - true
  4. Context: Team 2: security champion - false
  5. Context: System C: Coverage of client side dynamic components - true

This would be flexible as well - you could say that your organization has one context or many. And you can appropriately adjust depending on your needs. It would then also be nice say "system c runs in environment A, maintained by team 1" - therefore it has this score. Say you moved system c from environment A to B - perhaps you got a lot of new security features as a result - it would automatically be adjusted.

wurstbrot commented 11 months ago

@kjartab I think what you wish is already there. You can perform the assessment with the YAMLs and use the application to display the results.

See https://github.com/wurstbrot/DevSecOps-MaturityModel-custom . You can have different YAML files with the data. Some for org, some for env. A some for teams. The YAML files will be merged in the end.

The downside with this new feature is (currently), that you have to update all teams for each activity. We can think about grouping teams and use the group name for the attribute teamsImplemented and value true/false which inherits the value to the teams in the group. What do you think?

In the long run, attaching AzureAD is an option.

kjartab commented 11 months ago

@wurstbrot yes that is essentially what I am looking for. Merging the different contexts. But if you change the model in the yaml files to accomodate the team dimension, it will have to be used for all activites? Its already a bit time consuming to do the checkboxes when going through this.

I see the yaml files under src/assets/YAML/default as the model btw - and this seems like more presentation/input logic rather than a part of the maturity model. I might be misunderstanding something here, but seems smart to keep these things separate.

kjartab commented 11 months ago

The way I see it combining context specific assessments make the most sense - and then you have parent child relationships. This way you can focus on more than just teams - but also different platforms, systems and products.

Depending on the size of the organization you might want to slice and dice the data in different ways - also having "contexts" that are owned by platform teams - inherited by a team or system - could be a powerful visualisation for where to invest time and effort to "lift all boats".

wurstbrot commented 5 months ago

Implemented