Skip to content

Commit a0be5af

Browse files
committed
Rewording according to reviewer feedback
1 parent ea87d1a commit a0be5af

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

_posts/2023-04-21-mrac.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author_url: https://github.com/matejak
77
---
88

99
Systems that our content aims to harden are very often large collections of separate components whose life cycle is independent from the life cycle of the product that ships them.
10-
For example, the Red Hat Enterprise Linux consists of more than six thousand of such distinct components, although only a fraction of them s.a. OpenSSH, Grub2 and so on is supported by the ComplianceAsCode project.
10+
For example, the Red Hat Enterprise Linux consists of more than six thousand of such distinct components, although only a fraction of them s.a. OpenSSH, Grub2 is supported by the ComplianceAsCode project.
1111

1212
Our Red Hat group is contemplating the idea of making the content project better equipped to handle changes in component behavior better.
1313
As the project is open-source and has a community, we would like to get it involved from the very start.
@@ -53,7 +53,7 @@ Let's take a look how those ideas could align to the subject of component change
5353

5454
### Multiple rules to address one requirement
5555

56-
In practice, we may not know at build-time what exact version of a component will be scanned, and we may address this uncertainty by having multiple rules prepared to handle this uncertainty.
56+
In practice, we may not know at build-time what exact version of a component will be scanned, and we may address this uncertainty by having multiple rules prepared to handle it.
5757
When it comes to the actual scanning, this collection of rules has to make sure that the evaluation will be carried out correctly, regardless of what component version is present on the system.
5858

5959
This could be achieved by a set of rules with disjoint applicability, so at the end, at most one rule is active.
@@ -97,7 +97,7 @@ Designing such product properties in a way that is smart, doesn't get in the way
9797
Can you think of other ways of bringing declarative principles to the project?
9898

9999

100-
### Be able to track component changes and our reactions to them.
100+
### Ability to track component changes and our reactions to them.
101101

102102
Imagine that a component changes behavior, and you dispatch pull requests that react to that change, and they get merged successfully.
103103
However, later you discover that something is still not right, and you need to check out the reaction to that change.
@@ -113,15 +113,15 @@ This can be very difficult to achieve exhaustively, but a partial and good enoug
113113

114114
### Polymorphic rules
115115

116-
Rules that try to do two things don't sound like a good idea, but if those two things are almost the same, then perhaps it could make sense.
117-
Although `CCE` identifiers restrict the scope of rule polymorphism significantly, change of component configuration preference could be handled without splitting a rule into two, polymorphically.
116+
Rules that try to do two things don't sound like a good idea, but what if those two things would heavily overlap?
117+
Great candidats for polymorphism are changes when component configuration doesn't change, as it is the way of how to achieve this configuration that does.
118+
In cases like this, a rule can get a polymorphic remediation and keep the `CCE` identifier if it has one, as `CCE`s don't change if the configuration stays the same.
118119

119-
We have some polymorphic rules in our content, but they became polymorphic on their own, the project hasn't helped them with their polymorphism.
120-
For instance, the rule [no_empty_passwords](https://github.com/ComplianceAsCode/content/tree/master/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords) mentioned earlier has polymorphic Bash remediation and a rather simple OVAL check, while [enable_fips_mode](https://github.com/ComplianceAsCode/content/tree/master/linux_os/guide/system/software/integrity/fips/enable_fips_mode) has a simple Bash remediation, but a complex OVAL.
120+
For instance, the rule [no_empty_passwords](https://github.com/ComplianceAsCode/content/tree/master/linux_os/guide/system/accounts/accounts-restrictions/password_storage/no_empty_passwords) also mentioned earlier, has polymorphic Bash remediation and a rather simple OVAL check.
121+
Another example is different - [enable_fips_mode](https://github.com/ComplianceAsCode/content/tree/master/linux_os/guide/system/software/integrity/fips/enable_fips_mode) has a simple Bash remediation, but complex OVAL and this example nicely illustrates the richness of the rule-level polymorphism in the project.
121122

122-
Provided examples nicely illustrate the richness of the rule-level polymorphism in the project.
123-
Rules don't advertise that they are polymorphic, and the project doesn't provide them with any specific help with their polymorphism.
124-
Project support for polymorphism of rules could reduce maintenance costs, as polymorphism would become more declarative.
123+
We have some more polymorphic rules in our content, but they became polymorphic "maually" - they don't declare their polymorphism, and there are no build system features that would guide a rule's transformation to a polymorphic rule.
124+
Project support for polymorphism of rules could reduce maintenance costs by making changes cheaper, and also by enabling maintainers overview of what rules are polymorphic and what aren't.
125125

126126

127127
## What now

0 commit comments

Comments
 (0)