diff --git a/cmd/fleet/cron.go b/cmd/fleet/cron.go index c4ee7d5383..d9d31d95dc 100644 --- a/cmd/fleet/cron.go +++ b/cmd/fleet/cron.go @@ -1562,7 +1562,7 @@ func trySendStatistics(ctx context.Context, ds fleet.Datastore, frequency time.D } // newAppleMDMDEPProfileAssigner creates the schedule to run the DEP syncer+assigner. -// The DEP syncer+assigner fetches devices from Apple Business Manager (aka ABM) and applies +// The DEP syncer+assigner fetches devices from Apple Business (aka AB) and applies // the current configured DEP profile to them. func newAppleMDMDEPProfileAssigner( ctx context.Context, diff --git a/cmd/fleet/serve.go b/cmd/fleet/serve.go index d22ddbc9ee..6c26b8dd5f 100644 --- a/cmd/fleet/serve.go +++ b/cmd/fleet/serve.go @@ -687,7 +687,7 @@ func runServeCmd(cmd *cobra.Command, configManager configpkg.Manager, debug, dev return true, nil } - // reconcile Apple Business Manager configuration environment variables with the database + // reconcile Apple Business configuration environment variables with the database if config.MDM.IsAppleAPNsSet() || config.MDM.IsAppleSCEPSet() { if len(config.Server.PrivateKey) == 0 { initFatal(errors.New("inserting MDM APNs and SCEP assets"), @@ -768,7 +768,7 @@ func runServeCmd(cmd *cobra.Command, configManager configpkg.Manager, debug, dev } } - // reconcile Apple Business Manager configuration environment variables with the database + // reconcile Apple Business configuration environment variables with the database if config.MDM.IsAppleBMSet() { if len(config.Server.PrivateKey) == 0 { initFatal(errors.New("inserting MDM ABM assets"), @@ -856,7 +856,7 @@ func runServeCmd(cmd *cobra.Command, configManager configpkg.Manager, debug, dev logger.InfoContext(cmd.Context(), "Apple MDM enabled") } if appCfg.MDM.AppleBMEnabledAndConfigured { - logger.InfoContext(cmd.Context(), "Apple Business Manager enabled") + logger.InfoContext(cmd.Context(), "Apple Business enabled") } // register the Microsoft MDM services diff --git a/cmd/fleetctl/fleetctl/apply_test.go b/cmd/fleetctl/fleetctl/apply_test.go index 716253d71e..42b39dbbbb 100644 --- a/cmd/fleetctl/fleetctl/apply_test.go +++ b/cmd/fleetctl/fleetctl/apply_test.go @@ -2931,7 +2931,7 @@ spec: mockStore.Unlock() }) - // // TODO: restore this test when we have a way to mock the Apple Business Manager API in + // // TODO: restore this test when we have a way to mock the Apple Business API in // // fleetctl tests // t.Run("enable end user authentication", func(t *testing.T) { // ds := setupServer(t, true) diff --git a/cmd/fleetctl/fleetctl/generate.go b/cmd/fleetctl/fleetctl/generate.go index 905c16ca02..5456d4810d 100644 --- a/cmd/fleetctl/fleetctl/generate.go +++ b/cmd/fleetctl/fleetctl/generate.go @@ -91,13 +91,13 @@ func generateMDMAppleBMCommand() *cli.Command { return &cli.Command{ Name: "mdm-apple-bm", Aliases: []string{"mdm_apple_bm"}, - Usage: "Generate Apple Business Manager public key to enable automatic enrollment for macOS hosts.", + Usage: "Generate Apple Business public key to enable automatic enrollment for macOS hosts.", Flags: []cli.Flag{ contextFlag(), debugFlag(), &cli.StringFlag{ Name: "public-key", - Usage: "The output path for the Apple Business Manager public key certificate.", + Usage: "The output path for the Apple Business public key certificate.", Value: bmPublicKeyCertPath, }, }, diff --git a/cmd/fleetctl/fleetctl/get.go b/cmd/fleetctl/fleetctl/get.go index 5a03f73576..dba615904a 100644 --- a/cmd/fleetctl/fleetctl/get.go +++ b/cmd/fleetctl/fleetctl/get.go @@ -864,7 +864,7 @@ func getHostsCommand() *cli.Command { }, &cli.BoolFlag{ Name: "mdm-pending", - Usage: "Filters hosts by hosts ordered via Apple Business Manager (ABM). These will automatically enroll to Fleet and turn on MDM when they're unboxed.", + Usage: "Filters hosts by hosts ordered via Apple Business (AB). These will automatically enroll to Fleet and turn on MDM when they're unboxed.", }, }, Action: func(c *cli.Context) error { @@ -1455,7 +1455,7 @@ func getMDMAppleBMCommand() *cli.Command { return &cli.Command{ Name: "mdm-apple-bm", Aliases: []string{"mdm_apple_bm"}, - Usage: "Show information about Apple Business Manager for automatic enrollment", + Usage: "Show information about Apple Business for automatic enrollment", Flags: []cli.Flag{ configFlag(), contextFlag(), @@ -1473,7 +1473,7 @@ func getMDMAppleBMCommand() *cli.Command { if err != nil { var nfe service.NotFoundErr if errors.As(err, &nfe) { - log(c, "Error: No Apple Business Manager server token found. Use `fleetctl generate mdm-apple-bm` and then `fleet serve` with `mdm` configuration to automatically enroll macOS hosts to Fleet.\n") + log(c, "Error: No Apple Business server token found. Use `fleetctl generate mdm-apple-bm` and then `fleet serve` with `mdm` configuration to automatically enroll macOS hosts to Fleet.\n") return nil } return fmt.Errorf("could not get Apple BM information: %w", err) @@ -1494,10 +1494,10 @@ func getMDMAppleBMCommand() *cli.Command { warnDate := time.Now().Add(expirationWarning) if bm.RenewDate.Before(time.Now()) { // certificate is expired, print an error - color.New(color.FgRed).Fprintln(c.App.Writer, "\nERROR: Your Apple Business Manager (ABM) server token is expired. Laptops newly purchased via ABM will not automatically enroll in Fleet. To renew your ABM server token, follow these instructions: https://fleetdm.com/docs/using-fleet/faq#how-can-i-renew-my-apple-business-manager-server-token") + color.New(color.FgRed).Fprintln(c.App.Writer, "\nERROR: Your Apple Business (AB) server token is expired. Laptops newly purchased via ABM will not automatically enroll in Fleet. To renew your ABM server token, follow these instructions: https://fleetdm.com/docs/using-fleet/faq#how-can-i-renew-my-apple-business-manager-server-token") } else if bm.RenewDate.Before(warnDate) { // certificate will soon expire, print a warning - color.New(color.FgYellow).Fprintln(c.App.Writer, "\nWARNING: Your Apple Business Manager (ABM) server token is less than 30 days from expiration. If it expires, laptops newly purchased via ABM will not automatically enroll in Fleet. To renew your ABM server token, follow these instructions: https://fleetdm.com/docs/using-fleet/faq#how-can-i-renew-my-apple-business-manager-server-token") + color.New(color.FgYellow).Fprintln(c.App.Writer, "\nWARNING: Your Apple Business (AB) server token is less than 30 days from expiration. If it expires, laptops newly purchased via ABM will not automatically enroll in Fleet. To renew your ABM server token, follow these instructions: https://fleetdm.com/docs/using-fleet/faq#how-can-i-renew-my-apple-business-manager-server-token") } return nil diff --git a/cmd/fleetctl/fleetctl/get_test.go b/cmd/fleetctl/fleetctl/get_test.go index 60fc27f909..361838b8f8 100644 --- a/cmd/fleetctl/fleetctl/get_test.go +++ b/cmd/fleetctl/fleetctl/get_test.go @@ -2375,7 +2375,7 @@ func TestGetAppleBM(t *testing.T) { } out := RunAppForTest(t, []string{"get", "mdm_apple_bm"}) - assert.Contains(t, out, "No Apple Business Manager server token found.") + assert.Contains(t, out, "No Apple Business server token found.") }) t.Run("premium license, multiple tokens", func(t *testing.T) { diff --git a/cmd/fleetctl/fleetctl/templates/new/default.template.yml b/cmd/fleetctl/fleetctl/templates/new/default.template.yml index 9e437b31e0..4d689347c0 100644 --- a/cmd/fleetctl/fleetctl/templates/new/default.template.yml +++ b/cmd/fleetctl/fleetctl/templates/new/default.template.yml @@ -61,15 +61,15 @@ org_settings: ########################################################### # Uncomment when you are ready to start using zero-touch enrollment - # for Apple devices via Apple Business Manager (ABM). + # for Apple devices via Apple Business (AB). # # Read more: # • https://fleetdm.com/docs/configuration/yaml-files#apple-business-manager # • https://fleetdm.com/guides/apple-mdm-setup#apple-business-manager-abm ########################################################### # apple_business_manager: - # - organization_name: "My Company, Inc." # This must exactly match the organization name in Apple Business Manager (ABM). - # macos_fleet: "💻 Workstations" # Where new macOS devices from ABM will appear + # - organization_name: "My Company, Inc." # This must exactly match the organization name in Apple Business (AB). + # macos_fleet: "💻 Workstations" # Where new macOS devices from AB will appear ########################################################### # Uncomment to start using Apple's volume purchase program (VPP) @@ -81,7 +81,7 @@ org_settings: # • https://fleetdm.com/guides/apple-mdm-setup#volume-purchasing-program-vpp ########################################################### # volume_purchasing_program: - # - location: "My location." # This must exactly match a "Location" name in Apple Business Manager (ABM). + # - location: "My location." # This must exactly match a "Location" name in Apple Business (AB). # fleets: # - "💻 Workstations" # - "📱🔐 Personal mobile devices" diff --git a/ee/server/service/mdm.go b/ee/server/service/mdm.go index 15c1a24774..1f8a8b0b11 100644 --- a/ee/server/service/mdm.go +++ b/ee/server/service/mdm.go @@ -1642,7 +1642,7 @@ func (svc *Service) decryptUploadedABMToken(ctx context.Context, token io.Reader decryptedToken, err = assets.DecryptRawABMToken(encryptedToken, cert, pair[fleet.MDMAssetABMKey].Value) if err != nil { return nil, nil, ctxerr.Wrap(ctx, &fleet.BadRequestError{ - Message: "Invalid token. Please provide a valid token from Apple Business Manager.", + Message: "Invalid token. Please provide a valid token from Apple Business.", InternalErr: err, }, "validating ABM token") } diff --git a/ee/server/service/software_installers.go b/ee/server/service/software_installers.go index 3bcae49f5b..1114841bb5 100644 --- a/ee/server/service/software_installers.go +++ b/ee/server/service/software_installers.go @@ -1466,7 +1466,7 @@ func (svc *Service) InstallVPPAppPostValidation(ctx context.Context, host *fleet "host_serial", host.HardwareSerial, ) return "", &fleet.BadRequestError{ - Message: "Couldn't add software. isn't available in Apple Business Manager. Please purchase license in Apple Business Manager and try again.", + Message: "Couldn't add software. isn't available in Apple Business. Please purchase license in Apple Business and try again.", InternalErr: ctxerr.Errorf(ctx, "VPP API didn't return any assets for adamID %s", vppApp.AdamID), } } @@ -1477,7 +1477,7 @@ func (svc *Service) InstallVPPAppPostValidation(ctx context.Context, host *fleet if assets[0].AvailableCount <= 0 { return "", &fleet.BadRequestError{ - Message: "Couldn't install. No available licenses. Please purchase license in Apple Business Manager and try again.", + Message: "Couldn't install. No available licenses. Please purchase license in Apple Business and try again.", InternalErr: ctxerr.NewWithData( ctx, "license available count <= 0", map[string]any{ diff --git a/ee/server/service/vpp.go b/ee/server/service/vpp.go index bffc694fcd..9c5d94adac 100644 --- a/ee/server/service/vpp.go +++ b/ee/server/service/vpp.go @@ -677,7 +677,7 @@ func (svc *Service) AddAppStoreApp(ctx context.Context, teamID *uint, appID flee return 0, fleet.NewInvalidArgumentError( "app_store_id", fmt.Sprintf( - "Couldn't add software. %q isn't available in Apple Business Manager or Play Store. Please purchase a license in Apple Business Manager or find the app in Play Store and try again.", + "Couldn't add software. %q isn't available in Apple Business or Play Store. Please purchase a license in Apple Business or find the app in Play Store and try again.", appID.AdamID, ), ) @@ -695,7 +695,7 @@ func (svc *Service) AddAppStoreApp(ctx context.Context, teamID *uint, appID flee if len(assets) == 0 { return 0, fleet.NewInvalidArgumentError("app_store_id", - fmt.Sprintf("Error: Couldn't add software. %q isn't available in Apple Business Manager. Please purchase license in Apple Business Manager and try again.", appID.AdamID)) + fmt.Sprintf("Error: Couldn't add software. %q isn't available in Apple Business. Please purchase license in Apple Business and try again.", appID.AdamID)) } asset := assets[0] @@ -1144,7 +1144,7 @@ func (svc *Service) UploadVPPToken(ctx context.Context, token io.ReadSeeker) (*f } if token == nil { - return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business Manager.")) + return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business.")) } tokenBytes, err := io.ReadAll(token) @@ -1158,7 +1158,7 @@ func (svc *Service) UploadVPPToken(ctx context.Context, token io.ReadSeeker) (*f if errors.As(err, &vppErr) { // Per https://developer.apple.com/documentation/devicemanagement/app_and_book_management/app_and_book_management_legacy/interpreting_error_codes if vppErr.ErrorNumber == 9622 { - return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business Manager.")) + return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business.")) } } return nil, ctxerr.Wrap(ctx, err, "validating VPP token with Apple") @@ -1198,7 +1198,7 @@ func (svc *Service) UpdateVPPToken(ctx context.Context, tokenID uint, token io.R } if token == nil { - return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business Manager.")) + return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business.")) } tokenBytes, err := io.ReadAll(token) @@ -1212,7 +1212,7 @@ func (svc *Service) UpdateVPPToken(ctx context.Context, tokenID uint, token io.R if errors.As(err, &vppErr) { // Per https://developer.apple.com/documentation/devicemanagement/app_and_book_management/app_and_book_management_legacy/interpreting_error_codes if vppErr.ErrorNumber == 9622 { - return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business Manager.")) + return nil, ctxerr.Wrap(ctx, fleet.NewInvalidArgumentError("token", "Invalid token. Please provide a valid content token from Apple Business.")) } } return nil, ctxerr.Wrap(ctx, err, "validating VPP token with Apple") diff --git a/frontend/components/MDM/AppleBMRenewalMessage/AppleBMRenewalMessage.tsx b/frontend/components/MDM/AppleBMRenewalMessage/AppleBMRenewalMessage.tsx index d8a6a7cf15..ebb974cf37 100644 --- a/frontend/components/MDM/AppleBMRenewalMessage/AppleBMRenewalMessage.tsx +++ b/frontend/components/MDM/AppleBMRenewalMessage/AppleBMRenewalMessage.tsx @@ -17,7 +17,7 @@ const AppleBMRenewalMessage = ({ expired }: IAppleBMRenewalMessageProps) => { cta={ @@ -25,16 +25,16 @@ const AppleBMRenewalMessage = ({ expired }: IAppleBMRenewalMessageProps) => { > {expired ? ( <> - Your Apple Business Manager (ABM) server token has expired. macOS, - iOS, and iPadOS hosts won’t automatically enroll to Fleet. Users with - the admin role in Fleet can renew ABM. + Your Apple Business (AB) server token has expired. macOS, iOS, and + iPadOS hosts won’t automatically enroll to Fleet. Users with the admin + role in Fleet can renew AB. ) : ( <> - Your Apple Business Manager (ABM) server token is less than 30 days - from expiration. If it expires, macOS, iOS, and iPadOS hosts won’t + Your Apple Business (AB) server token is less than 30 days from + expiration. If it expires, macOS, iOS, and iPadOS hosts won’t automatically enroll to Fleet. Users with the admin role in Fleet can - renew ABM. + renew AB. )} diff --git a/frontend/components/MDM/AppleBMTermsMessage/AppleBMTermsMessage.tsx b/frontend/components/MDM/AppleBMTermsMessage/AppleBMTermsMessage.tsx index 10cdd7dfae..e8d380e36f 100644 --- a/frontend/components/MDM/AppleBMTermsMessage/AppleBMTermsMessage.tsx +++ b/frontend/components/MDM/AppleBMTermsMessage/AppleBMTermsMessage.tsx @@ -13,7 +13,7 @@ const AppleBMTermsMessage = () => { cta={ { } > You can’t automatically enroll macOS, iOS, and iPadOS hosts until you - accept the new terms and conditions for your Apple Business Manager (ABM). - An ABM administrator can accept these terms. If you have connected - multiple ABM instances, this banner will disappear once you accept the new - terms and conditions in all of them. + accept the new terms and conditions for your Apple Business (AB). An AB + administrator can accept these terms. If you have connected multiple AB + instances, this banner will disappear once you accept the new terms and + conditions in all of them. ); }; diff --git a/frontend/pages/DashboardPage/cards/ABMIssueHosts/ABMIssueHosts.tsx b/frontend/pages/DashboardPage/cards/ABMIssueHosts/ABMIssueHosts.tsx index 083f5a63ff..5583ace45a 100644 --- a/frontend/pages/DashboardPage/cards/ABMIssueHosts/ABMIssueHosts.tsx +++ b/frontend/pages/DashboardPage/cards/ABMIssueHosts/ABMIssueHosts.tsx @@ -16,8 +16,8 @@ interface IABMIssueHostsProps { export const abmIssueTooltip = (): JSX.Element => { return ( - Hosts that have Apple Business Manager (ABM) profile assignment issue. - Migration or new Mac setup won't work. + Hosts that have Apple Business (AB) profile assignment issue. Migration or + new Mac setup won't work. ); }; @@ -42,7 +42,7 @@ const ABMIssueHosts = ({
- These apps were added in Apple Business Manager (ABM). To add more - apps, head to{" "} - + These apps were added in Apple Business (AB). To add more apps, head + to
{showDeploySoftwareSlider && ( { return (
-

Add your ABM

+

Add your AB

Automatically enroll newly purchased Apple hosts when they're first unboxed and set up by your end users.

- +
); }; @@ -214,11 +214,11 @@ const AppleBusinessManagerPage = ({ router }: { router: InjectedRouter }) => {
-

Apple Business Manager (ABM)

+

Apple Business (AB)

{isPremiumTier && abmTokens?.length !== 0 && !!config?.mdm.enabled_and_configured && ( - + )}
<>{renderContent()} diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/AddAbmModal/AddAbmModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/AddAbmModal/AddAbmModal.tsx index d3f3d99786..068b69518a 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/AddAbmModal/AddAbmModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/AddAbmModal/AddAbmModal.tsx @@ -51,12 +51,7 @@ const AddAbmModal = ({ onCancel, onAdded }: IAddAbmModalProps) => { }, [tokenFile, renderFlash, onAdded, onCancel]); return ( - +
  1. 1. @@ -71,7 +66,7 @@ const AddAbmModal = ({ onCancel, onAdded }: IAddAbmModalProps) => { Sign in to{" "}
    @@ -129,7 +124,7 @@ const AddAbmModal = ({ onCancel, onAdded }: IAddAbmModalProps) => { isUploading ? `${baseClass}__file-uploader--loading` : "" }`} accept=".p7m" - message="ABM token (.p7m)" + message="AB token (.p7m)" graphicName="file-p7m" buttonType="brand-inverse-icon" buttonMessage={isUploading ? "Uploading..." : "Upload"} @@ -142,7 +137,7 @@ const AddAbmModal = ({ onCancel, onAdded }: IAddAbmModalProps) => { isLoading={isUploading} disabled={!tokenFile || isUploading} > - Add ABM + Add AB
diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/RenewAbmModal/RenewAbmModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/RenewAbmModal/RenewAbmModal.tsx index bc6b3c038c..db93a51a0f 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/RenewAbmModal/RenewAbmModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/AppleBusinessManagerPage/components/RenewAbmModal/RenewAbmModal.tsx @@ -66,47 +66,30 @@ const RenewAbmModal = ({ >

- Renew Apple Business Manager for {orgName}. + Renew Apple Business for {orgName} by uploading your AB token.{" "} +

-
    +
    • - 1. Sign in to{" "} - -

      -
    • -
    • -

      - 2. Select your account name at the bottom left of the - screen, then select Preferences. -

      -
    • -
    • -

      - 3. In the Your MDM Servers section, select your Fleet - server, then select Download Token at the top. -

      -
    • -
    • -

      - 4. Upload the downloaded token (.p7m file) below. + Upload the downloaded token (.p7m file) below.

    • -
+
diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/VppPage.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/VppPage.tsx index a5075cd0e5..63b2494846 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/VppPage.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/VppPage.tsx @@ -36,7 +36,7 @@ const AddVppMessage = ({ onAddVpp }: IAddVppMessageProps) => { return ( Add VPP} /> ); diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx index d17f2e631d..413afec675 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/EditTeamsVppModal/EditTeamsVppModal.tsx @@ -286,7 +286,7 @@ const EditTeamsVppModal = ({ ) } - helpText="App Store apps in this VPP token's Apple Business Manager (ABM) will only be available to install on hosts in these fleets." + helpText="App Store apps in this VPP token's Apple Business (AB) will only be available to install on hosts in these fleets." disabled={isDropdownDisabled} /> diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/RenewVppModal/helpers.ts b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/RenewVppModal/helpers.ts index a7c0fe9ea2..f755751899 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/RenewVppModal/helpers.ts +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/RenewVppModal/helpers.ts @@ -9,7 +9,7 @@ export const getErrorMessage = (err: unknown) => { }); if (invalidTokenReason) { - return "Invalid token. Please provide a valid token from Apple Business Manager."; + return "Invalid token. Please provide a valid token from Apple Business."; } return DEFAULT_ERROR_MESSAGE; diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/VppSetupSteps/VppSetupSteps.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/VppSetupSteps/VppSetupSteps.tsx index 810d46a28d..6db4d28088 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/VppSetupSteps/VppSetupSteps.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/VppPage/components/VppSetupSteps/VppSetupSteps.tsx @@ -20,7 +20,7 @@ const VppSetupSteps = ({ extendendSteps = false }: IVppSetupStepsProps) => { {extendendSteps && ( <> diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/AppleBusinessManagerSection.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/AppleBusinessManagerSection.tsx index 3f7fdba2f1..b98a1acf75 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/AppleBusinessManagerSection.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/AppleBusinessManagerSection.tsx @@ -34,7 +34,7 @@ const AppleBusinessManagerSection = ({ }; return ( - + {!isPremiumTier ? ( ) : ( diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/VppCard/VppCard.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/VppCard/VppCard.tsx index 7ce661588c..9120d65457 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/VppCard/VppCard.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/AppleBusinessManagerSection/VppCard/VppCard.tsx @@ -48,7 +48,7 @@ const VppCard = ({ isAppleMdmOn, isVppOn, viewDetails }: IVppCardProps) => { } > Add a VPP connection to install Apple App Store apps purchased through - Apple Business Manager. + Apple Business. ); diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tests.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tests.tsx index e70f87cf2a..af620d4093 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tests.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tests.tsx @@ -122,7 +122,7 @@ describe("EndUserMigrationSection", () => { render(); expect( - screen.getByText("Connect to Apple Business Manager to get started.") + screen.getByText("Connect to Apple Business to get started.") ).toBeInTheDocument(); expect(screen.getByRole("button", { name: "Connect" })).toBeInTheDocument(); }); diff --git a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tsx b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tsx index 1882b412db..5afa356ff7 100644 --- a/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tsx +++ b/frontend/pages/admin/IntegrationsPage/cards/MdmSettings/components/EndUserMigrationSection/EndUserMigrationSection.tsx @@ -153,7 +153,7 @@ const EndUserMigrationSection = ({ router }: IEndUserMigrationSectionProps) => { Connect} /> diff --git a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx index 9238f74bfd..184ac6988f 100644 --- a/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx +++ b/frontend/pages/hosts/ManageHostsPage/components/HostsFilterBlock/HostsFilterBlock.tsx @@ -429,7 +429,7 @@ const HostsFilterBlock = ({ pending: ( Hosts ordered using Apple
- Business Manager (ABM).
+ Business (AB).
They will automatically enroll
to Fleet and turn on MDM
when they're unboxed. @@ -626,7 +626,7 @@ const HostsFilterBlock = ({ return ( handleClearFilter(["dep_profile_error"])} /> @@ -637,22 +637,22 @@ const HostsFilterBlock = ({ const renderLabel = () => { switch (depAssignProfileResponse) { case "SUCCESS": - return "Apple Business Manager (ABM) profile assignment successful"; + return "Apple Business (AB) profile assignment successful"; case "FAILED": - return "Apple Business Manager (ABM) issue: Failed"; + return "Apple Business (AB) issue: Failed"; case "THROTTLED": - return "Apple Business Manager (ABM) issue: Throttled"; + return "Apple Business (AB) issue: Throttled"; case "NOT_ACCESSIBLE": - return "Apple Business Manager (ABM) issue: Not accessible"; + return "Apple Business (AB) issue: Not accessible"; default: - return "Apple Business Manager (ABM) issues"; + return "Apple Business (AB) issues"; } }; const renderTooltip = () => { switch (depAssignProfileResponse) { case "SUCCESS": - return "Hosts that had a successful response from Apple Business Manager (ABM) for profile assignment."; + return "Hosts that had a successful response from Apple Business (AB) for profile assignment."; case "FAILED": return ( <> @@ -673,8 +673,8 @@ const HostsFilterBlock = ({ return ( <> Migration or new Mac setup won't work. Details are not - accessible from Apple Business Manager (ABM). Verify these hosts - are assigned to your MDM server and Fleet has access permissions. + accessible from Apple Business (AB). Verify these hosts are + assigned to your MDM server and Fleet has access permissions. ); default: diff --git a/frontend/pages/hosts/details/modals/MDMStatusModal/MDMStatusModal.tsx b/frontend/pages/hosts/details/modals/MDMStatusModal/MDMStatusModal.tsx index 4e73bd6b5a..026f084329 100644 --- a/frontend/pages/hosts/details/modals/MDMStatusModal/MDMStatusModal.tsx +++ b/frontend/pages/hosts/details/modals/MDMStatusModal/MDMStatusModal.tsx @@ -349,8 +349,8 @@ const MDMStatusModal = ({ tooltip: ( <> Migration or new Mac setup won't work. Details are not - accessible from Apple Business Manager (ABM). Verify the host is - assigned to your MDM server and Fleet has access permissions. + accessible from Apple Business (AB). Verify the host is assigned to + your MDM server and Fleet has access permissions. ), }, @@ -367,7 +367,7 @@ const MDMStatusModal = ({ <> The last time Apple reported a profile was assigned
- to this host in Apple Business Manager. + to this host in Apple Business. ), // Follow current pattern of international time format for dates in UI @@ -440,8 +440,7 @@ const MDMStatusModal = ({ Profile assignment

- Details about automatic enrollment profile from Apple Business - Manager.{" "} + Details about automatic enrollment profile from Apple Business.{" "} { return "Online hosts will respond to a live report."; } if (status === DEFAULT_EMPTY_CELL_VALUE) { - return "Device is pending enrollment in Apple Business Manager and status is not yet available."; + return "Device is pending enrollment in Apple Business and status is not yet available."; } return "Offline hosts won't respond to a live report because they may be shut down, asleep, or not connected to the internet."; }; diff --git a/frontend/utilities/constants.tsx b/frontend/utilities/constants.tsx index b743c5e308..ec8d5fb0f6 100644 --- a/frontend/utilities/constants.tsx +++ b/frontend/utilities/constants.tsx @@ -379,9 +379,8 @@ export const MDM_STATUS_TOOLTIP: Record< Off: undefined, // no tooltip specified Pending: ( - Hosts ordered via Apple Business Manager
(ABM). These will - automatically enroll to Fleet
and turn on MDM when they're - unboxed. + Hosts ordered via Apple Business
(AB). These will automatically + enroll to Fleet
and turn on MDM when they're unboxed.
), }; diff --git a/frontend/utilities/endpoints.ts b/frontend/utilities/endpoints.ts index 99e458b292..bedb4a376c 100644 --- a/frontend/utilities/endpoints.ts +++ b/frontend/utilities/endpoints.ts @@ -139,7 +139,7 @@ export default { // apple mdm endpoints MDM_APPLE: `/${API_VERSION}/fleet/mdm/apple`, - // Apple Business Manager (ABM) endpoints + // Apple Business (AB) endpoints MDM_ABM_TOKENS: `/${API_VERSION}/fleet/abm_tokens`, MDM_ABM_TOKEN: (id: number) => `/${API_VERSION}/fleet/abm_tokens/${id}`, MDM_ABM_TOKEN_RENEW: (id: number) => diff --git a/orbit/pkg/update/notifications.go b/orbit/pkg/update/notifications.go index 7e79dc5d01..e8037fbd8f 100644 --- a/orbit/pkg/update/notifications.go +++ b/orbit/pkg/update/notifications.go @@ -86,7 +86,7 @@ func (h *renewEnrollmentProfileConfigReceiver) Run(config *fleet.OrbitConfig) er // we perform this check locally on the client too to avoid showing the // dialog if the Fleet enrollment profile has not been assigned to the device in - // Apple Business Manager. + // Apple Business. assignedFn := h.checkAssignedEnrollmentProfileFn if assignedFn == nil { assignedFn = profiles.CheckAssignedEnrollmentProfile diff --git a/server/config/config.go b/server/config/config.go index 55d486fdd6..0645bbc76d 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -1585,12 +1585,12 @@ func (man Manager) addConfigs() { man.addConfigString("mdm.apple_scep_cert_bytes", "", "Apple SCEP PEM-encoded certificate bytes") man.addConfigString("mdm.apple_scep_key", "", "Apple SCEP PEM-encoded private key path") man.addConfigString("mdm.apple_scep_key_bytes", "", "Apple SCEP PEM-encoded private key bytes") - man.addConfigString("mdm.apple_bm_server_token", "", "Apple Business Manager encrypted server token path (.p7m file)") - man.addConfigString("mdm.apple_bm_server_token_bytes", "", "Apple Business Manager encrypted server token bytes") - man.addConfigString("mdm.apple_bm_cert", "", "Apple Business Manager PEM-encoded certificate path") - man.addConfigString("mdm.apple_bm_cert_bytes", "", "Apple Business Manager PEM-encoded certificate bytes") - man.addConfigString("mdm.apple_bm_key", "", "Apple Business Manager PEM-encoded private key path") - man.addConfigString("mdm.apple_bm_key_bytes", "", "Apple Business Manager PEM-encoded private key bytes") + man.addConfigString("mdm.apple_bm_server_token", "", "Apple Business encrypted server token path (.p7m file)") + man.addConfigString("mdm.apple_bm_server_token_bytes", "", "Apple Business encrypted server token bytes") + man.addConfigString("mdm.apple_bm_cert", "", "Apple Business PEM-encoded certificate path") + man.addConfigString("mdm.apple_bm_cert_bytes", "", "Apple Business PEM-encoded certificate bytes") + man.addConfigString("mdm.apple_bm_key", "", "Apple Business PEM-encoded private key path") + man.addConfigString("mdm.apple_bm_key_bytes", "", "Apple Business PEM-encoded private key bytes") man.addConfigBool("mdm.apple_enable", false, "Enable MDM Apple functionality") man.addConfigInt("mdm.apple_scep_signer_validity_days", 365, "Days signed client certificates will be valid") man.addConfigString("mdm.apple_vpp_app_metadata_api_bearer_token", "", "Apple Connect JWT, used for accessing VPP app metadata directly from Apple") diff --git a/server/datastore/mysql/apple_mdm.go b/server/datastore/mysql/apple_mdm.go index 185b3ede8c..2ab02cce8c 100644 --- a/server/datastore/mysql/apple_mdm.go +++ b/server/datastore/mysql/apple_mdm.go @@ -4208,8 +4208,8 @@ func (ds *Datastore) GetMDMAppleBootstrapPackageBytes(ctx context.Context, token func (ds *Datastore) GetMDMAppleBootstrapPackageSummary(ctx context.Context, teamID uint) (*fleet.MDMAppleBootstrapPackageSummary, error) { // NOTE: Consider joining on host_dep_assignments instead of host_mdm so DEP hosts that // manually enroll or re-enroll are included in the results so long as they are not unassigned - // in Apple Business Manager. The problem with using host_dep_assignments is that a host can be - // assigned to Fleet in ABM but still manually enroll. We should probably keep using host_mdm, + // in Apple Business. The problem with using host_dep_assignments is that a host can be + // assigned to Fleet in AB but still manually enroll. We should probably keep using host_mdm, // but be better at updating the table with the right values when a host enrolls (perhaps adding // a query param to the enroll endpoint). stmt := ` @@ -4266,8 +4266,8 @@ func (ds *Datastore) GetHostBootstrapPackageCommand(ctx context.Context, hostUUI func (ds *Datastore) GetHostMDMMacOSSetup(ctx context.Context, hostID uint) (*fleet.HostMDMMacOSSetup, error) { // NOTE: Consider joining on host_dep_assignments instead of host_mdm so DEP hosts that // manually enroll or re-enroll are included in the results so long as they are not unassigned - // in Apple Business Manager. The problem with using host_dep_assignments is that a host can be - // assigned to Fleet in ABM but still manually enroll. We should probably keep using host_mdm, + // in Apple Business. The problem with using host_dep_assignments is that a host can be + // assigned to Fleet in AB but still manually enroll. We should probably keep using host_mdm, // but be better at updating the table with the right values when a host enrolls (perhaps adding // a query param to the enroll endpoint). stmt := ` diff --git a/server/datastore/mysql/apple_mdm_test.go b/server/datastore/mysql/apple_mdm_test.go index b0bbc9d3e5..fae7c5e080 100644 --- a/server/datastore/mysql/apple_mdm_test.go +++ b/server/datastore/mysql/apple_mdm_test.go @@ -1031,7 +1031,7 @@ func testIngestMDMAppleIngestAfterDEPSync(t *testing.T, ds *Datastore) { require.NoError(t, err) require.NotEmpty(t, abmToken.ID) - // simulate a host that is first ingested via DEP (e.g., the device was added via Apple Business Manager) + // simulate a host that is first ingested via DEP (e.g., the device was added via Apple Business) n, err := ds.IngestMDMAppleDevicesFromDEPSync(ctx, []godep.Device{ {SerialNumber: testSerial, Model: testModel, OS: "OSX", OpType: "added"}, }, abmToken.ID, nil, nil, nil) diff --git a/server/fleet/app.go b/server/fleet/app.go index 725ea74647..2afc6a76fe 100644 --- a/server/fleet/app.go +++ b/server/fleet/app.go @@ -200,7 +200,7 @@ type MDM struct { // the server starts. AppleBMEnabledAndConfigured bool `json:"apple_bm_enabled_and_configured"` - // AppleBMTermsExpired is set to true if an Apple Business Manager request + // AppleBMTermsExpired is set to true if an Apple Business request // failed due to Apple's terms and conditions having changed and need the // user to explicitly accept them. It cannot be set manually via the // PATCH /config API, it is only set automatically, internally, by detecting diff --git a/server/fleet/apple_mdm.go b/server/fleet/apple_mdm.go index a252ae488d..99f5b4ed18 100644 --- a/server/fleet/apple_mdm.go +++ b/server/fleet/apple_mdm.go @@ -159,7 +159,7 @@ func (m MDMAppleDevice) AuthzType() string { return "mdm_apple_device" } -// MDMAppleDEPDevice represents an Apple device in Apple Business Manager (ABM). +// MDMAppleDEPDevice represents an Apple device in Apple Business (AB). type MDMAppleDEPDevice struct { godep.Device } @@ -541,10 +541,10 @@ type HostDEPAssignment struct { // HostID is the id of the host in Fleet. HostID uint `db:"host_id" json:"-"` // AddedAt is the timestamp when Fleet was notified that device was added to the Fleet MDM - // server in Apple Busines Manager (ABM). + // server in Apple Busines Manager (AB). AddedAt time.Time `db:"added_at" json:"added_at"` // DeletedAt is the timestamp when Fleet was notified that device was deleted from the Fleet - // MDM server in Apple Busines Manager (ABM). + // MDM server in Apple Busines Manager (AB). DeletedAt *time.Time `db:"deleted_at" json:"deleted_at"` // ABMTokenID is the ID of the ABM token that was used to make this DEP assignment. ABMTokenID *uint `db:"abm_token_id" json:"abm_token_id"` diff --git a/server/fleet/datastore.go b/server/fleet/datastore.go index 57bb41dbac..0a9ca93943 100644 --- a/server/fleet/datastore.go +++ b/server/fleet/datastore.go @@ -1776,7 +1776,7 @@ type Datastore interface { SaveCAConfigAssets(ctx context.Context, assets []CAConfigAsset) error DeleteCAConfigAssets(ctx context.Context, names []string) error - // GetABMTokenByOrgName retrieves the Apple Business Manager token identified by + // GetABMTokenByOrgName retrieves the Apple Business token identified by // its unique name (the organization name). GetABMTokenByOrgName(ctx context.Context, orgName string) (*ABMToken, error) diff --git a/server/fleet/hosts.go b/server/fleet/hosts.go index 591751e6c4..77353694d8 100644 --- a/server/fleet/hosts.go +++ b/server/fleet/hosts.go @@ -397,7 +397,7 @@ type Host struct { // so we don't need this. RefetchCriticalQueriesUntil *time.Time `json:"refetch_critical_queries_until" db:"refetch_critical_queries_until" csv:"-"` - // DEPAssignedToFleet is set to true if the host is assigned to Fleet in Apple Business Manager. + // DEPAssignedToFleet is set to true if the host is assigned to Fleet in Apple Business. // It is a *bool becase we want it to be returned from only a subset of endpoints related to // Orbit and Fleet Desktop. Otherwise, it will be set to NULL so it is omitted from JSON // responses. diff --git a/server/fleet/mdm.go b/server/fleet/mdm.go index 880dbfac85..c3027031f3 100644 --- a/server/fleet/mdm.go +++ b/server/fleet/mdm.go @@ -940,10 +940,10 @@ const ( // MDMAssetAPNSCert is the name of the APNs (Apple Push Notifications // service) private key used by MDM MDMAssetAPNSCert MDMAssetName = "apns_cert" - // MDMAssetABMKey is the name of the ABM (Apple Business Manager) + // MDMAssetABMKey is the name of the AB (Apple Business) // private key used to decrypt MDMAssetABMToken MDMAssetABMKey MDMAssetName = "abm_key" - // MDMAssetABMCert is the name of the ABM (Apple Business Manager) + // MDMAssetABMCert is the name of the AB (Apple Business) // private key used to encrypt MDMAssetABMToken MDMAssetABMCert MDMAssetName = "abm_cert" // MDMAssetABMTokenDeprecated is an encrypted JSON file that contains a token diff --git a/server/fleet/utils.go b/server/fleet/utils.go index 6bac592a0c..4059f9f117 100644 --- a/server/fleet/utils.go +++ b/server/fleet/utils.go @@ -32,8 +32,8 @@ func WriteAppleBMTermsExpiredBanner(w io.Writer) { warningColor.Fprintf( w, `Your organization can’t automatically enroll macOS hosts until you accept the new terms `+ - `and conditions for Apple Business Manager (ABM). An ABM administrator can accept these terms. `+ - `Go to ABM: https://business.apple.com/`, + `and conditions for Apple Business (AB). An AB administrator can accept these terms. `+ + `Go to AB: https://business.apple.com/`, ) // We need to disable color and print a new line to make it look somewhat neat, otherwise colors continue to the // next line diff --git a/server/mdm/apple/apple_bm.go b/server/mdm/apple/apple_bm.go index 30d6b81111..03a787cfd0 100644 --- a/server/mdm/apple/apple_bm.go +++ b/server/mdm/apple/apple_bm.go @@ -72,7 +72,7 @@ func SetDecryptedABMTokenMetadata( // Request. msg := err.Error() if authErr.StatusCode == http.StatusUnauthorized { - msg = "The Apple Business Manager certificate or server token is invalid. Restart Fleet with a valid certificate and token. See https://fleetdm.com/learn-more-about/setup-abm for help." + msg = "The Apple Business certificate or server token is invalid. Restart Fleet with a valid certificate and token. See https://fleetdm.com/learn-more-about/setup-abm for help." } return ctxerr.Wrap(ctx, &fleet.BadRequestError{ Message: msg, diff --git a/server/mdm/nanodep/docs/operations-guide.md b/server/mdm/nanodep/docs/operations-guide.md index eed4d25d68..cc88b76d5e 100644 --- a/server/mdm/nanodep/docs/operations-guide.md +++ b/server/mdm/nanodep/docs/operations-guide.md @@ -12,7 +12,7 @@ Note that because the name string is used pervasively in URL API paths you proba The `depserver` serves two main purposes: -1. Setup & configuration of the DEP name(s) — that is, the locally-named instances that correspond to the DEP "MDM servers" in the Apple Business Manager (ABM), Apple School Manager (ASM), or Business Essentials (BE) portal. Configuration includes uploading the DEP authentication tokens, configuring the assigner, etc. See the "API endpoints" section below for more. +1. Setup & configuration of the DEP name(s) — that is, the locally-named instances that correspond to the DEP "MDM servers" in the Apple Business (AB), Apple School Manager (ASM), or Business Essentials (BE) portal. Configuration includes uploading the DEP authentication tokens, configuring the assigner, etc. See the "API endpoints" section below for more. 1. Accessing the actual DEP APIs using a transparently-authenticating reverse proxy. After you've configured the authentication tokens using the above APIs `depserver` provides a reverse proxy to talk to the Apple DEP endpoints where you don't have to worry about session management or token authentication: this's taken care of for you. All you need to do is use a special URL path and normal API (HTTP Basic) authentication and you can talk to the DEP APIs unfiltered. See the "Reverse proxy" section below for more. ### Switches diff --git a/server/mdm/nanodep/docs/quickstart.md b/server/mdm/nanodep/docs/quickstart.md index 4d7f235eac..071fb56ea3 100644 --- a/server/mdm/nanodep/docs/quickstart.md +++ b/server/mdm/nanodep/docs/quickstart.md @@ -4,8 +4,8 @@ A guide to getting NanoDEP up and running quickly. For more in-depth documentati ## Requirements -* An Apple Business Manager (ABM), Apple School Manager (ASM), or Business Essentials (BE) login account with at least Device Management permissions/abilities. -* Devices already present in your ABM/ASM/BE system to assign. +* An Apple Business (AB), Apple School Manager (ASM), or Business Essentials (BE) login account with at least Device Management permissions/abilities. +* Devices already present in your AB/ASM/BE system to assign. * For the [tools](../tools) you'll need `curl`, `jq`, and of course a shell script interpreter. * Outbound internet access to talk to Apple's DEP APIs. @@ -40,7 +40,7 @@ Note here the "DEP name" of `mdmserver1` is arbitrary and can be anything you li ### Generate and retrieve the DEP token public key -The ABM/ASM/BE portal uses a public key to encrypt the OAuth1 tokens. To generate a new keypair and retrieve the public key (in an X.509 Certificate): +The AB/ASM/BE portal uses a public key to encrypt the OAuth1 tokens. To generate a new keypair and retrieve the public key (in an X.509 Certificate): ```bash $ ./tools/cfg-get-cert.sh > $DEP_NAME.pem @@ -48,7 +48,7 @@ $ ./tools/cfg-get-cert.sh > $DEP_NAME.pem Note this should create a new file called "mdmserver1.pem" (or whatever you set `$DEP_NAME` to, above). -### Upload the public key to ABM/ASM/BE +### Upload the public key to AB/ASM/BE Login to https://business.apple.com/ or https://school.apple.com/ in a browser then navigate to the list of MDM servers. As of July 2022 this is done by navigating to the lower-left menu by clicking on your login name and selecting "Preferences." Under the separator there's a list titled "Your MDM Servers." @@ -56,7 +56,7 @@ Create a new MDM server by clicking the "+" or "Add" button by the list header. ### Download Token -Next, we'll want to download the token. From within the ABM/ASM/BE portal navigate to your newly created (or modified) MDM server. As of July 2022 there's a top menu for the MDM server which contains a button/link to "Download Token." Click this to download the token which should download a file with the extension ".p7m" and named after the MDM server you created: this downloaded token is the encrypted OAuth tokens for DEP access. +Next, we'll want to download the token. From within the AB/ASM/BE portal navigate to your newly created (or modified) MDM server. As of July 2022 there's a top menu for the MDM server which contains a button/link to "Download Token." Click this to download the token which should download a file with the extension ".p7m" and named after the MDM server you created: this downloaded token is the encrypted OAuth tokens for DEP access. ### Decrypt tokens @@ -93,7 +93,7 @@ Otherwise: congratulations! The token exchanged was successful and you can use t ### Assign a device in the portal -Now that we've verified API connectivity using your DEP server you need to assign a device in the ABM/ASM/BE portal. To do so login to the portal and navigate to the "Devices" section. Select (or search for) the device you want to use with DEP by settings its MDM server. As of July, 2022 there is a link/button in the top navigation of a device called "Edit MDM Server" — clicking this brings up a dialog to either assign or un-assign the device. When assigning a drop-menu appears of the setup MDM servers. We'll want to select our newly created server "mdmserver1" then click the "Continue" button. The device should then be assigned to your MDM server and available for a DEP profile to be assigned to it. +Now that we've verified API connectivity using your DEP server you need to assign a device in the AB/ASM/BE portal. To do so login to the portal and navigate to the "Devices" section. Select (or search for) the device you want to use with DEP by settings its MDM server. As of July, 2022 there is a link/button in the top navigation of a device called "Edit MDM Server" — clicking this brings up a dialog to either assign or un-assign the device. When assigning a drop-menu appears of the setup MDM servers. We'll want to select our newly created server "mdmserver1" then click the "Continue" button. The device should then be assigned to your MDM server and available for a DEP profile to be assigned to it. ### Define a DEP Profile and assign a device diff --git a/server/service/client_mdm.go b/server/service/client_mdm.go index 193e1785db..8d09381a81 100644 --- a/server/service/client_mdm.go +++ b/server/service/client_mdm.go @@ -32,7 +32,7 @@ func (c *Client) GetAppleMDM() (*fleet.AppleMDM, error) { return responseBody.AppleMDM, err } -// GetAppleBM retrieves the Apple Business Manager information. +// GetAppleBM retrieves the Apple Business information. func (c *Client) GetAppleBM() (*fleet.AppleBM, error) { verb, path := "GET", "/api/latest/fleet/mdm/apple_bm" var responseBody getAppleBMResponse diff --git a/server/service/integration_android_software_test.go b/server/service/integration_android_software_test.go index 227e2a1872..33e1eea4f3 100644 --- a/server/service/integration_android_software_test.go +++ b/server/service/integration_android_software_test.go @@ -94,7 +94,7 @@ func (s *integrationMDMTestSuite) TestAndroidAppsSelfService() { &addAppStoreAppRequest{AppStoreID: "com.valid.app.id"}, http.StatusUnprocessableEntity, ) - s.Assert().Contains(extractServerErrorText(r.Body), "Couldn't add software. \"com.valid.app.id\" isn't available in Apple Business Manager or Play Store. Please purchase a license in Apple Business Manager or find the app in Play Store and try again.") + s.Contains(extractServerErrorText(r.Body), "Couldn't add software. \"com.valid.app.id\" isn't available in Apple Business or Play Store. Please purchase a license in Apple Business or find the app in Play Store and try again.") // Valid application ID format, but app isn't found: should fail // Update mock to return a 404 @@ -137,7 +137,7 @@ func (s *integrationMDMTestSuite) TestAndroidAppsSelfService() { &addAppStoreAppRequest{AppStoreID: "com.valid", Platform: fleet.MacOSPlatform}, http.StatusUnprocessableEntity, ) - require.Contains(t, extractServerErrorText(r.Body), "Couldn't add software. \"com.valid\" isn't available in Apple Business Manager or Play Store. Please purchase a license in Apple Business Manager or find the app in Play Store and try again.") + require.Contains(t, extractServerErrorText(r.Body), "Couldn't add software. \"com.valid\" isn't available in Apple Business or Play Store. Please purchase a license in Apple Business or find the app in Play Store and try again.") // Add Android app s.DoJSON( diff --git a/server/service/integration_mdm_test.go b/server/service/integration_mdm_test.go index ada48b143a..ca07fd7331 100644 --- a/server/service/integration_mdm_test.go +++ b/server/service/integration_mdm_test.go @@ -11797,7 +11797,7 @@ func (s *integrationMDMTestSuite) TestABMAssetManagement() { require.Nil(t, tok) // try to upload an invalid token - s.uploadABMToken([]byte("foo"), http.StatusBadRequest, "Please provide a valid token from Apple Business Manager") + s.uploadABMToken([]byte("foo"), http.StatusBadRequest, "Please provide a valid token from Apple Business") // enable ABM again var newABMResp generateABMKeyPairResponse @@ -11830,7 +11830,7 @@ func (s *integrationMDMTestSuite) enableABM(orgName string) *fleet.ABMToken { require.Equal(t, "CERTIFICATE", block.Type) // try to upload an invalid token - s.uploadABMToken([]byte("foo"), http.StatusBadRequest, "Invalid token. Please provide a valid token from Apple Business Manager.") + s.uploadABMToken([]byte("foo"), http.StatusBadRequest, "Invalid token. Please provide a valid token from Apple Business.") // generate a mock token and encrypt it using the public key testBMToken := &nanodep_client.OAuth1Tokens{ @@ -13455,9 +13455,9 @@ func (s *integrationMDMTestSuite) TestVPPApps() { // Invalid token dev_mode.SetOverride("FLEET_DEV_VPP_URL", s.appleVPPConfigSrv.URL+"?invalidToken", t) - s.uploadDataViaForm("/api/latest/fleet/vpp_tokens", "token", "token.vpptoken", []byte("foobar"), http.StatusUnprocessableEntity, "Invalid token. Please provide a valid content token from Apple Business Manager.", nil) + s.uploadDataViaForm("/api/latest/fleet/vpp_tokens", "token", "token.vpptoken", []byte("foobar"), http.StatusUnprocessableEntity, "Invalid token. Please provide a valid content token from Apple Business.", nil) // Attempt to renew an invalid (nonexistent) token, should fail - s.uploadDataViaFormWithVerb("/api/latest/fleet/vpp_tokens/999/renew", "PATCH", "token", "token.vpptoken", []byte(base64.StdEncoding.EncodeToString([]byte("foobar"))), http.StatusUnprocessableEntity, "Invalid token. Please provide a valid content token from Apple Business Manager.", nil) + s.uploadDataViaFormWithVerb("/api/latest/fleet/vpp_tokens/999/renew", "PATCH", "token", "token.vpptoken", []byte(base64.StdEncoding.EncodeToString([]byte("foobar"))), http.StatusUnprocessableEntity, "Invalid token. Please provide a valid content token from Apple Business.", nil) // Simulate a server error from the Apple API dev_mode.SetOverride("FLEET_DEV_VPP_URL", s.appleVPPConfigSrv.URL+"?serverError", t) diff --git a/tools/README.md b/tools/README.md index eca733fad4..6613914a9b 100644 --- a/tools/README.md +++ b/tools/README.md @@ -79,7 +79,7 @@ go run ./tools/mdm/assets import -key=mykey -dir=./assets -name=scep_challenge - # Send APNS push notification go run ./tools/mdm/apple/apnspush -mysql localhost:3306 -server-private-key -# Query Apple Business Manager +# Query Apple Business go run ./tools/mdm/apple/applebmapi -mysql localhost:3306 -server-private-key -org-name "My Org" # Generate app manifest from pkg @@ -248,7 +248,7 @@ go run ./tools/run-scripts -scripts-disabled -content 'echo "Test"' | `terraform/` | Terraform provider for Fleet teams | `make install && make apply` - See [terraform/README.md](terraform/README.md) | | **MDM Tools** | | | | `android/` | Android management API tool | `go run ./tools/android -command -enterprise_id -device_id ` | -| `mdm/apple/applebmapi/` | Query Apple Business Manager API | `go run ./tools/mdm/apple/applebmapi -mysql localhost:3306 -server-private-key -org-name ` | +| `mdm/apple/applebmapi/` | Query Apple Business API | `go run ./tools/mdm/apple/applebmapi -mysql localhost:3306 -server-private-key -org-name ` | | `mdm/apple/appmanifest/` | Generate app manifest XML from .pkg | `go run ./tools/mdm/apple/appmanifest -pkg-file app.pkg -pkg-url https://example.com/app.pkg` | | `mdm/apple/apnspush/` | Send APNS push to enrolled devices | `go run ./tools/mdm/apple/apnspush -mysql localhost:3306 -server-private-key ` | | `mdm/apple/loadtest/` | MDM load testing | `go run ./tools/mdm/apple/loadtest` | diff --git a/tools/mdm/apple/applebmapi/main.go b/tools/mdm/apple/applebmapi/main.go index e2ec37928f..c4cc2e3839 100644 --- a/tools/mdm/apple/applebmapi/main.go +++ b/tools/mdm/apple/applebmapi/main.go @@ -1,4 +1,4 @@ -// Command applebmapi takes an Apple Business Manager server token in decrypted +// Command applebmapi takes an Apple Business server token in decrypted // JSON format and calls the Apple BM API to retrieve and print the account // information or the specified enrollment profile. // diff --git a/tools/mdm/apple/glossary-and-protocols.md b/tools/mdm/apple/glossary-and-protocols.md index 6e61de8d47..e021b70dea 100644 --- a/tools/mdm/apple/glossary-and-protocols.md +++ b/tools/mdm/apple/glossary-and-protocols.md @@ -6,7 +6,7 @@ sequenceDiagram participant mac as Mac participant server as fleet server - note over server: Server sends automatic enrollment
endpoint details to ABM as part of a
ADE/DEP configuration cron job + note over server: Server sends automatic enrollment
endpoint details to AB as part of a
ADE/DEP configuration cron job alt Automatic Authenticated Enrollment mac->>server: GET /api/v1/fleet/sso
(endpoint configured using ADE)
Opens authetication webpage in a webview server->>mac: Enrollment Profile (specific response headers) @@ -78,7 +78,7 @@ A method to enroll a device to an MDM server by manually getting and installing (generally by downloading from a URL) an [enrollment profile](#enrollment-profile). -### ABM: Apple Business Manager +### AB: Apple Business Interface to administer Devices and MDM servers, mainly used for [ADE enrollment](#ade-enrollment). @@ -124,7 +124,7 @@ For [ADE enrollment](#ade-device-enrollment-program) the enrollment profile is d ### ADE profile -This (JSON) profile is used to configure a device in Apple Business Manager. +This (JSON) profile is used to configure a device in Apple Business. It contains all the necessary information that a device needs to automatically enroll to an MDM server during device setup. [Example](https://fleetdm.com/example-dep-profile) diff --git a/tools/mdm/apple/toggle-mdm-dev.md b/tools/mdm/apple/toggle-mdm-dev.md index 0cd79a4095..3e4fe72e58 100644 --- a/tools/mdm/apple/toggle-mdm-dev.md +++ b/tools/mdm/apple/toggle-mdm-dev.md @@ -1,6 +1,6 @@ -# Using `toggle-mdm-dev` to enable and disable MDM (Mobile Device Management) / ABM (Apple Business Manager) for development +# Using `toggle-mdm-dev` to enable and disable MDM (Mobile Device Management) / AB (Apple Business) for development -1. Set up all of the necessary credentials for using MDM and ABM as outlined in the [MDM setup and +1. Set up all of the necessary credentials for using MDM and AB as outlined in the [MDM setup and testing docs](https://fleetdm.com/docs/contributing/testing-and-local-development#mdm-setup-and-testing). Take note of the path where you've stored these credentials. @@ -23,7 +23,7 @@ export FLEET_MDM_APPLE_APNS_CERT=$MDM_PATH"mdmcert.download.push.pem" export FLEET_MDM_APPLE_APNS_KEY=$MDM_PATH"mdmcert.download.push.key" - # Apple Business Manager (ABM) credentials + # Apple Business (AB) credentials export FLEET_MDM_APPLE_BM_SERVER_TOKEN=$MDM_PATH"downloadtoken.p7m" export FLEET_MDM_APPLE_BM_CERT=$MDM_PATH"fleet-apple-mdm-bm-public-key.crt" export FLEET_MDM_APPLE_BM_KEY=$MDM_PATH"fleet-apple-mdm-bm-private.key" @@ -46,8 +46,8 @@ file. Source it or open a new shell. 4. Add the directory containing `toggle-mdm-dev`, likely this one, to your $PATH. If you did that by adding it to your shell config, source it or open a new shell. -5. To toggle MDM and ABM, execute `source toggle-mdm-dev` -6. To enable MDM without ABM set up, comment out the variables in your env file pointing to the +5. To toggle MDM and AB, execute `source toggle-mdm-dev` +6. To enable MDM without AB set up, comment out the variables in your env file pointing to the various credentials (like below), then `source toggle-mdm-dev` *twice*, to toggle off then back on again, the MDM feature flag. @@ -65,7 +65,7 @@ # export FLEET_MDM_APPLE_APNS_CERT=$MDM_PATH"mdmcert.download.push.pem" # export FLEET_MDM_APPLE_APNS_KEY=$MDM_PATH"mdmcert.download.push.key" - # # Apple Business Manager + # # Apple Business # export FLEET_MDM_APPLE_BM_SERVER_TOKEN=$MDM_PATH"downloadtoken.p7m" # export FLEET_MDM_APPLE_BM_CERT=$MDM_PATH"fleet-apple-mdm-bm-public-key.crt" # export FLEET_MDM_APPLE_BM_KEY=$MDM_PATH"fleet-apple-mdm-bm-private.key"