News, tips, partners, and perspectives for the Oracle Solaris operating system

Solaris 11 Compliance Framework

Darren Moffat
Senior Software Architect

During the Solaris 11 launch (November 2011) one of the questions I was asked from the audience was from a retail customer asking for documentation on how to configure Solaris to pass a PCI-DSS audit.  At that time we didn't have anything beyond saying that Solaris was secure by default and it was no longer necessary to run the Solaris Security Toolkit to get there.  Since then we have produced a PCI-DSS white paper with Coalfire (a PCI-DSS QSA) and we have invested a significant amount of work in building a new Compliance Framework and making compliance a "lifestyle" feature in Solaris core development.

We delievered OpenSCAP in Solaris 11.1 since SCAP is the foundation language of how we will provide compliance reporting. So I'm please to be able to finally talk about the first really signficant part of the Solaris compliance infrastruture which is part of Solaris 11.2.

Starting with Solaris 11.2 we have a new command compliance(1M) for running system assements against security/compliance benchmarks and for generating html reports from those.  For now this only works on a single host but the team hard at work adding multi-node support (using the Solaris RAD infrastructure) for a future release.

The much more signficant part of what the compliance team has been working on is "content".  A framework without any content is just a new "box of bits, lots of assembly required" and that doesn't meet the needs of busy Solaris administrators.  So starting with Solaris 11.2 we are delivering our interpretation of important security/compliance standards such as PCI-DSS.  We have also provided two Oracle authored policies: 'Solaris Baseline' and 'Solaris Recommended', a freshly installed system should be getting all passes on the Baseline benchmark.  The checks in the Recommended benchmark are those that are a little more controversial and/or take longer to run.

Lets dive in and generate an assesment and report from one of the Solaris 11.2 compliance benchmarks we provide:

# pkg install security/compliance 
# compliance assess
# compliance report

That will give us an html report that we can then view.  Since we didn't give any compliance benchmark name it defaults to 'Solaris Baseline', so now lets install and run the PCI-DSS benchmark. The 'security/compliance' package has a group dependency for 'security/compliance/benchmark/pci-dss' so it will be installed already but if you don't want it you can remove that benchmark and keep the others and the infrastructure.

# compliance assess -b pci-dss
Assessment will be named 'pci-dss.Solaris_PCI-DSS.2014-04-14,16:39'
# compliance report -a pci-dss.Solaris_PCI-DSS.2014-04-14,16:39

If we want the report to only show those tests that failed we can do that like this:

# compliance report -s fail -a pci-dss.Solaris_PCI-DSS.2014-04-14,16:39

We understand that many of your Solaris systems won't match up exactly
to the benchmarks we have provided and as a result we have delivered the
content in a way that you can customise it. Over time the ability to
build custom benchmarks from the checks we provide will be come part of
the compliance(1M) command (tailoring was added in Solaris 11.3 so the information below has been superceeded) but for now you can enable/disable checks by
editing a copy of the XML files. Yes I know many of you don't like
XML but this time it isn't too scary for just this part, crafting a
whole check from scratch is hard though but that is the SCAP/XCCDF/OVAL
language for you!.

So for now here is the harder than it should be way to customise one of the delivered benchmarks, using the PCI-DSS benchmark as an example:

# cd /usr/lib/compliance/benchmarks
# mkdir example
# cd example
# cp ../pci-dss/pci-dss-xccdf.xml example-xccdf.xml
# ln -s ../../tests
# ln -s example-xccdf.xml xccdf.xml

# vi example-xccdf.xml

In your editor you are looking for lines that look like this to enable or disable a given test:

<select idref="OSC-27505" selected="true" />

You probably also want to update these lines to indicate that it is your benchmark rather than the original we delivered.

<status date="2013-12-12">draft</status>
<title>Payment Card Industry Data Security Standard</title>

Once you have made the changes you want exit from your editor and run 'compliance list' and you should see your example benchmark listed, you can run run assesments and generate reports from that one just as above.  It is important you do this by making a copy of the xccdf.xml file otherwise the 'pkg verify' test is always going to fail and more importantly your changes would be lost on package update.

Note that we re-numbered these tests in the Solaris 11.2 SRU and 11.3 to provide a peristent unique identifier and namespace for each of the tests we deliver, it just didn't make the cut off for Solaris 11.2 release.

I would really value feedback on the framework itself and probably even more importantly the actual compliance checks that our Solaris Baseline, Solaris Recommended, and PCI-DSS security benchmarks include.

Updated August 6th 2015 to added information about Solaris 11.3 changes.

Join the discussion

Comments ( 3 )
  • guest Saturday, May 16, 2015


    this framework was one of the two pieces missing to start the productive rollout of S11. The second were the unified archives, so we're ready to roll now :-)

    I played a bit with the framework and found a few open ends - no worries about that. Since we're running here ~600 Solaris systems one of the major challenges is always - how to deal with updates, shipped by Oracle. When creating your own benchmark, which is neccesary here, we detach completely from the Oracle shipped benchmark. So, if new tests are submitted we simply don't notice. Are there any plans to implement some kind of runtime merging the standard shipped benchmarks with custom extensions? Like - run the standard test, except you find the test in the custom directory/description..

    Anyway, I like the OpenSCAP approach :-)


  • Darren Moffat Monday, May 18, 2015

    We have several plans in progress for allowing customisation. The first of which will be an easier way to enable/disable tests that we ship; for example disable a single test that would otherwise give a failing result in the PCI-DSS benchmark because it doesn't apply to you. This will be called 'tailoring' and will use the underlying XCCDF tailoring mechanism available in SCAP.

    We are also investigating how to allow addition of customer or 3rd party developed tests to the benchmarks, so you can easily build your own benchmark from scratch but still have access to the expanding body of tests as Solaris is updated.

  • guest Wednesday, September 30, 2015


    This is a great tool, lots of useful information. Thanks for the article.


Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.