Skip to main content

MDM Query (OSQuery)

Overview

MDM Query provides a powerful interface for running OSQuery commands across your device fleet. Get detailed system information, troubleshoot issues, and gather compliance evidence.

What is OSQuery?

OSQuery exposes the operating system as a relational database:

  • Query system state with SQL-like syntax
  • Cross-platform support (Windows, macOS, Linux)
  • Real-time and historical data
  • Low performance impact

Query Interface

Running Queries

  1. Navigate to DevicesMDM Query
  2. Select target devices:
    • Single device
    • Device group
    • All devices
  3. Enter or select query
  4. Click Run Query
  5. View results

Query Syntax

Queries use SQL-like syntax:

SELECT * FROM users WHERE uid > 500;
SELECT name, version FROM programs
WHERE name LIKE '%chrome%';
SELECT pid, name, cmdline FROM processes
WHERE on_disk = 0;

Common Queries

System Information

OS Version:

SELECT * FROM os_version;

Hardware Info:

SELECT * FROM system_info;

Uptime:

SELECT * FROM uptime;

Security

Running Processes:

SELECT pid, name, path, cmdline
FROM processes;

Listening Ports:

SELECT pid, port, protocol, address
FROM listening_ports;

Installed Certificates:

SELECT * FROM certificates;

Firewall Status:

SELECT * FROM alf; -- macOS
SELECT * FROM windows_firewall_rules; -- Windows

Software

Installed Programs:

SELECT name, version, install_date
FROM programs; -- Windows

SELECT name, bundle_version
FROM apps; -- macOS

Browser Extensions:

SELECT * FROM chrome_extensions;
SELECT * FROM firefox_addons;

Users

Local Users:

SELECT * FROM users;

Logged In Users:

SELECT * FROM logged_in_users;

Last Login:

SELECT * FROM last;

Query Library

Saved Queries

Save frequently used queries:

  1. Write or run query
  2. Click Save Query
  3. Enter name and description
  4. Assign to category
  5. Save

Pre-built Queries

Bastion includes pre-built queries for:

CategoryExamples
SecurityOpen ports, suspicious processes
ComplianceEncryption status, AV installed
InventoryHardware, software, users
TroubleshootingDisk space, memory, network

Query Scheduling

Scheduled Queries

Run queries automatically:

  1. Create or select query
  2. Click Schedule
  3. Configure:
    • Frequency (hourly, daily, weekly)
    • Target devices
    • Data retention
  4. Enable schedule

Use Cases

  • Daily inventory collection
  • Hourly security checks
  • Weekly compliance verification
  • Change detection

Live Queries

Real-Time Execution

For immediate results:

  1. Select devices
  2. Run query
  3. Results stream in real-time
  4. View per-device results

Timeout Handling

ScenarioBehavior
Device onlineReturns results
Device offlineMarked as unavailable
Query timeoutPartial results + timeout indicator

Query Results

Viewing Results

Results displayed in table format:

  • Sort by any column
  • Filter results
  • Export to CSV/Excel
  • Compare across devices

Result Actions

ActionDescription
ExportDownload as CSV
SaveStore results historically
CompareCompare to previous results
AlertCreate alert based on results

Device-Specific Queries

Single Device

Query one device for troubleshooting:

  1. Go to DevicesDevice List
  2. Select device
  3. Click Query
  4. Run query against that device

Query History

View past queries for a device:

  • Previous queries run
  • Results returned
  • Timestamp
  • Query source (manual, scheduled)

Security Considerations

Query Permissions

PermissionAccess
ReadView results only
ExecuteRun pre-built queries
CustomWrite custom queries
AdminAll query capabilities

Query Auditing

All queries are logged:

  • User who ran query
  • Query content
  • Target devices
  • Timestamp
  • Results (optional)

Best Practices

Start with Pre-built

Use pre-built queries as starting points. They're tested and optimized.

Test on Single Device

Test new queries on one device before running fleet-wide.

Mind Performance

Complex queries on many devices can impact performance. Use appropriate filters.

Schedule Wisely

Don't over-schedule. Running queries too frequently wastes resources.

OSQuery Reference

Useful Tables

TableDescriptionPlatform
processesRunning processesAll
usersUser accountsAll
listening_portsOpen network portsAll
programsInstalled softwareWindows
appsInstalled applicationsmacOS
deb_packagesInstalled packagesDebian/Ubuntu

Documentation

For complete OSQuery documentation:

Next Steps