Installation

Run cnspec as a service

Configure cnspec to run as a system service that automatically scans hosts and reports results to Mondoo Platform.

Run cnspec as a system service to assess a host on a recurring schedule and stream the results back to Mondoo Platform without anyone running a command.

How the service works

Once enabled, the cnspec service runs in serve mode. By default, every 60 minutes it:

  1. Connects to your space in Mondoo Platform.
  2. Pulls the latest enabled policies.
  3. Scans the host.
  4. Reports the results back to the platform.

You can change the interval, the configuration path, and the log level. See cnspec configuration options below.

Configure cnspec to run as a service

The installation places a systemd unit file at /etc/systemd/system/cnspec.service. However, it does not register or enable the service.

Before starting cnspec as a service, you should have already registered the host with your Mondoo Platform account.

Enable and start cnspec as a service

1. Reload systemd daemon and load the cnspec.service unit file
sudo systemctl daemon-reload
2. Enable cnspec to run during startup
sudo systemctl enable cnspec
3. Start cnspec service
sudo systemctl start cnspec
4. Check the status of cnspec
sudo systemctl status cnspec

cnspec service logging

cnspec service writes log events to the system logs. You can use this command to tail cnspec service logs on Linux hosts:

Tail cnspec service logs
sudo journalctl -u cnspec -f

The default log level is info, but can be configured as defined in cnspec configuration options below.

cnspec serve

In addition to leveraging the platform service management system, cnspec includes the cnspec serve command, which you can use on any supported platform (Linux, Windows, macOS) to continuously run assessments of hosts.

If the host is already registered, cnspec serve uses the existing configuration.

Set a custom scan interval

Use the --timer flag to set a scan interval in minutes. The default is 60. For example, this runs a scan with cnspec serve every 15 minutes:

cnspec serve --timer 15

cnspec configuration options

cnspec configuration is stored on the host at this location:

  • Linux and macOS: /etc/opt/mondoo/mondoo.yml
  • Windows: C:\ProgramData\Mondoo\mondoo.yml

Common cnspec service configuration options:

NameDescription
agent_mrnAgent Mondoo resource name, identifies the client
api_endpointThe URL of Mondoo Platform (https://us.api.mondoo.com is the default)
certificateClient's public certificate
loglevelService log level: error, warn, info, debug, trace (default is info)
mrnService Account Mondoo resource name, which identifies the service account
private_keyClient's private key used to sign requests sent to Mondoo Platform
space_mrnSpace Mondoo resource name, identifies the space that the client belongs to
annotationsAnnotations that display in the Mondoo App app.mondoo.com
mondoo.yml
# service account mrn
mrn: //agents.api.mondoo.app/spaces/spacex/serviceaccounts/1utIs5XUQ8XayfB6yiQNTLOqPlD
# agent mrn
agent_mrn: //agents.api.mondoo.app/spaces/spacex/agents/1utIqsjg3YSAF8hMMIhg8tBsTPP
# space mrn
space_mrn: //captain.api.mondoo.app/spaces/spacex
# api endpoint
api_endpoint: https://us.api.mondoo.com
# pem-encoded certificate
certificate: |
  -----BEGIN CERTIFICATE-----
  ...
  -----END CERTIFICATE-----
# pem-encoded private key
private_key: |
  -----BEGIN PRIVATE KEY-----
  ...
  -----END PRIVATE KEY-----
# log level: error, warn, info, debug, trace
loglevel: info
# tags
annotations:
  key1: value1
  key2: value2

cnspec inventory

You can define multiple scan targets, credentials, and discovery options in an inventory file. To learn more, read Remote scanning with inventory files.

To execute cnspec with an inventory file:

cnspec scan --inventory-file ./inventory.yml

On this page