Apple Declarative Device Management

本文介绍了Apple在WWDC 2021上发布的Declarative Device Management(DDM),一种新的设备管理和处理方式,它通过自主性和前瞻性提升性能和可扩展性。DDM利用现有的MDM协议,允许设备根据自身状态变化做出反应,减少服务器干预,并探讨了其数据模型、声明、类型及迁移路径等关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Meet My New Friend: Declarative Device Management

Apple has made a very exciting (for me) announcement today at WWDC 2021. I am back writing about stuff from WWDC like I did before. Apple is introducing a new way of delivering, processing, and evaluating everything we do on mobile devices known as “Declarative Device Management.” We are going to discuss this new paradigm on the well-established MDM protocols that many companies use to deliver things to our Apple devices today. We are going to discuss at high-level what declarative device management is, how it integrates into a MDM solution, and the requirements at this point in the Beta.
在这里插入图片描述

What is Declarative Device Management?

he idea behind Declarative Device Management (DDM) is similar to how VMware Horizon can let a device locally process video for Microsoft Teams “sort-of.” DDM will enable a device by making it autonomous and proactive. By leveraging the existing MDM protocols, DDM will increase performance and scalability.

DDM empowers a mobile device by letting it reach to its own state changes. The iOS device can now run more lightweight and reactive and eliminate the constant MDM polling. The device will now be:

CharacteristicHow it HelpsSome Thoughts
AutonomousReacts to its own state changes and applies logic to itself without the server telling it to do somethingDevices can now potentially act when offline based on predicates (more on that later).
ProactiveStatus channel asynchronously reporting to the server when state changes happen eliminate a need for constant pollingThis could be a huge game changer. I expect this will improve battery life and help MDM samples update far faster than ever before.

Let’s shift and discuss the declarative data model around DDM, which provides the building blocks that makes Declarative Device Management a potential game-changer for enterprises.

The Declarative Data Model

Every technology needs a structured data model to make things run more efficiently. Let’s check out what the code in a .mobileconfig profile looks like today:

<dict>
	<key>AutoSelectCertificateForUrls</key>
		<array>
			<string>{“pattern”:”https://cas.vidmpreview.com”,”filter”:{“ISSUER”:{“CN”:”TMApple”}}}</string>
		</array>
	<key>PayloadEnabled</key>
		<true/>
	<key>PayloadDisplayName</key>
		<string>Google Chrome Settings</string>
	<key>PayloadIdentifier</key>
		<string>com.google.Chrome.4F720473-6832-4CE0-A895-E9C3FC6F8CBD</string>
	<key>PayloadType</key>
		<string>com.google.Chrome</string>
	<key>PayloadUUID</key>
		<string>4F720473-6832-4CE0-A895-E9C3FC6F8CBD</string>
	<key>PayloadVersion</key>
		<integer>1</integer>
</dict>

Upon review, you will notice that the code is fairly clunky. MDM profiles are just a collection of XML tags/strings, etc. They’re very hard to manipulate and people get impacted relatively easily. Apple is proud to announce their new Declarative Data Model for DDM today:
在这里插入图片描述
Now, let’s break down the 3 building blocks of the declarative data model so you can see how much potential it has starting with Declarations.

Declarations

Declarations represent policy/profile structure. They can be used for settings, accounts, restrictions, etc. Additionally, declarations may be used for common or specific use e.g. policies sent to everyone or just a subset. Another key to mention is their shift to JSON (enjoy learning JSON now UEM peeps!):
在这里插入图片描述
Let’s define the structure:

  • Type: Identifies the type of policy similar to today
  • Identifier: A UUID for the declaration
  • ServerToken: A unique revision of the Identifier based on the Identifier value, which can be a counter or unique ID.
  • Payloads: That is a collection of settings, which you previously saw in arrays and strings.

Declaration Types

We have various types of declarations we can now discuss:
在这里插入图片描述
Let’s dig into them!

Configuration Declarations

Configurations represent the policies being applied to the device aka MDM Profiles. You can see a good example below:
在这里插入图片描述
The main challenge and theme you are noticing is a need to learn JSON now as a MDM engineer with the whole fun around {}, commas, and [].

Asset Declarations

Asset Declarations refer to the ancillary data needed by a configuration, like:

  • MDM URLs
  • User Information
  • Certificates, etc.
    在这里插入图片描述
    Now, let’s discuss the sexy part of assets. Assets offer a one-to-many relationship. That means you can tie a certificate to multiple configurations without needs to have 37 certificates on a device. This is a first and a HUGE benefit. It also means you can make small incremental updates to an asset without needing to repush the entire profile. That is a major game-changer where the users WIN.
    在这里插入图片描述
    A nice example below is:
    在这里插入图片描述

Activation Declaration

Activation Declarations are a group of configurations that the device applies atomically. It ALSO means that if ONE of your configuration items is bad then nothing applies.

An example of the payload can be seen below:
在这里插入图片描述
On top of all that, activations have a many-to-many relationship meaning you can have multiple activations reference one configuration item. This lets your device work autonomously and process complex business logic.
在这里插入图片描述
It’s very exciting as you can have one activation hit multiple configurations at a given time or multiple activations hit a single configuration. This pliability can really drive some potentially amazing productivity at the device level.

Another area of great excitement are predicates. Predicates determine activation state and will process if its true. It’s basically conditional statements, which when true will process activations on the device like below:
在这里插入图片描述
在这里插入图片描述
This capability lets the MDM send everything down to a device and as things change, it will apply activation declarations just-in-time. Predicates are automatically re-assessed when device state changes happen without anything from the server. It will apply new policies and remove outdated ones allow your device to operate proactively for the first time. Keep in mind, if your predicates are missing then it will automatically process the item.

Let’s check out some code with a predicate:
在这里插入图片描述

Management Declarations

Management Declarations represent properties of the overall management state on the device. They will include stuff like:

  • Organizational Information
  • Server Capabilities
  • Can Convey Static Information to the Device

Status Channel

Status Channel is simply a way of subscribing to exactly the exact information your server needs. The client will report to the server after the server subscribes to specific status items. This cuts down on chatter and only gives the server EXACTLY what it needs instead of a shotgun approach to MDM.
在这里插入图片描述
Status items themselves use a concept many people are familiar with where attributes are key-paths e.g.:
在这里插入图片描述
When subscribing to status items, the protocol will use a status subscription configuration item. The device sends initial and subsequent status reports. The reports are incremental and the declaration status is always reported to the server on a change.

An example of the configuration item can be seen below:
在这里插入图片描述
The response looks like this:
在这里插入图片描述

Extensibility

Extensibility has a few specific focuses to be aware of and ties all of this together:

  • Helps manage compatibility over time.
  • Device and server advertise what it supports just like a Client Hello and Server Hello in a SSL handshake.
  • Reports Supported Features.
  • Reports Supported Payloads.
  • Server will indicate support in a management declaration.
  • Client will indicate support as a specific status item.

Integrating with MDM

DDM is part of the core MDM protocols and is utilized for enrollment, HTTP transport, and device and user authentication. The integration is not going to be overly disruptive. The DDM commands and current MDM profiles/commands can co-exist nicely. This enables gradual adoption of declarations as a MDM vendors.

One of the nice things from a data perspective is that all declarations are removed on MDM unenrollment along with it not impacting existing MDM behavior. This certainly should lend to an early adoption by MDM vendors unlike other capabilities which took far too long to roll out like APNS v2.

Apple is introducing a new DeclarativeManagement command to activate declarative management. Once deployed, you can’t disable it unless all declarations are removed so that provides nice safeguards. Additionally, they are providing APIs for synchronizing declarations. Let’s discuss the CheckIn Request.

Using the CheckIn Request

The CheckIn request will synchronize declarations and send status reports to the server.
在这里插入图片描述
You will see two different types of responses with CheckIn requests: a list of declarations, and single declarations for the device to apply.

Migrating to Declaration Management

The great thing about the migration path is that you can create declarations as profiles, which gives you a really easy way to start the shift. You can see in the example below, you can specify a ProfileURL in the payload of your declaration to deliver really nice co-existence.
在这里插入图片描述

Data Flow for Declarative Management

The flow below shows you when a device is already enrolled in MDM and you activate Declarative Management:
在这里插入图片描述
This flow shows you after your activation completes and a CheckIn request occurs:
在这里插入图片描述

DDM Requirements

Let’s cover the requirements and then we can discuss:

  • iOS 15 or iPadOS 15
  • User Enrollment (Apparently we will also have a new onboarding flow in iOS 15 which we will discuss soon)

Current supporting DDM features:

  • Configuration Declarations
    • Accounts
    • Passcode
    • Profiles
    • Status Subscriptions
  • Activation Declarations
    • Simple Activation
  • Asset Declarations
    • User Identity
    • User Credentials
  • Management Declarations
    • Organization Details
    • Server Capabilities
  • Status Items
    • Declaration State
    • Device Properties

Okay, so that’s really interesting. At this juncture, you cannot be a vanilla MDM enrollment and take advantage of this incredible offering. That is definitely cart before the horse! Apple is clearly trying to get you be more user-centric and less enterprise-centric. I can’t blame them for wanting to put user happiness at the forefront. I think these concepts are next level. This is EXACTLY like when HTTP/2 was released. I am blown away by the idea because they are really reinventing MDM as we know it!

Final Thoughts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会编程的羽流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值