fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
3.16k stars 432 forks source link

Windows custom settings (configuration profiles) #13281

Closed noahtalerman closed 9 months ago

noahtalerman commented 1 year ago

Goal

User story
As an IT admin,
I want to add Windows profiles
so that I can enforce custom settings on Windows workstations to keep them compliant and secure.

Requirements

Changes

Product

Engineering

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

Context

QA

Manual testing steps

UI: [X] Verify Zero-state [X] Validate copy changes against Figma [X] Verify UI allows upload of .xml files for any teams & “no team” by any Admin or Maintainer [X] Name of Profile is pulled from XML file [X] Verify able to download & delete files [X] Host counts/statuses are accurate [X] Controls page filters link to correct hosts [X] Verify copy for upload statuses & delete modal [X] Verify pagination [X] Verify role permissions match current for macOS profiles [X] Verify Activity Feed entries

[X] Verify that on team transfer, profiles are not removed from host but no longer show in host status [X] Verify no profile redelivery on failure, test manual remediation via team transfer

CLI: [X] Verify able to apply profiles with a yaml file

Testing notes

Confirmation

  1. [ ] Engineer (@____): Added comment to user story confirming succesful completion of QA.
  2. [ ] QA (@____): Added comment to user story confirming succesful completion of QA.
noahtalerman commented 1 year ago

@marko-lisica heads up that I'm linking to your research doc here and in the issue description so other folks that come across this issue can check it out.

noahtalerman commented 1 year ago

@marko-lisica I chatted with @marcosd4h today and we ran into an interesting UX question regarding sending one MDM command for many OMA URIs v. sending one command for each OMA URI.

I think the key problem we want to solve is this: as an IT admin, I want to be able to see a raw feed of the Windows MDM commands that Fleet ran so that I can inspect a specific command during debugging.

I recorded my thoughts here in a Loom: https://www.loom.com/spaces/All-Fleet-67132/folders/historicalmisc-86bc8a2d884c4313ac3a4da785510ccd

noahtalerman commented 1 year ago

Research

https://docs.google.com/document/d/1Ie-BsUsaBKZiDspogeP1c4ac4AdrV8wYLYBA7pN3WPY/edit#heading=h.zcar6kjvw47a

noahtalerman commented 1 year ago

Double check profiles w/ mdm_bridge table. In the response of mdm_bridge query, if the profiles's OMA URIs and values are matching what's in the profile, profile status is set to "Verified." If not, profile is set to "Failed."

Hey @marko-lisica heads up, I moved these here (removed from issue description). Also moved the below down here so we don't lose it:

noahtalerman commented 1 year ago

Hey @marko-lisica this is the language I think we should be using when talking about MDM commands and profiles: https://docs.google.com/document/d/17loPAoQSxZDk41IPHdNgKF6mBIF4ZzRtvIqtbDLZwP4/edit

When you get the chance, can you please check it out and let me know what you think? Thanks!

noahtalerman commented 1 year ago

For later: Check if there's a way to reset Windows a host to default. I think this will results in the same behavior we see on macOS on host team transfer.

noahtalerman commented 1 year ago

@georgekarrv this story is ready for specs (moved to "Settled"). I scheduled a call for us to stub out some subtasks.

Because this story is large I want to try something new: scheduling time w/ individual folks on eng team to hone in on specific sub tasks.

Let's discuss during our call.

noahtalerman commented 1 year ago

George:

noahtalerman commented 1 year ago

Need to design API changes for list of profiles on Host details page for Windows hosts. We already have something like this for macOS hosts.

@marko-lisica George and I realized we're missing these^ API designs. Can you please take a crack at them and then schedule time to review w/ me on Monday? Thanks!

noahtalerman commented 1 year ago

@marko-lisica heads up, I think we need to solve this problem in the UI: As an IT admin, I want to know that a "Pending" Windows profile will still get delivered after I delete it.

More context in this Loom: https://www.loom.com/share/873032eca0964a26b67dec413b67ee93?sid=ab2edef6-8b26-4ef2-81e1-7bdc5dbe5c1b

noahtalerman commented 1 year ago

@marko-lisica also a reminder in case you missed this: https://github.com/fleetdm/fleet/issues/13281#issuecomment-1751396499

I think we still need these API changes designed.

marko-lisica commented 1 year ago

@marko-lisica heads up, I think we need to solve this problem in the UI: As an IT admin, I want to know that a "Pending" Windows profile will still get delivered after I delete it.

How does it work for macOS profiles? Is there way to remove the macOS profile?

noahtalerman commented 1 year ago

Hey @marko-lisica when you get the chance, can you please update the example response in the fleetctl get mdm-command-result Figma here to reflect what the response would be if an IT admin uploaded the profile example in your gist here?

Today I was trying to explain to @marcosd4h that we want to generate one entry in the results list when an IT admin uploads one profile (or 3 entries for 3 profiles). I was using your profile gist as an example.

I think it would help the team's understanding if result XML was for the profile in the gist.

noahtalerman commented 1 year ago

Discussed w/ @marcosd4h today (on Windows profiles):

Each Windows profile is sent as one command in Fleet. Each command shows up as one entry in fleetctl get mdm-command results response w/ it's results.

So, if the IT admin uploads 3 profiles, there will be 3 entries in the fleetctl get mdm-command results

Added the above to Figma here.

Also, we want to show the entire response XML from a Windows MDM command in fleetctl get mdm-command results. Added this to Figma here.

cc @georgekarrv @roperzh @gillespi314 @marko-lisica

noahtalerman commented 1 year ago

If a profile fails, none of the options in the profile are applied

Heads up @georgekarrv @sabrinabuckets I called this out explicitly in the requirements (it's in Figma here)

@marko-lisica @marcosd4h and I decided that we'll do this by wrapping the profiles in the <Atomic> tags (Windows protocol tag). The IT admin won't see the <Atomic> tags when the download the profile via the Fleet UI/API.

noahtalerman commented 1 year ago

@marko-lisica, @georgekarrv and I noticed that Figma doesn't include specs for updating the profile status filter on the Hosts page (here's the link). Should we change this to "OS settings"?

Screenshot 2023-10-16 at 5 05 44 PM
marko-lisica commented 1 year ago

Should we change this to "OS settings"?

@noahtalerman @georgekarrv We should change this. I've spaced this already in BitLocker designs, but seems it wasn't clear enough. I'll add a note to Windows profiles here.

mna commented 1 year ago

@noahtalerman @marko-lisica Clarification for permissions, the spec mentions:

maintainers, admins, and GitOps users (global and team) can view, add, download, and delete Windows profiles

But gitops cannot view/download, it can only batch-apply via fleetctl, correct? Basically, we want the same permissions that already exist for macOS profiles?

noahtalerman commented 1 year ago

we want the same permissions that already exist for macOS profiles?

@mna that's right. Thanks for catching that. I updated the story's description to reflect this.

cc @marko-lisica

sabrinabuckets commented 11 months ago

Manual testing completed

noahtalerman commented 10 months ago

Confirm and celebrate:

noahtalerman commented 10 months ago

Confirm and celebrate:

@noahtalerman

noahtalerman commented 9 months ago

C&C: Docs and pricing page PR is here: #16398

fleet-release commented 9 months ago

Windows profiles stream, Like a river through the cloud, Workstations secure.