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

API design: #22075 Option to automatically migrate Windows workstations #22288

Closed
wants to merge 82 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
518a4a1
Use previous package filename for activity if installer edit doesn't …
iansltx Sep 17, 2024
f135d5b
UI – 2 small unreleased bug fixes for software install policy automat…
jacobshandling Sep 17, 2024
2bfbf2f
Allow CA certificates with extendedKeyUsage attributes. (#22160)
roperzh Sep 17, 2024
b11edd9
Add CIS policy for tests (#22112)
sharon-fdm Sep 17, 2024
ddbdce4
Updated PS1 install/uninstall scripts to fail on error. (#22164)
getvictor Sep 17, 2024
1f1bc9c
Website: add default organization to Premium trial license keys. (#22…
eashaw Sep 17, 2024
ea2a978
Ensure edited scripts provided from the client with newline switches …
iansltx Sep 18, 2024
f7fab00
Pass through uninstall error messages from backend (#22208)
iansltx Sep 18, 2024
4ee79ae
UI: handle possibly 'null' 'storedPolicy.team_id' on update policy ca…
jacobshandling Sep 18, 2024
90959db
Fixes for no-team.yml GitOps (#22210)
lucasmrod Sep 18, 2024
36ea5cc
Update tooltip for mac minimum target OS version label (#22157)
ghernandez345 Sep 18, 2024
721ed30
Website: Add search and breadcrumbs to article template page (#22171)
eashaw Sep 18, 2024
9a1b376
show correct chrome software icon for chrome packages (#22233)
ghernandez345 Sep 19, 2024
ebb62af
Website: Deliver contact form messages to Slack (#22231)
eashaw Sep 19, 2024
246fa60
Iron out the nav -- Update layout.ejs (#22151)
mikermcneil Sep 19, 2024
6ab05de
Update link + CTA on pricing.ejs (#22229)
mikermcneil Sep 19, 2024
ad4c05e
Website: Update start CTA orb image (psyStage 4) (#22232)
eashaw Sep 19, 2024
90c04ee
fix: stop profiles that never reached the host from showing up as fai…
jahzielv Sep 19, 2024
e2ac27e
Document 0-day macOS major version support process beginning with mac…
lukeheath Sep 19, 2024
d52335e
Update link, clarify iOS (#22230)
mikermcneil Sep 19, 2024
f247e57
Add template response to hiring steps (#22255)
Sampfluger88 Sep 19, 2024
edec764
Remove AE position (#22256)
Sampfluger88 Sep 19, 2024
07a5826
fleetdm.com/start: suggested copy change for fleetctl install (#22251)
noahtalerman Sep 19, 2024
2a88d5a
Add Product Designer position (#22250)
noahtalerman Sep 20, 2024
e4b6fae
Update pricing-features-table.yml (#22235)
noahtalerman Sep 20, 2024
2708988
Fleet UI: Fix observer persisting host_id when querying host from hos…
RachelElysia Sep 20, 2024
8d664bd
Make software batch endpoint asynchronous (#22258)
lucasmrod Sep 20, 2024
92d3b70
Update discovering-chrome-ai-using-fleet.md (#22268)
nonpunctual Sep 20, 2024
eeb0579
Dogfood: remove "Explore data (fleetdm.com)" team (#22246)
noahtalerman Sep 20, 2024
1677783
GitOps & API design: Add multiple Apple Business Manager and Volume P…
noahtalerman Sep 20, 2024
84473c2
feat: update MDM migration guide with new UX (#22128)
jahzielv Sep 20, 2024
a17ab39
Update button name in deploy-fleet.md (#22271)
rebeccaui Sep 20, 2024
fc8b1d6
Remove placeholder text (#22274)
noahtalerman Sep 20, 2024
d7594d1
Fleet UI: Disable install/uninstall actions if scripts are disabled (…
RachelElysia Sep 20, 2024
ff62f98
Update rest-api.md
rachaelshaw Sep 20, 2024
b26c592
Handbook: Update drafting steps (#22286)
rachaelshaw Sep 22, 2024
2d90b7f
Update product-design.rituals.yml (#22285)
rachaelshaw Sep 22, 2024
85a8cb9
Clarify empty space formatting (#22294)
Sampfluger88 Sep 22, 2024
6d9eb8d
Clean up Product Design responsibilities (#22282)
noahtalerman Sep 23, 2024
b5fcaa7
Update story template (#22280)
noahtalerman Sep 23, 2024
66a9fb2
Update hiring steps (#22296)
Sampfluger88 Sep 23, 2024
2ce2b80
Update versions of fleetd components in Fleet's TUF [automated] (#22289)
github-actions[bot] Sep 23, 2024
cbf563f
Use sync.Map for stubbed key-value store to avoid data races in GitOp…
iansltx Sep 23, 2024
e861ae7
Release fleetd 1.33.0 (#22283)
lucasmrod Sep 23, 2024
f83260a
Fleet UI: Host details > about info uses less columns at small widths…
RachelElysia Sep 23, 2024
b14f7fa
Update versions of fleetd components in Fleet's TUF [automated] (#22305)
github-actions[bot] Sep 23, 2024
631dc60
add s3 installers to loadtest (#22306)
rfairburn Sep 23, 2024
3163314
Fixed self-service checkbox appearing when iOS or iPadOS app is selec…
lukeheath Sep 23, 2024
dd583f0
Update docs codeowners temporarily (#22320)
lukeheath Sep 23, 2024
adf19c4
Reference docs for v4.57.0 (#22319)
noahtalerman Sep 23, 2024
03c3c6c
Docs: OS updates page - unclear tooltip copy (#22272)
marko-lisica Sep 23, 2024
1fdd127
Add macOS policies for patching in workstations-canary.yml (#22323)
dherder Sep 23, 2024
dfc7289
Add missing docs for batch apply VPP apps (#22265)
lucasmrod Sep 23, 2024
21b3c46
Add doc API changes for the now async software batch (#22259)
lucasmrod Sep 23, 2024
d83ed46
Add batch app store apps documentation (#21912)
dantecatalfamo Sep 23, 2024
9c3ad8b
Article: Guide Enable Okta Verify on macOS (#22328)
spokanemac Sep 23, 2024
6fce24c
Article: Fleet 4.57.0 release (#22173)
spokanemac Sep 23, 2024
c06eb13
Article: Guide BYOD enroll iOS iPadOS (#22281)
spokanemac Sep 23, 2024
b9a5107
Article deploy software packages (#22245)
spokanemac Sep 23, 2024
c51c20a
Adding changes for Fleet v4.57.0 (#22109) (#22327)
lukeheath Sep 24, 2024
752c2c0
Remove weird format thing (#22333)
Sampfluger88 Sep 24, 2024
bd96663
Add Kendra to team table (#22334)
Sampfluger88 Sep 24, 2024
111b243
Add steps to enable email sync (#22335)
Sampfluger88 Sep 24, 2024
aa38b10
fix: #22297 re-enable Escrow Buddy in the auth-db (#22298)
F1Feng Sep 24, 2024
f0babb7
Permissions guide: Apple Business Manager and Volume Purchasing Progr…
noahtalerman Sep 24, 2024
f5a7587
update the help text of macOS min version input (#22337)
ghernandez345 Sep 24, 2024
3b001ea
Fleet UI: Host status dropdown styling fixes (#22314)
RachelElysia Sep 24, 2024
57abc0f
Fleet UI: Fix self-service icon from cutting off (#22310)
RachelElysia Sep 24, 2024
31ac408
Fleet UI: Hide redundant built in label filtering (#22308)
RachelElysia Sep 24, 2024
537da81
Update README.md (#22347)
Sampfluger88 Sep 24, 2024
db1c374
fix TestEscrowBuddy/TestEscrowBuddyRotatesKey test (#22345)
roperzh Sep 24, 2024
8428f19
Move settings to no-team.yml (#22343)
lucasmrod Sep 24, 2024
f0753cf
Add redirects for all security files (#22344)
Sampfluger88 Sep 24, 2024
8cbb28b
21056 auto install document (#21362)
sharon-fdm Sep 24, 2024
ea0175e
Improve MySQL queries that aggregate MDM profile statuses for Apple h…
gillespi314 Sep 24, 2024
839106c
Hotfix CVE test (#22349)
mostlikelee Sep 24, 2024
adf3ad6
allow to install VPP apps without scripts (#22365)
roperzh Sep 25, 2024
38ba6cc
fix: update docs with accurate response body (#22360)
jahzielv Sep 25, 2024
18026d5
Fleet UI: Improve select targets dropdown (#22348)
RachelElysia Sep 25, 2024
345d35c
New Product design responsibility (#22284)
noahtalerman Sep 25, 2024
692e0fc
Fleet UI: Surface duplicate label name error to users (#22389)
RachelElysia Sep 25, 2024
927b77a
Merge branch 'main' into 22075-api-design
rachaelshaw Sep 25, 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
10 changes: 5 additions & 5 deletions .github/ISSUE_TEMPLATE/story.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ What else should contributors [keep in mind](https://fleetdm.com/handbook/compan
## Changes

### Product
- [ ] Reference documentation changes: TODO <!-- Specify references documentation changes at fleetdm.com/docs -->
- [ ] UI changes: TODO <!-- Insert the link to the relevant Figma cover page. Put "No changes" if there are no changes to the user interface. -->
- [ ] CLI (fleetctl) usage changes: TODO <!-- Insert the link to the relevant Figma cover page. Put "No changes" if there are no changes to the CLI. -->
- [ ] YAML changes: TODO <!-- Specify changes as a PR to the YAML files doc page. Put "No changes" if there are no changes necessary. -->
- [ ] REST API changes: TODO <!-- Specify changes as a PR to the REST API doc page. Put "No changes" if there are no changes necessary. Move this item to the engineering list below if engineering will design the API changes. -->
- [ ] YAML changes: TODO <!-- Specify changes in the YAML files doc page as a PR to the reference docs release branch. Put "No changes" if there are no changes necessary. -->
- [ ] REST API changes: TODO <!-- Specify changes in the the REST API doc page as a PR to reference docs release branch. Put "No changes" if there are no changes necessary. Move this item to the engineering list below if engineering will design the API changes. -->
- [ ] Fleet's agent (fleetd) changes: TODO <!-- Specify changes to fleetd. If the change requires a new Fleet (server) version, consider specifying to only enable this change in new Fleet versions. Put "No changes" if there are no changes necessary. -->
- [ ] Activity changes: TODO <!-- Specify changes to Fleet's activity feed as a draft PR to the Audit log page in the contributor docs: https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Audit-logs.md This PR will be closed before release because the Audit log page is automatically generated: https://fleetdm.com/handbook/company/communications#audit-logs Put "No changes" if there are no changes necessary. -->
- [ ] Permissions changes: TODO <!-- Specify changes as a PR to the Manage access doc page. If doc changes aren't necessary, explicitly mention no changes to the doc page. Put "No changes" if there are no permissions changes. -->
- [ ] Changes to paid features or tiers: TODO <!-- Specify changes as a PR to fleetdm.com/pricing (pricing-features-table.yml). Remove this checkbox and specify "Fleet Free" or "Fleet Premium" if there are no changes to the pricing page necessary. -->
- [ ] Permissions changes: TODO <!-- Specify changes in the Manage access doc page as a PR to the reference docs release branch. If doc changes aren't necessary, explicitly mention no changes to the doc page. Put "No changes" if there are no permissions changes. -->
- [ ] Changes to paid features or tiers: TODO <!-- Specify changes in pricing-features-table.yml as a PR to reference docs release branch. Remove this checkbox and specify "Fleet Free" or "Fleet Premium" if there are no changes to the pricing page necessary. -->
- [ ] Other reference documentation changes: TODO <!-- Any other reference doc changes? Specify changes as a PR to reference docs release branch. Put "No changes" if there are no changes necessary. -->
- [ ] Once shipped, requester has been notified

### Engineering
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/generate-desktop-targets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,13 @@ on:
- '.github/workflows/generate-desktop-targets.yml'
workflow_dispatch:

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id}}
cancel-in-progress: true

defaults:
run:
# fail-fast using bash -eo pipefail. See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
shell: bash

env:
FLEET_DESKTOP_VERSION: 1.32.0
FLEET_DESKTOP_VERSION: 1.33.0

permissions:
contents: read
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/goreleaser-orbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ on:
tags:
- "orbit-*" # For testing, use a pre-release tag like 'orbit-1.24.0-1'

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id}}
cancel-in-progress: true

defaults:
run:
# fail-fast using bash -eo pipefail. See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
Expand Down
53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,56 @@
## Fleet 4.57.0 (Sep 23, 2024)

**Endpoint Operations**

- Added support for configuring policy installers via GitOps.
- Added support for policies in "No team" that run on hosts that belong to "No team".
- Added reserved team names: "All teams" and "No team".
- Added support the software status filter for 'No teams' on the hosts page.
- Enable 'No teams' funcitonality for the policies page and associated workflows.
- Added reset install counts and cancel pending installs/uninstalls when GitOps installer updates change package contents.
- Added support for software installer packages, self-service flag, scripts, pre-install query, and self-service availability to be edited in-place rather than deleted and re-added.

**Device Management (MDM)**

- Added feature allowing automatic installation of software on hosts that fail policies.
- Added feature for end users to enroll BYOD devices into Fleet MDM.
- Added the ability to use Fleet to uninstall packages from hosts.
- Added an endpoint for getting an OTA MDM profile for enrolling iOS and iPadOS hosts.
- Added protocol support for OTA enrollment and automatic team assignment for hosts.
- Added validation of Setup Assistant profiles on profile upload.
- Added validation to prevent installing software on a host with a pending installation.
- Allowed custom SCEP CA certificates with any kind of extendedKeyUsage attributes.
- Modified `POST /api/latest/fleet/software/batch` endpoint to be asynchronous and added a new endpoint `GET /api/latest/fleet/software/batch/{request_uuid}` to retrieve the result of the batch upload.

**Vulnerability Management**

- Fixed a false negative vulnerability for git.
- Fixed false positive vulnerabilities for minio.
- Fixed an issue where virtual box for macOS wasn't matching against the NVD product name.
- Fixed Ubuntu python package false positive vulnerabilities by removing duplicate entries for ubuntu python packages installed by dpkg and renaming remaining pip installed packages to match OVAL definitions.

**Bug fixes and improvements**

- Updated Go to go1.23.1.
- Removed validation of APNS certificate from server startup.
- Removed invalid node keys from server logs.
- Improved the UX of turning off MDM on an offline host.
- Improved clarity of GitOps VPP app ID type errors.
- Improved gitops error message about enabling windows MDM.
- Improved messaging for VPP token constraint errors.
- Improved loading state for UI tables when no data is present yet.
- Improved permissions so that hosts can no longer access installers that aren't directly assigned to them.
- Improved verification of premium license before uploading VPP tokens.
- Added "0 items" description on empty software tables for UI consistency.
- Updated the macos target minimum version tooltip.
- Fixed logic to properly catch and log APNs errors.
- Fixed UI overflow issues with OS settings table data.
- Fixed regression for checking email used to get a signed CSR.
- Fixed bugs on enrollment profiles when the organization name contains invalid XML characters.
- Fixed an issue with cron profiles delivery failing if a Windows VM is enrolled twice.
- Fixed issue where Fleet server could start when an expired ABM certificate was provided as server config.
- Fixed self-service checkbox appearing when iOS or iPadOS app is selected.

## Fleet 4.56.0 (Sep 7, 2024)

### Endpoint operations
Expand Down
4 changes: 2 additions & 2 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ go.mod @fleetdm/go
#
# (see website/config/custom.js for DRIs of other paths not listed here)
##############################################################################################
/docs @rachaelshaw
/docs/REST\ API/rest-api.md @rachaelshaw # « REST API reference documentation
/docs @rachaelshaw @lukeheath
/docs/REST\ API/rest-api.md @rachaelshaw @lukeheath # « REST API reference documentation
/docs/Contributing/API-for-contributors.md @lukeheath # « Advanced / contributors-only API reference documentation
/schema @eashaw # « Data tables (osquery/fleetd schema) documentation
/docs/Deploy/_kubernetes/ @dherder # « Kubernetes best practice
Expand Down
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ define HELP_TEXT
make generate-go - Generate and bundle required go code
make generate-js - Generate and bundle required js code
make generate-dev - Generate and bundle required code in a watch loop
make generate-doc - Generate updated API documentation for activities, osquery flags

make clean - Clean all build artifacts
make clean-assets - Clean assets only
Expand Down
80 changes: 80 additions & 0 deletions articles/automatic-software-install-in-fleet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# Automatic policy-based installation of software on hosts

![Top Image](../website/assets/images/articles/automatic-software-install-top-image.png)

Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) introduces the ability to automatically and remotely install software on hosts based on predefined policy failures. This guide will walk you through the process of configuring fleet for automatic installation of software on hosts using uploaded installation images and based on programmed policies. You'll learn how to configure and use this feature, as well as understand how the underlying mechanism works.

Fleet allows its users to upload trusted software installation files to be installed and used on hosts. This installation could be conditioned on a failure of a specific Fleet Policy.

## Prerequisites

* Fleet premium with Admin permissions.
* Fleet [v4.57.0](https://github.com/fleetdm/fleet/releases/tag/fleet-v4.57.0) or greater.

## Step-by-step instructions

1. **Adding software**: Add any software to be available for installation. Follow the [deploying software](https://fleetdm.com/guides/deploy-security-agents) document with instructions how to do it. Note that all installation steps (pre-install query, install script, and post-install script) will be executed as configured, regardless of the policy that triggers the installation.


![Add software](../website/assets/images/articles/automatic-software-install-add-software.png)

Current supported software deployment formats:
- macOS: .pkg
- Windows: .msi, .exe
- Linux: .deb

Coming soon:
- VPP for iOS and iPadOS

2. **Add a policy**: In Fleet, add a policy that failure to pass will trigger the required installation. Go to Policies tab --> Press the top right "Add policy" button. --> Click "create your own policy" --> Enter your policy SQL --> Save --> Fill in details in the Save modal and Save.

```
SELECT 1 FROM apps WHERE name = 'Adobe Acrobat Reader.app' AND version_compare(bundle_short_version, '23.001.20687') >= 0;
```

Note: In order to know the exact application name to put in the query (e.g. "Adobe Acrobat Reader.app" in the query above) you can manually install it on a canary/test host and then query SELECT * from apps;


3. **Manage automation**: Open Manage Automations: Policies Tab --> top right "Manage automations" --> "Install software".

![Manage policies](../website/assets/images/articles/automatic-software-install-policies-manage.png)

4. **Select policy**: Select (click the check box of) your newly created policy. To the right of it select from the
drop-down list the software you would like to be installed upon failure of this policy.

![Install software modal](../website/assets/images/articles/automatic-software-install-install-software.png)

Upon failure of the selected policy, the selected software installation will be triggered.

## How does it work?

* After configuring Fleet to auto-install a specific software the rest will be done automatically.
* The policy check mechanism runs on a typical 1 hour cadence on all online hosts.
* Fleet will send install requests to the hosts on the first policy failure (first "No" result for the host) or if a policy goes from "Yes" to "No". On this iteration it will not send a install request if a policy is already failing and continues to fail ("No" -> "No"). See the following flowchart for details.

![Flowchart](../website/assets/images/articles/automatic-software-install-workflow.png)
*Detailed flowchart*

## Using the REST API for self-service software packages

Fleet provides a REST API for managing software packages, including self-service software packages. Learn more about Fleet's [REST API](https://fleetdm.com/docs/rest-api/rest-api#add-team-policy).

## Managing self-service software packages with GitOps

To manage self-service software packages using Fleet's best practice GitOps, check out the `software` key in the [GitOps reference documentation](https://fleetdm.com/docs/configuration/yaml-files#policies).

## Conclusion

Software deployment can be time-consuming and risky. This guide presents Fleet's ability to mass deploy software to your fleet in a simple and safe way. Starting with uploading a trusted installer and ending with deploying it to the proper set of machines answering the exact policy defined by you.

Leveraging Fleet’s ability to install and upgrade software on your hosts, you can streamline the process of controlling your hosts, replacing old versions of software and having the up-to-date info on what's installed on your fleet.

By automating software deployment, you can gain greater control over what's installed on your machines and have better oversight of version upgrades, ensuring old software with known issues is replaced.

<meta name="articleTitle" value="Automatic installation of software on hosts">
<meta name="authorFullName" value="Sharon Katz">
<meta name="authorGitHubUsername" value="sharon-fdm">
<meta name="category" value="guides">
<meta name="publishedOn" value="2024-09-23">
<meta name="articleImageUrl" value="../website/assets/images/articles/automatic-software-install-in-fleet-731x738@2x.png">
<meta name="description" value="A guide to workflows using automatic software installation in Fleet.">
Loading
Loading