Full Scapolite example of a Compliance-as-Code Security Guide (RHEL 8) published on github.com

31 views
Skip to first unread message

B Grobauer

unread,
Jul 17, 2019, 9:21:27 AM7/17/19
to scap-dev-authoring
Dear all,

following the discussion during the SCAPv2 workshop a month ago, I have made available one more complete example of what SCAP content would look like
when authored and maintained in Scapolite, this time using the Compliance-as-Code guide for RHEL8. The Scapolite conversion
is available from


Compliance-as-Code makes heavy use both of OCIL and of implementation mechanisms (bash and Ansible). The current import
basically mirrors the SCAP-version, except that non-XCCDF content has been either broken up (OVAL and OCIL) or
factored out (sh/ansible/anaconda content) and stored alongside the  file containing the rule.

A evolvement of Scapolite should, of course, do things differently, where things can be improved. For example, for lack of a better
mechanism, in its SCAP export, Compliance-as-Code stores shared shell-scripts using XCCDF-values, which currently
is mirrored 1:1 in the Scapolite-conversion. Obviously, a dedicated mechanism would be preferable.

Also, OCIL as used in the guide (basically, a yes/no question that always leads to either passing or failing the text)  just begs for a
mechanism that allows the inclusion of the question within the rule-file and generating this rather simple piece of OCIL ---
comparable to what ComplianceAsCode have indeed done in their rule-file format:


~~~

ocil_clause: 'the package is not installed'
ocil: '{{{ ocil_package(package="psacct") }}}'
 
~~~

... but maybe not quite as succint, since this much brevity very much depends on a custom  build-tool chain; one could;
however, think of specifying a templating-mechanism, making explicit what Compliance-as-Code's build chain
does implicitly.

Compliance-as-Code also has other short-hands, which currently are not available in Scapolite. 
Another example: ComplianceAsCode specifies cross-references much more succinctly: 

~~~
references:
nist: AU-12,CM-7
nist-csf: DE.CM-1,DE.CM-3,DE.CM-7,ID.SC-4,PR.IP-1,PR.PT-1,PR.PT-3
isa-62443-2013: 'SR 1.1,SR 1.10,SR 1.11,SR 1.12,SR 1.13,SR 1.2,SR 1.3,SR 1.4,SR 1.5,SR 1.6,SR 1.7,SR 1.8,SR 1.9,SR 2.1,SR 2.10,SR 2.11,SR 2.12,SR 2.2,SR 2.3,SR 2.4,SR 2.5,SR 2.6,SR 2.7,SR 2.8,SR 2.9,SR 6.1,SR 6.2,SR 7.6'
isa-62443-2009: 4.3.2.6.7,4.3.3.3.9,4.3.3.5.1,4.3.3.5.2,4.3.3.5.3,4.3.3.5.4,4.3.3.5.5,4.3.3.5.6,4.3.3.5.7,4.3.3.5.8,4.3.3.6.1,4.3.3.6.2,4.3.3.6.3,4.3.3.6.4,4.3.3.6.5,4.3.3.6.6,4.3.3.6.7,4.3.3.6.8,4.3.3.6.9,4.3.3.7.1,4.3.3.7.2,4.3.3.7.3,4.3.3.7.4,4.3.4.3.2,4.3.4.3.3,4.3.4.4.7,4.4.2.1,4.4.2.2,4.4.2.4
cobit5: APO10.01,APO10.03,APO10.04,APO10.05,APO11.04,BAI03.05,BAI10.01,BAI10.02,BAI10.03,BAI10.05,DSS01.03,DSS03.05,DSS05.02,DSS05.04,DSS05.05,DSS05.07,DSS06.06,MEA01.01,MEA01.02,MEA01.03,MEA01.04,MEA01.05,MEA02.01
iso27001-2013: A.12.1.2,A.12.4.1,A.12.4.2,A.12.4.3,A.12.4.4,A.12.5.1,A.12.6.2,A.12.7.1,A.14.2.2,A.14.2.3,A.14.2.4,A.14.2.7,A.15.2.1,A.15.2.2,A.9.1.2
cis-csc: 1,11,12,13,14,15,16,2,3,5,6,7,8,9 ~~~
The syntax of Scapolite would have to be changed so as to accept more than one reference per reference system; further, one would have to think whether a standard set of short-hands for the most important reference systems 
should be defined rather than always specifying a longish URN/URI.

In short: a balance between brevity one one hand and mechanisms that work in general
rather than for a specific use case / build chain would have to be found in order to evolve Scapolite
into something that would also be useful for Compliance-as-Code.

Kind regards,

Bernd
Reply all
Reply to author
Forward
0 new messages