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/mscp_2.0: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/mscp_2.0: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]
    Flag Output
    -A All outputs
    -s Compliance script
    -p Configuration profiles
    -d DDM components
    -x Excel spreadsheet
    -m Markdown

    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:

Flag What it does
--check Run checks only
--fix Run fixes only
--cfc Check → Fix → Check
--stats Show last run statistics
--compliant Report compliant count
--non_compliant Report non-compliant count
--reset Clear results for this baseline
--reset-all Clear results for all baselines
--quiet=1 Show failed/exempt only
--quiet=2 Minimal 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.

Flag Purpose
-l List available baselines
-k NAME Generate baseline
-t Interactive tailoring
-c Show 800-53 controls
--os_name Target OS name
--os_version Target OS version

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

Flag Purpose
-A All outputs
-s Compliance script
-p Config profiles
--consolidated-profile Single consolidated profile
--granular-profiles Granular profiles
-d DDM components
-x Excel file
-m Markdown
-l LOGO Custom logo
-L LANG Language
-H HASH Sign profiles
--audit_name NAME Custom audit name
--reference REF Custom reference ID
--dark Dark mode output

mscp.py scap — Generates SCAP/OVAL content.

Flag Purpose
-x XCCDF file
-o OVAL file
-b NAME Specific baseline
-l List 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