Closed
Description
Goal
In order to us to remotely manage osquery flags (CLI flags in osquery which requires restarting osquery on the host), orbit should "enroll" and authenticate with Fleet
Parent Epic
How?
- Create a new
/orbit
endpoint on Fleet- This new endpoint will be used for all subsequent orbit related API calls (
/orbit/enroll
,/orbit/<team|host>/flags
, etc)
- This new endpoint will be used for all subsequent orbit related API calls (
- EnrollRequest <> EnrollResponse
- When orbit requests an enroll on the new endpoint, Fleet should create a new
orbit_node_key
similar to osquery'snode_key
- orbit should use the existing
enroll_secret
to request an enrollment with Fleet - orbit should save the
node_key
locally (initially on filesystem, later migrate to something like Pebble by CockroachDB (https://pkg.go.dev/github.com/cockroachdb/pebble) - re-enrollment and invalidation:
- Ideally both orbit and osquery node-keys should handle invalidation and reenrollment in tandem (TBD)
- Failure scenario: what happens when Fleet is unreachable (retry?) (TBD)
- When orbit requests an enroll on the new endpoint, Fleet should create a new
- Extend
host
MySQL datastore to store the following: host_id, node_key, orbit_node_key- orbit and osquery on the same host, shouldn't cause duplicate hosts