Commit Graph
16639 Commits
Author SHA1 Message Date
d716265641 Add "generate-gitops" command (#28555)
For #27476

# Checklist for submitter

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [X] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)

# Details

This PR adds a new command `generate-gitops` to the `fleetctl` tool. The
purpose of this command is to output GitOps-ready files that can then be
used with `fleetctl-gitops`.

The general usage of the command is:

```
fleectl generate-gitops --dir /path/to/dir/to/add/files/to
```

By default, the outputted files will not contain sensitive data, but
will instead add comments where the data needs to be replaced by a user.
In cases where sensitive data is redacted, the tool outputs warnings to
the user indicating which keys need to be updated.

The tool uses existing APIs to gather data for use in generating
configuration files. In some cases new API client methods needed to be
added to support the tool:

* ListConfigurationProfiles
* GetProfileContents
* GetScriptContents
* GetSoftwareTitleByID

Additionally, the response for the /api/latest/fleet/software/batch
endpoint was updated slightly to return `HashSHA256` for the software
installers. This allows policies that automatically install software to
refer to that software by hash.

Other options that we may or may not choose to document at this time:

* `--insecure`: outputs sensitive data in plaintext instead of leaving
comments
* `--print`: prints the output to stdout instead of writing files
* `--key`: outputs the value at a keypath to stdout, e.g. `--key
agent_options.config`
* `--team`: only generates config for the specified team name
* `--force`: overwrites files in the given directory (defaults to false,
which errors if the dir is not empty)

# Technical notes

The command is implemented using a `GenerateGitopsCommand` type which
holds some state (like a list of software and scripts encountered) as
well as a Fleet client instance (which may be a mock instance for tests)
and the CLI context (containing things like flags and output writers).
The actual "action" of the CLI command calls the `Run()` method of the
`GenerateGitopsCommand` var, which delegates most of the work to other
methods like `generateOrgSettings()`, `generateControls()`, etc.

Wherever possible, the subroutines use reflection to translate Go struct
fields into JSON property names. This guarantees that the correct keys
are written to config files, and protects against the unlikely event of
keys changing.

When sensitive data is encountered, the subroutines call `AddComment()`
to get a new token to add to the config files. These tokens are replaced
with comments like `# TODO - Add your enrollment secrets here` in the
final output.

# Known issues / TODOs:

* The `macos_setup` configuration is not output by this tool yet. More
planning is required for this. In the meantime, if the tool detects that
`macos_setup` is configured on the server, it outputs a key with an
invalid value and prints a warning to the user that they'll need to
configure it themselves.
* `yara_rules` are not output yet. The tool adds a warning that if you
have Yara rules (which you can only upload via GitOps right now) that
you'll have to migrate them manually. Supporting this will require a new
API that we'll have to discuss the authz for, so punting on it for now.
* Fleet maintained apps are not supported by GitOps yet (coming in
https://github.com/fleetdm/fleet/issues/24469). In the meantime, this
tool will output a `fleet_maintained_apps` key and trigger a warning,
and GitOps will fail if that key is present.

---------

Co-authored-by: Lucas Manuel Rodriguez <lucas@fleetdm.com>
Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
2025-05-06 15:25:44 -05:00
jacobshandlingandJacob Shandling 07869b8ad4 Test RunScriptBatchPaginatedList (#28839)
## For #28159

### Follow-up to #28563 

- Add tests
- Misc cleanup

- [x] Added/updated automated tests

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-06 11:42:04 -07:00
Konstantin SykulevandIan Littman b2c1ddaafa Rewrite label scoping logic for listing host software, fix other ListHostSoftware bugs (#28592)
https://github.com/fleetdm/fleet/issues/28328

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
- [x] For unreleased bug fixes in a release candidate, confirmed that
the fix is not expected to adversely impact load test results or alerted
the release DRI if additional load testing is needed.

---------

Co-authored-by: Ian Littman <iansltx@gmail.com>
2025-05-06 12:32:35 -05:00
jacobshandlingandJacob Shandling 260b9ee6c3 UI: Fix condition for modal rendering (#28866)
## For #28861 

- Correctly interpret `0` as a valid team id for rendering the modal

![Screenshot 2025-05-06 at 10 04
46 AM](https://github.com/user-attachments/assets/50c890d5-8cd1-4452-b14f-864907ae53f3)

- [x] Manual QA for all new/changed functionality

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-06 10:24:15 -07:00
Eric 7ad72ad47c Website: update enrichment helper to use new API routes (#28867)
Changes:
- Updated the HTTP requests in the get-enriched helper to use
Coresignals' new API routes and authorization method.
2025-05-06 12:19:25 -05:00
Lucas Manuel Rodriguez bfe3b186d3 Fix detected CVEs and docker scout exit code to fail the Github Action (#28836)
For #28837.

Fixing this all of this because we got multiple reports from the
community and customers and these were also detected by Amazon
Inspector.

- Fixes CVE-2025-22871 by upgrading Go from 1.24.1 to 1.24.2.
- `docker scout` now fails the daily scheduled action if there are
CRITICAL,HIGH CVEs (we missed setting `exit-code: true`).
- Report CVE-2025-46569 as not affected by it because of our use of
OPA's go package.
- Report CVE-2024-8260 as not affected by it because Fleet doesn't run
on Windows.
- The `security/status.md` shows a lot of changes because we are now
sorting CVEs so that newest come first.

---

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [ ] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [ ] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/fleetd-development-and-release-strategy.md)).
- [ ] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [ ] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [ ] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
- [ ] For unreleased bug fixes in a release candidate, confirmed that
the fix is not expected to adversely impact load test results or alerted
the release DRI if additional load testing is needed.
2025-05-06 13:35:27 -03:00
Victor Lyuboslavsky 8ad9da71d6 Only allow distribution packages for bootstrap package (#28787)
For #27700 
When uploading bootstrap package for macOS setup experience, validate
that it is a Distribution package since that is required by Apple's
InstallEnterpriseApplication MDM command.


# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
2025-05-06 11:02:13 -05:00
github-actions[bot]andjahzielv 06399a2685 Update Fleet-maintained apps (#28850)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: jahzielv <19838370+jahzielv@users.noreply.github.com>
2025-05-06 10:01:18 -05:00
Luke Heath 9dd753007f Update software engineer role to be more general purpose (#28852) 2025-05-06 09:55:44 -05:00
Martin Angers 4c9b955343 Bugfix: resend only affected profile with vars on a team (#28844) 2025-05-06 10:02:23 -04:00
RachelElysia 5e05fd4dac FE: Error messages in Storybook (#28640) 2025-05-06 09:20:03 -04:00
Sam Pfluger 57af99785b Make instructions for hiring a consultant more pronounced (#28841) 2025-05-06 00:32:14 -05:00
github-actions[bot]andjahzielv 37f6fffb62 Update Fleet-maintained apps (#28826)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: jahzielv <19838370+jahzielv@users.noreply.github.com>
2025-05-05 17:04:34 -05:00
Robert Fairburn f8a638fe9f Remove old elastic agent (#28806) 2025-05-05 16:41:10 -05:00
Robert Fairburn 33f1029780 Fix dogfood settings (#28829) 2025-05-05 16:34:39 -05:00
Tim Lee 14967172a7 Downgrade sotware paths error (#28736) 2025-05-05 14:47:59 -06:00
Noah Talerman 97f84e6a1a Update CODEOWNERS (#28809)
@noahtalerman => @rachaelshaw

Rachael is back!
2025-05-05 13:06:55 -05:00
Noah Talerman 898648ee82 Update story template (#28793)
- Add Engineer to contact
2025-05-05 13:53:54 -04:00
RachelElysia cd7da066ac Fleet UI: More pixel grace for zoomed out screensize (#28778) 2025-05-05 13:42:26 -04:00
Allen Houchins abe4bce12a Update santa-test-devices.yml (#28804)
- Added another test device for `santa`
2025-05-05 11:27:27 -05:00
Allen Houchins de38811103 Update password.xml (#28802)
- Updated Windows password configuration profile to resolve an error
2025-05-05 11:16:12 -05:00
Martin Angers 672ea70876 IdP vars: add integration test, address last PR comments (#28794) 2025-05-05 11:46:10 -04:00
github-actions[bot]andjahzielv 367064ce29 Update Fleet-maintained apps (#28796)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: jahzielv <19838370+jahzielv@users.noreply.github.com>
2025-05-05 09:07:31 -05:00
RachelElysia 03a2198bf6 Fleet UI: Pass device user to use correct device user API (#28782) 2025-05-05 09:16:38 -04:00
Sam Pfluger 92d4a3171e Update (#28786) 2025-05-03 13:54:11 -05:00
github-actions[bot]andjahzielv 95fcd1128b Update Fleet-maintained apps (#28785)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: jahzielv <19838370+jahzielv@users.noreply.github.com>
2025-05-02 22:09:25 -05:00
Noah Talerman eec0722f3b Update story template (#28773) 2025-05-02 21:40:16 -05:00
Phillip BoushyandRobert Fairburn 157c9a8405 Add imagePullSecrets option to Helm Chart (#28783)
- Resolves #28776
- Includes example in values.yaml
- Added to deployment, migration, and cronjob for vulnprocessing

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [ ] Manual QA for all new/changed functionality

---------

Co-authored-by: Robert Fairburn <8029478+rfairburn@users.noreply.github.com>
2025-05-02 17:56:42 -05:00
Victor Lyuboslavsky dd10a417ec Replacing MySQL 8.4 with MySQL 9.X in our regular (every commit) tests. (#28777)
Replacing MySQL 8.4 with MySQL 9.X in our regular (every commit) tests
to speed up dev feedback. The MySQL 8.4 tests will still run nightly.

The vulnerability feed download CI fails below are not related to this
change.
2025-05-02 17:24:24 -05:00
Luke Heath c2a6c9febe Catch up 4.67.2 (#28780) 2025-05-02 15:48:29 -05:00
Jordan Montgomery c97a0e2363 Fix Windows lint issues and enable linting on Windows (#28704)
For https://github.com/fleetdm/fleet/issues/9943

This will help us avoid issues like this where the log message never
worked right:
https://github.com/fleetdm/fleet/pull/28296#discussion_r2047505191

Most of the changes are no-op type changes like removing unneeded
typecast or disabling gosec on reviewed lines of code

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [x] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/fleetd-development-and-release-strategy.md)).
- [x] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [x] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [x] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
2025-05-02 16:11:26 -04:00
Jordan Montgomery a5bd50716d Always install Escrowbuddy and Swift Dialog (#28742)
For #25928 

Always install escrowBuddy and swiftDialog so if something like a team
change happens and we suddenly require them we will have them without
waiting for the updater

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [x] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/fleetd-development-and-release-strategy.md)).
- [x] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [x] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [x] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
2025-05-02 15:31:45 -04:00
Lucas Manuel Rodriguez 8e06c314ac Fix website CI check (#28775)
CI is failing on PRs
2025-05-02 15:46:03 -03:00
Victor Lyuboslavsky 3d3d43864a Bumping MySQL 8.4.3->8.4.5 and 9.1.0->9.3.0 in tests. (#28767)
I forced a test run on 9.3.0 (which only runs nightly be default).
2025-05-02 13:40:11 -05:00
Allen Houchins 34010b1b4a Update open-positions.yml (#28735)
- Updated hiring manager and target salary information for the Solutions
Consultant role
2025-05-02 12:09:40 -05:00
jacobshandlingandJacob Shandling 722f4a03d8 UI: Premium feature message when viewing GitOps Mode toggle on Fleet Free (#28744)
## For #28743 

<img width="1350" alt="Screenshot 2025-05-01 at 3 19 24 PM"
src="https://github.com/user-attachments/assets/1fb56a1b-ce8c-4e8c-b8b6-be1d23f91380"
/>

- [x] Changes file added for user-visible changes in `changes/`
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-02 09:34:37 -07:00
jacobshandlingandJacob Shandling 19c2e9197d UI: Enable Integrations > Advanced save button in GitOps Mode (#28748)
## For #28747 

<img width="639" alt="Screenshot 2025-05-01 at 4 28 22 PM"
src="https://github.com/user-attachments/assets/0808d9fd-8866-4eb1-a84e-bef1efdd6919"
/>

- [x] Changes file added for user-visible changes in `changes/
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-02 09:32:34 -07:00
jacobshandlingandJacob Shandling dfa5573469 UI: Allow VPP token upload in GitOps mode (#28746)
## For #27941  


![ezgif-45eb8e193cea86](https://github.com/user-attachments/assets/4dee3f31-e087-4c3c-a101-3c228c5be38b)

- [x] Changes file added for user-visible changes in `changes/
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-02 09:31:36 -07:00
jacobshandlingandJacob Shandling dc490c236d UI: Clean up various states on the Settings page (#28752)
## For #28266 

<img width="1912" alt="Screenshot 2025-05-01 at 9 48 06 PM"
src="https://github.com/user-attachments/assets/f8b66d86-79c5-4166-b328-4befc3bd51f9"
/>
<img width="1912" alt="Screenshot 2025-05-01 at 9 48 44 PM"
src="https://github.com/user-attachments/assets/c7ddf782-4cfe-45a3-b291-86a61d127264"
/>
<img width="1912" alt="Screenshot 2025-05-01 at 9 49 43 PM"
src="https://github.com/user-attachments/assets/354ccdb6-f7f9-41c6-aceb-b08d2c8b76f0"
/>
<img width="1912" alt="Screenshot 2025-05-01 at 9 51 42 PM"
src="https://github.com/user-attachments/assets/d9405f9b-1146-47ea-a18c-8047cbfecffd"
/>

- [x] Changes file added for user-visible changes in `changes/`
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-02 09:14:30 -07:00
RachelElysia 57a2fb4341 Fleet UI: Add Self-service categories key and filtering (#28506) 2025-05-02 12:11:48 -04:00
jacobshandlingandJacob Shandling 5c082647bc UI: Support webhook logging configuration (#28737)
## For #28166 

- Support new webhook logging configuration
- Update and improve types

<img width="420" alt="Screenshot 2025-05-01 at 12 15 25 PM"
src="https://github.com/user-attachments/assets/0e624c6a-3d69-4c9d-a64b-2a27533e6d44"
/>

- [x] Changes file added for user-visible changes in `changes/`
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2025-05-02 09:04:05 -07:00
RachelElysia 38c84be9b1 Fleet UI: Clean up Policies > Manage automation > Software options .tar.gz / missing version (#28770) 2025-05-02 11:59:45 -04:00
Jahziel Villasana-EspinozaandIan Littman db5444d6cd software categories: backend (#28479)
> For #28138 

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Ian Littman <iansltx@gmail.com>
2025-05-02 11:41:26 -04:00
Noah Talerman 585deb8eb4 Testing updates to Fleet-maintained apps (#28441) 2025-05-02 11:02:08 -04:00
RachelElysia 12a14ea2a9 Fleet UI: Surface policy count triggering automatic installations (#28726) 2025-05-02 11:01:26 -04:00
RachelElysia e5f56fc9fa Fleet UI: VPP apps with self service shows correct install status (#28739) 2025-05-02 10:41:06 -04:00
RachelElysia c68de7c953 Fleet UI: Upload and install tarball archives (#27839) 2025-05-02 10:17:09 -04:00
Ian Littman 99d03a61de Add .tar.gz package support (#28339)
For #26692.

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

<!-- Note that API documentation changes are now addressed by the
product design team. -->

Changes file included in FE PR.

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] Added/updated automated tests
- [x] A detailed QA plan exists on the associated ticket (if it isn't
there, work with the product group's QA engineer to add it)
- [x] Manual QA for all new/changed functionality
- For Orbit and Fleet Desktop changes:
- [ ] Make sure fleetd is compatible with the latest released version of
Fleet (see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/fleetd-development-and-release-strategy.md)).
- [ ] Orbit runs on macOS, Linux and Windows. Check if the orbit
feature/bugfix should only apply to one platform (`runtime.GOOS`).
- [ ] Manual QA must be performed in the three main OSs, macOS, Windows
and Linux.
- [ ] Auto-update manual QA, from released version of component to new
version (see [tools/tuf/test](../tools/tuf/test/README.md)).
2025-05-02 09:07:35 -05:00
Marko Lisica e69883fb65 Update foreign vitals guide (IdP) (#28630)
Added note that IdP username can be added only to macOS hosts during ADE
if end user authentication is enabled.
2025-05-02 09:30:53 -04:00
Scott Gress d3ed686961 Fix bad Nudge launch command (#28729)
For #28727

## Details

[This
patch](https://github.com/fleetdm/fleet/commit/866d8bcc0073cf7837d60d43eec0b54ad718375f)
was intended to ensure that Fleet Desktop was always run with the
currently-logged-in user. This patch didn't take Nudge into account, and
it is now causing a command like sudo -u /usr/bin/open /path/to/nudge to
execute, which fails.

This PR fixes the issue by checking whether `opts.user` is populated,
and if not, falling back to the previous behavior for opening apps.

## Testing

I tested that Desktop still opens with this, so it at least doesn't
break that. Discussions ongoing re: how to test Nudge.
2025-05-01 16:13:07 -05:00