Skip to content

Quick Guide

A complete start to finish walkthrough of the macOS Security Compliance Project. Install, generate your first baseline, and create compliance documents all in one page.

Quick Start (Container)

Prefer to install manually with Python and Ruby? See the Getting Started guide for the manual method.

Requirements:

  1. Create Local Folders

    Terminal window
    mkdir -p ~/Desktop/mscp/custom
  2. Run the Container

    Using Apple Container:

    Terminal window
    container run -it \
    --volume ~/Desktop/mscp:/mscp/build \
    --volume ~/Desktop/mscp/custom:/mscp/custom \
    ghcr.io/usnistgov/macos_security:latest
    Apple Container commands Click to expand

    Start the container service (required before first run):

    Terminal window
    container system start

    Exit the container:

    Terminal window
    exit

    Stop the container service:

    Terminal window
    container system stop

    Check container service status:

    Terminal window
    container system status

    Or Using Docker:

    Terminal window
    # Note: Docker requires full paths for volume mounts
    docker run -it \
    --volume /Users/<username>/Desktop/mscp:/mscp/build \
    --volume /Users/<username>/Desktop/mscp/custom:/mscp/custom \
    ghcr.io/usnistgov/macos_security:latest
  3. Generate a Baseline

    List baselines: ./mscp.py baseline -l

    Generate: ./mscp.py baseline -k BASELINE_NAME

    With tailoring: ./mscp.py baseline -k BASELINE_NAME -t

    config/custom/baselines/cis_lvl1_macos_26.0.yaml
    # Example: Generate CIS Level 1 baseline
    ./mscp.py baseline -k cis_lvl1
  4. Generate Outputs

    Terminal window
    ./mscp.py guidance custom/baselines/BASELINE_NAME.yaml [flags]
    FlagOutput
    -AAll outputs
    -sCompliance script
    -pConfiguration profiles
    -dDDM components
    -xExcel spreadsheet
    -mMarkdown

    Example — Generate all outputs:

    /build/cis_lvl1_macos_26.0/
    ./mscp.py guidance custom/baselines/cis_lvl1_macos_26.0.yaml -A
  5. Use Your Files

    Everything goes to build/BASELINE_NAME/:

    build/cis_lvl1_macos_26.0/
    ├── cis_lvl1_macos_26.0.adoc
    ├── cis_lvl1_macos_26.0.html
    ├── cis_lvl1_macos_26.0.pdf
    ├── cis_lvl1_macos_26.0_compliance.sh
    ├── mobileconfigs/
    ├── preferences/
    ├── activations/
    ├── assets/
    └── configurations/

Running the Compliance Script

Interactive mode:

Terminal window
sudo ./build/cis_lvl1_macos_26.0/cis_lvl1_macos_26.0_compliance.sh

Automated mode:

FlagWhat it does
--checkRun checks only
--fixRun fixes only
--cfcCheck → Fix → Check
--statsShow last run statistics
--compliantReport compliant count
--non_compliantReport non-compliant count
--resetClear results for this baseline
--reset-allClear results for all baselines
--quiet=1Show failed/exempt only
--quiet=2Minimal output
Terminal window
# Quick check
sudo ./build/cis_lvl1_macos_26.0/cis_lvl1_macos_26.0_compliance.sh --check
# Full remediation
sudo ./build/cis_lvl1_macos_26.0/cis_lvl1_macos_26.0_compliance.sh --cfc --quiet=2

Script Reference

mscp.py baseline — Creates the baseline YAML file.

FlagPurpose
-lList available baselines
-k NAMEGenerate baseline
-tInteractive tailoring
-cShow 800-53 controls
--os_nameTarget OS name
--os_versionTarget OS version

mscp.py guidance — Generates all outputs from a baseline.

FlagPurpose
-AAll outputs
-sCompliance script
-pConfig profiles
--consolidated-profileSingle consolidated profile
--granular-profilesGranular profiles
-dDDM components
-xExcel file
-mMarkdown
-l LOGOCustom logo
-L LANGLanguage
-H HASHSign profiles
--audit_name NAMECustom audit name
--reference REFCustom reference ID
--darkDark mode output

mscp.py scap — Generates SCAP/OVAL content.

FlagPurpose
-xXCCDF file
-oOVAL file
-b NAMESpecific baseline
-lList tags

mscp.py mapping — Generates control mappings.


Common Workflows

Compliance Check — Scan a Mac for compliance issues:

Terminal window
./mscp.py baseline -k 800-53r5_moderate
./mscp.py guidance custom/baselines/800-53r5_moderate_macos_26.0.yaml -s
sudo ./build/800-53r5_moderate_macos_26.0/800-53r5_moderate_macos_26.0_compliance.sh --check

MDM Deployment Package — Generate profiles and DDM for device management:

Terminal window
./mscp.py baseline -k DISA-STIG
./mscp.py guidance custom/baselines/DISA-STIG_macos_26.0.yaml -p -d -s

Full Documentation Set — Create all outputs for documentation and audit:

Terminal window
./mscp.py baseline -k cis_lvl2
./mscp.py guidance custom/baselines/cis_lvl2_macos_26.0.yaml -A