Classic confinement request for c-osquery


  • name: c-osquery
  • description: a security monitoring agent. It is a customization/re-packaging of osquery ( https[:]//github[.]com/osquery/osquery ), which is thoroughly documented, and all customizations are documented at the “upstream” link below.
  • snapcraft: https://github.com/canonical/c-osquery/blob/build/overlay/snap/snapcraft.yaml
  • upstream: https://github.com/canonical/c-osquery
  • upstream-relation: codeowner
  • supported-category: not documented on the official list (https[:]//snapcraft[.]io/docs/reference/administration/reviewing-classic-confinement-snaps/#supported)
  • reasoning: Security agents need to perform kernel-based runtime monitoring (e.g., gather info on process execution, network connections, etc.). The two primary options are the audit interface or eBPF. We have thoroughly tested both options and the audit interface has severe system performance impacts when gathering the telemetry we require. eBPF can gather the telemetry within acceptable performance constraints. Our requirement to load eBPF requires us to be classic/unconfined

I understand that strict confinement is generally preferred over classic.

I’ve tried the existing interfaces to make the snap to work under strict confinement.

Note that snappy-debug can be used to identify possible required interfaces. See https[:]//snapcraft[.]io/docs/debug-snaps for more information.

Note: I’ve intentionally broken several links because the forum limits my post to two links.

The points of contact for this request are José Jiménez García (@jjimenezgarcia) and Nicholas Morris (@niwamo)

This request has been added to the queue for review by the @reviewers team.

Hello @Canonical-SecOps :slight_smile:

Can you please confirm that this is a canonical project (not a personal one)?

Hi, correct, this is a Canonical project.

Thanks for clarifying!

Since “security monitoring agent” is not currently on the supported or unsupported category lists, this is a new use case. Per our process, the technical requirements for a new category are gathered in the forum and reviewed by the security team and/or snapd architects. Based on the information provided, the technical requirement is understood: eBPF-based runtime monitoring is a legitimate kernel-level capability that snapd does not currently mediate, and the strict-confinement alternatives do not meet the performance requirements you’ve documented.

The technical requirements for classic confinement are understood and the use case is reasonable, granting classic confinement. This is now live!