Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update changelog prepare 4.60.1 #24326

Closed
wants to merge 36 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c213020
Frontend changes for NDES issue #23525 (#23829) (#23852)
getvictor Nov 15, 2024
13ca79f
fix: re-enroll devices that are removed from ABM and then added back …
jahzielv Nov 15, 2024
468a5b8
Cherry pick PR #23766 into RC v4.60.0 (#23865)
lucasmrod Nov 15, 2024
b805d95
Cherry pick PR #23855 into RC v4.60.0 (#23866)
lucasmrod Nov 15, 2024
db35c39
Cherry pick PR #23857 into RC v4.60.0 (#23867)
lucasmrod Nov 15, 2024
4106158
Cherry pick Download ABM Certificate with correct extension (#23861) …
dantecatalfamo Nov 18, 2024
0bdd09d
For R.C. - Fleet UI: Hides Never timestamp for empty OS page, clean s…
RachelElysia Nov 18, 2024
4ee309e
Cherry pick Update cloudflare warp uninstall script again (#23874) (#…
dantecatalfamo Nov 18, 2024
2ca7b28
Cherry Pick Scope pending host profile rebuilds (#23772) (#23868)
dantecatalfamo Nov 18, 2024
56fbac9
Added activity item for fleetd enrollment with host serial and displa…
getvictor Nov 18, 2024
42f7599
Fixed parsing Opera PE self-extracting archive. (#23751) (#23927)
getvictor Nov 18, 2024
f66256a
Adding changes for Fleet v4.59.1 (#23862) (#23929) (#23930)
lukeheath Nov 18, 2024
6926654
For R.C. - Fleet UI: Fix unreleased bug of team dropdown width being …
RachelElysia Nov 19, 2024
319b15a
Cherry-Pick: Endpoint changes for LUKS escrow trigger, Orbit notifica…
iansltx Nov 20, 2024
65a175f
to RC: Linux disk encryption: frontend changes, backend missing priva…
jacobshandling Nov 20, 2024
896e4f0
to RC: remove MDM middleware from 2 endpoints (#23997) (#24003)
jacobshandling Nov 21, 2024
1278371
Cherry-Pick: Populate disk encryption status when pulling a host by d…
iansltx Nov 21, 2024
3003f04
Linux encryption cherry picks (#24016)
mostlikelee Nov 21, 2024
610a0dd
to RC: UI - fix a small issue in the device user page banner logic, a…
jacobshandling Nov 21, 2024
4ddd1aa
Cherry-Pick: Fix Orbit version check in LUKS escrow trigger endpoint …
iansltx Nov 21, 2024
8f94247
Cherry-Pick: Improve LUKS escrow trigger error messages (#24031)
iansltx Nov 21, 2024
e43f34a
Apply minimum OS version enforcement to MDM SSO endpoint (#23856) (#2…
gillespi314 Nov 22, 2024
68019f2
feat: do not run setup experience on hosts in a team with no software…
jahzielv Nov 22, 2024
e439a89
linux key escrow progress window (#24099)
mostlikelee Nov 22, 2024
e18729c
Fix teams modal only showing two options (#23889) (#24080)
lukeheath Nov 22, 2024
be15eec
Cherry-Pick: Include Linux disk encryption status in configuration pr…
iansltx Nov 25, 2024
eff83e4
For R.C. - Fleet UI: 4.60 unreleased bug fix for scrollable content …
RachelElysia Nov 25, 2024
e6b8299
to RC: UI – 11/26 Disk encryption spec updates (#24175) (#24178)
jacobshandling Nov 26, 2024
4a6b5d5
to RC: UI - Fix DUP banners for Fedora disk encryption (#24153) (#24179)
jacobshandling Nov 26, 2024
1bde2f5
Cherry-Pick: Linux OS settings + disk encryption host filter fixes (#…
iansltx Nov 27, 2024
f49d84b
fix: add fleet actor for setup experience global activities (#24196) …
jahzielv Nov 27, 2024
963ad26
cherry pick build fix (#24218)
lukeheath Nov 27, 2024
00112e6
Cherry-pick of #24207 for #24024 fix (#24219)
mna Nov 27, 2024
00278c7
Adding changes for Fleet v4.60.0 (#23817)
lukeheath Nov 27, 2024
4df0f4e
Fixed gitops issue with gitops role. (#24297)
getvictor Dec 3, 2024
a7401f8
Adding changes for Fleet v4.60.1
georgekarrv Dec 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,64 @@
## Fleet 4.60.1 (Dec 03, 2024)

### Bug fixes

- Fixed a bug where breaking occurred with gitops user role running `fleetctl gitops` command when MDM was enabled.

## Fleet 4.60.0 (Nov 27, 2024)

### Endpoint operations
- Added support for labels_include_any to gitops.
- Added major improvements to keyboard accessibility throughout app (e.g. checkboxes, dropdowns, table navigation).
- Added activity item for `fleetd` enrollment with host serial and display name.
- Added capability for Fleet to serve YARA rules to agents over HTTPS authenticated via node key (requires osquery 5.14+).
- Added a query to allow users to turn on/off automations while being transparent of the current log destination.
- Updated UI to allow users to view scripts (from both the scripts page and host details page) without downloading them.
- Updated activity feed to generate an activity when activity automations are enabled, edited, or disabled.
- Cancelled pending script executions when a script is edited or deleted.

### Device management (MDM)
- Added better handling of timeout and insufficient permissions errors in NDES SCEP proxy.
- Added info banner for cloud customers to help with their windows autoenrollment setup.
- Added DB support for "include any" label profile deployment.
- Added support for "include any" label/profile relationships to the profile reconciliation machinery.
- Added `team_identifier` signature information to Apple macOS applications to the `/api/latest/fleet/hosts/:id/software` API endpoint.
- Added indicator of how fresh a software title's host and version counts are on the title's details page.
- Added UI for allowing users to install custom profiles on hosts that include any of the defined labels.
- Added UI features supporting disk encryption for Ubuntu and Fedora Linux.
- Added support for deb packages compressed with zstd.

### Vulnerability management
- Allowed skipping computationally heavy population of vulnerability details when populating host software on hosts list endpoint (`GET /api/latest/fleet/hosts`) when using Fleet Premium (`populate_software=without_vulnerability_descriptions`).

### Bug fixes and improvements
- Improved memory usage of the Fleet server when uploading a large software installer file. Note that the installer will now use (temporary) disk space and sufficient storage space is required.
- Improved performance of adding and removing profiles to large teams by an order of magnitude.
- Disabled accessibility via keyboard for forms that are disabled via a slider.
- Updated software batch endpoint status code from 200 (OK) to 202 (Accepted).
- Updated a package used for testing (msw) to improve security.
- Updated to reboot linux machine on unlock to work around GDM bug on Ubuntu 24.04.
- Updated GitOps to return an error if the deprecated `apple_bm_default_team` key is used and there are more than 1 ABM tokens in Fleet.
- Dismissed error flash on the my device page when navigating to another URL.
- Modified the Fleet setup experience feature to not run if there is no software or script configured for the setup experience.
- Set a more accurate minimum height for the Add hosts > ChromeOS > Policy for extension field, avoiding a scrollbar.
- Added UI prompt for user to reenter the password if SCEP/NDES url or username has changed.
- Updated ABM public key to download as as PEM format instead of CRT.
- Fixed issue with uploading macOS software packages that do not have a top level `Distribution.xml`, but do have a top level `PackageInfo.xml`. For example, Okta Verify.app.
- Fixed some cases where Fleet Maintained Apps generated incorrect uninstall scripts.
- Fixed a bug where a device that was removed from ABM and then added back wouldn't properly re-enroll in Fleet MDM.
- Fixed name/version parsing issue with PE (EXE) installer self-extracting archives such as Opera.
- Fixed a bug where the create and update label endpoints could return outdated information in a deployment using a mysql replica.
- Fixed the MDM configuration profiles deployment when based on excluded labels.
- Fixed gitops path resolution for installer queries and scripts to always be relative to where the query file or script is referenced. This change breaks existing YAML files that had to account for previous inconsistent behavior (e.g. installers in a subdirectory referencing scripts elsewhere).
- Fixed issue where minimum OS version enforcement was not being applied during Apple ADE if MDM IdP integration was enabled.
- Fixed a bug where users would be allowed to attempt an install of an App Store app on a host that was not MDM enrolled.

## Fleet 4.59.1 (Nov 18, 2024)

### Bug fixes

* Added `team_identifier` signature information to Apple macOS applications to the `/api/latest/fleet/hosts/:id/software` API endpoint.

## Fleet 4.59.0 (Nov 12, 2024)

### Endpoint operations
Expand Down
1 change: 0 additions & 1 deletion changes/14899-yara-rules

This file was deleted.

1 change: 0 additions & 1 deletion changes/20595-improve-memory-usage-software-installers

This file was deleted.

1 change: 0 additions & 1 deletion changes/21633-windows-auto-enrollment-info-banner

This file was deleted.

1 change: 0 additions & 1 deletion changes/21709-activities-automation-activity

This file was deleted.

1 change: 0 additions & 1 deletion changes/21888-dequeue-pending-scripts

This file was deleted.

1 change: 0 additions & 1 deletion changes/22162-exclude-labels-fix-default-behavior

This file was deleted.

1 change: 0 additions & 1 deletion changes/22187-gitops-software-relative-paths

This file was deleted.

1 change: 0 additions & 1 deletion changes/22224-query-log-destinations

This file was deleted.

1 change: 0 additions & 1 deletion changes/22269-software-title-updated-at

This file was deleted.

2 changes: 0 additions & 2 deletions changes/22359-gitops-mult-abm

This file was deleted.

1 change: 0 additions & 1 deletion changes/22437-linux-lock-black-screen

This file was deleted.

1 change: 0 additions & 1 deletion changes/22446-scripts-modal

This file was deleted.

2 changes: 0 additions & 2 deletions changes/22575-ui-for-include-any-labels

This file was deleted.

1 change: 0 additions & 1 deletion changes/22576-labels-include-any-gitops

This file was deleted.

1 change: 0 additions & 1 deletion changes/22578-db-schema

This file was deleted.

1 change: 0 additions & 1 deletion changes/22581-cron-updates

This file was deleted.

1 change: 0 additions & 1 deletion changes/22606-keyboard-accessiblity

This file was deleted.

1 change: 0 additions & 1 deletion changes/22773-fma-uninstall-fix

This file was deleted.

1 change: 0 additions & 1 deletion changes/22891-zstd-deb-packages

This file was deleted.

1 change: 0 additions & 1 deletion changes/22985-disable-forms-keyboard-access

This file was deleted.

2 changes: 0 additions & 2 deletions changes/23016-add-chrome-host-text-area-height

This file was deleted.

1 change: 0 additions & 1 deletion changes/23078-allow-skipping-vuln-details

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion changes/23213-okta-verify

This file was deleted.

2 changes: 0 additions & 2 deletions changes/23247-vpp-app-install

This file was deleted.

1 change: 0 additions & 1 deletion changes/23492-software-batch-status-code

This file was deleted.

1 change: 0 additions & 1 deletion changes/23525-ndes-errors

This file was deleted.

This file was deleted.

1 change: 0 additions & 1 deletion changes/23651-reenter-password

This file was deleted.

1 change: 0 additions & 1 deletion changes/23669-dismiss-error-flash-on-url-change-dup

This file was deleted.

4 changes: 2 additions & 2 deletions charts/fleet/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ name: fleet
keywords:
- fleet
- osquery
version: v6.2.1
version: v6.2.3
home: https://github.com/fleetdm/fleet
sources:
- https://github.com/fleetdm/fleet.git
appVersion: v4.59.0
appVersion: v4.60.1
dependencies:
- name: mysql
condition: mysql.enabled
Expand Down
2 changes: 1 addition & 1 deletion charts/fleet/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
hostName: fleet.localhost
replicas: 3 # The number of Fleet instances to deploy
imageRepository: fleetdm/fleet
imageTag: v4.59.0 # Version of Fleet to deploy
imageTag: v4.60.1 # Version of Fleet to deploy
podAnnotations: {} # Additional annotations to add to the Fleet pod
serviceAccountAnnotations: {} # Additional annotations to add to the Fleet service account
resources:
Expand Down
4 changes: 4 additions & 0 deletions cmd/fleet/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ the way that the Fleet server works.
if config.MysqlReadReplica.Address != "" {
opts = append(opts, mysql.Replica(&config.MysqlReadReplica))
}
// NOTE this will disable OTEL/APM interceptor
if dev && os.Getenv("FLEET_DEV_ENABLE_SQL_INTERCEPTOR") != "" {
opts = append(opts, mysql.WithInterceptor(&devSQLInterceptor{
logger: kitlog.With(logger, "component", "sql-interceptor"),
Expand Down Expand Up @@ -1027,6 +1028,9 @@ the way that the Fleet server works.
"get_frontend",
service.ServeFrontend(config.Server.URLPrefix, config.Server.SandboxEnabled, httpLogger),
)

frontendHandler = service.WithMDMEnrollmentMiddleware(svc, httpLogger, frontendHandler)

apiHandler = service.MakeHandler(svc, config, httpLogger, limiterStore)

setupRequired, err := svc.SetupRequired(baseCtx)
Expand Down
4 changes: 3 additions & 1 deletion cmd/fleetctl/apply_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3781,7 +3781,9 @@ spec:
macos_settings:
enable_disk_encryption: true
`,
wantErr: `Couldn't edit enable_disk_encryption. Neither macOS MDM nor Windows is turned on`,

// Since Linux disk encryption does not use MDM, we allow enabling it even without MDM enabled and configured
wantOutput: `[+] applied fleet config`,
},
{
desc: "app config macos_settings.enable_disk_encryption false",
Expand Down
4 changes: 2 additions & 2 deletions cmd/fleetctl/gitops.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,12 +299,12 @@ func checkABMTeamAssignments(config *spec.GitOps, fleetClient *service.Client) (
return nil, false, false, errors.New(fleet.AppleABMDefaultTeamDeprecatedMessage)
}

abmToks, err := fleetClient.ListABMTokens()
abmToks, err := fleetClient.CountABMTokens()
if err != nil {
return nil, false, false, err
}

if hasLegacyConfig && len(abmToks) > 1 {
if hasLegacyConfig && abmToks > 1 {
return nil, false, false, errors.New(fleet.AppleABMDefaultTeamDeprecatedMessage)
}

Expand Down
12 changes: 12 additions & 0 deletions cmd/fleetctl/gitops_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1217,6 +1217,9 @@ func TestGitOpsBasicGlobalAndTeam(t *testing.T) {
ds.ListABMTokensFunc = func(ctx context.Context) ([]*fleet.ABMToken, error) {
return []*fleet.ABMToken{}, nil
}
ds.GetABMTokenCountFunc = func(ctx context.Context) (int, error) {
return 0, nil
}
ds.DeleteSetupExperienceScriptFunc = func(ctx context.Context, teamID *uint) error {
return nil
}
Expand Down Expand Up @@ -1815,6 +1818,9 @@ func TestGitOpsFullGlobalAndTeam(t *testing.T) {
ds.ListABMTokensFunc = func(ctx context.Context) ([]*fleet.ABMToken, error) {
return []*fleet.ABMToken{}, nil
}
ds.GetABMTokenCountFunc = func(ctx context.Context) (int, error) {
return 0, nil
}

apnsCert, apnsKey, err := mysql.GenerateTestCertBytes()
require.NoError(t, err)
Expand Down Expand Up @@ -2854,6 +2860,9 @@ software:
}
return []*fleet.ABMToken{{OrganizationName: "Fleet Device Management Inc."}, {OrganizationName: "Foo Inc."}}, nil
}
ds.GetABMTokenCountFunc = func(ctx context.Context) (int, error) {
return len(tt.tokens), nil
}

ds.TeamsSummaryFunc = func(ctx context.Context) ([]*fleet.TeamSummary, error) {
var res []*fleet.TeamSummary
Expand Down Expand Up @@ -3177,6 +3186,9 @@ software:
ds.ListABMTokensFunc = func(ctx context.Context) ([]*fleet.ABMToken, error) {
return []*fleet.ABMToken{{OrganizationName: "Fleet Device Management Inc."}, {OrganizationName: "Foo Inc."}}, nil
}
ds.GetABMTokenCountFunc = func(ctx context.Context) (int, error) {
return 1, nil
}

ds.TeamsSummaryFunc = func(ctx context.Context) ([]*fleet.TeamSummary, error) {
var res []*fleet.TeamSummary
Expand Down
55 changes: 51 additions & 4 deletions cmd/osquery-perf/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"net/http"
_ "net/http/pprof"
"os"
"sort"
"strconv"
"strings"
"sync"
Expand Down Expand Up @@ -1412,6 +1413,7 @@ func (a *agent) orbitEnroll() error {
EnrollSecret: a.EnrollSecret,
HardwareUUID: a.UUID,
HardwareSerial: a.SerialNumber,
Hostname: a.CachedString("hostname"),
}
jsonBytes, err := json.Marshal(params)
if err != nil {
Expand Down Expand Up @@ -2097,8 +2099,9 @@ func (a *agent) runLiveQuery(query string) (results []map[string]string, status
}
}

func (a *agent) processQuery(name, query string) (
handled bool, results []map[string]string, status *fleet.OsqueryStatus, message *string, stats *fleet.Stats,
func (a *agent) processQuery(name, query string, cachedResults *cachedResults) (
handled bool, results []map[string]string,
status *fleet.OsqueryStatus, message *string, stats *fleet.Stats,
) {
const (
hostPolicyQueryPrefix = "fleet_policy_query_"
Expand Down Expand Up @@ -2164,6 +2167,33 @@ func (a *agent) processQuery(name, query string) (
}
if ss == fleet.StatusOK {
results = a.softwareMacOS()
cachedResults.software = results
}
return true, results, &ss, nil, nil
case name == hostDetailQueryPrefix+"software_macos_codesign":
// Given queries run in lexicographic order software_macos already run and
// cachedResults.software should have its results.
ss := fleet.StatusOK
if a.softwareQueryFailureProb > 0.0 && rand.Float64() <= a.softwareQueryFailureProb {
ss = fleet.OsqueryStatus(1)
}
if ss == fleet.StatusOK {
if len(cachedResults.software) > 0 {
for _, s := range cachedResults.software {
if s["source"] != "apps" {
continue
}
installedPath := s["installed_path"]
teamIdentifier := s["name"] // use name to be fixed (more realistic than changing often).
if len(teamIdentifier) > 10 {
teamIdentifier = teamIdentifier[:10]
}
results = append(results, map[string]string{
"path": installedPath,
"team_identifier": teamIdentifier,
})
}
}
}
return true, results, &ss, nil, nil
case name == hostDetailQueryPrefix+"software_windows":
Expand Down Expand Up @@ -2254,6 +2284,10 @@ func (a *agent) processQuery(name, query string) (
}
}

type cachedResults struct {
software []map[string]string
}

func (a *agent) DistributedWrite(queries map[string]string) error {
r := service.SubmitDistributedQueryResultsRequest{
Results: make(fleet.OsqueryDistributedQueryResults),
Expand All @@ -2262,8 +2296,21 @@ func (a *agent) DistributedWrite(queries map[string]string) error {
Stats: make(map[string]*fleet.Stats),
}
r.NodeKey = a.nodeKey
for name, query := range queries {
handled, results, status, message, stats := a.processQuery(name, query)

cachedResults := cachedResults{}

// Sort queries to be executed by lexicographic name order (for result processing
// to be more predictable). This aligns to how osquery executes the queries.
queryNames := make([]string, 0, len(queries))
for name := range queries {
queryNames = append(queryNames, name)
}
sort.Strings(queryNames)

for _, name := range queryNames {
query := queries[name]

handled, results, status, message, stats := a.processQuery(name, query, &cachedResults)
if !handled {
// If osquery-perf does not handle the incoming query,
// always return status OK and the default query result.
Expand Down
17 changes: 17 additions & 0 deletions docs/Contributing/Audit-logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,23 @@ This activity contains the following fields:
}
```

## fleet_enrolled

Generated when a host is enrolled to Fleet (Fleet's agent fleetd is installed).

This activity contains the following fields:
- "host_serial": Serial number of the host.
- "host_display_name": Display name of the host.

#### Example

```json
{
"host_serial": "B04FL3ALPT21",
"host_display_name": "WIN-DESKTOP-JGS78KJ7C"
}
```

## mdm_enrolled

Generated when a host is enrolled in Fleet's MDM.
Expand Down
Loading