ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Fleet 中的 macOS 14 Sonoma CIS 基准合规:v3.1.0 策略实现、检查限制与实战部署指南

Fleet 中的 macOS 14 Sonoma CIS 基准合规:v3.1.0 策略实现、检查限制与实战部署指南 后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载本篇指南以 Fleet 开源仓库ee/cis/macos-14/目录为核心完整讲解 Fleet 如何把 CISCenter for Internet SecuritymacOS 14 Sonoma 基准 v3.1.0 落地为可执行的 osquery 策略包括 105 条策略的 YAML 格式与查询模式、10 类无法策略化检查的限制项、需要组织自行决策的 4 组双版本策略、v3.1.0 版本增量说明以及配套的测试脚本、MDM 配置描述文件.mobileconfig与自动化测试运行器。读者读完可以掌握在 Fleet 中评估、裁剪、部署 macOS 14 CIS 合规策略的完整方法并理解每条查询背后的数据来源与底层原理。一、CIS macOS 14 基准与 Fleet 的落地方式CIS Benchmarks 是业界广泛采用的安全配置基线其中 macOS 14 Sonoma 基准文档对系统各项安全设置给出编号化的审计与加固建议。Fleet 的合规策略针对该基准的v3.1.0版本编写每一个可自动审计的条目都会被翻译成一条 osquery 策略policy由 fleetd 在每台 macOS 主机上周期性执行返回合规 / 不合规的实时结果。仓库中每个操作系统版本的基准都遵循同一目录结构macOS 14 的完整实现在ee/cis/macos-14/ cis-policy-queries.yml # 该版本的全部 105 条策略YAML 多文档 README.md # 限制项、组织决策项、版本增量说明 test/ scripts/ # 用于制造合规/不合规状态的 shell 脚本 profiles/ # 用于使策略通过的 MDM 配置描述文件.mobileconfig其中cis-policy-queries.yml是策略的唯一事实来源共包含 105 个cis_id部分条目存在 enable/disable 双版本覆盖 §1 更新管理、§2 系统设置、§3 审计日志、§4 网络安全、§5 系统完整性、§6 应用安全等主要章节。整个ee/cis/目录同时还有 macOS 13、macOS 15、macOS 26、Windows 10、Windows 11 等版本的平行实现以及一份描述撰写、测试与自动化整体约定的总文档 CIS-BENCHMARKS.md。二、策略格式YAML 字段与查询模式2.1 策略 YAML 字段每一条策略都是一个独立的 YAML 文档位于 cis-policy-queries.yml字段含义如下以 §1.1 软件更新 为实例字段必填说明name是格式为CIS - 基准条目标题依赖托管描述文件时追加(MDM Required)依赖 fleetd 表时追加(Fleetd Required)需要完全磁盘访问时追加(FDA Required)cis_id是基准文档中的点分编号如2.3.3.4合并检查用逗号分隔如5.2.3, 5.2.4platforms是人类可读平台名如macOSplatform是osquery 平台字符串如darwindescription是直接取自基准文档的 Description 章节resolution是取自基准文档的 Remediation 章节通常同时给出图形界面与终端两种修复方法query是osquery SQL合规时返回 ≥1 行不合规时返回 0 行purpose是恒为Informationaltags是compliance, CIS, CIS_Level1或CIS_Level2contributors否作者 GitHub 用户名例如 §1.1 策略 的核心查询只有一行SELECT 1 FROM software_update WHERE software_update_required 0;它直接读取 fleetd 提供的software_update表若系统没有待安装更新则返回 1 行合规否则返回 0 行不合规。其修复指引同时给出了图形路径系统设置 → 通用 → 软件更新 → 全部更新与终端命令/usr/bin/sudo /usr/sbin/softwareupdate -l # 列出可用更新 /usr/bin/sudo /usr/sbin/softwareupdate -i -a # 安装全部更新 # 若更新要求重启附加 -R 强制重启2.2 五种核心查询模式macOS 14 目录中的全部查询都可以归入以下几类模式多数真实策略会组合使用模式 1直接查表——直接查询 osquery 表反映系统实时状态。例如 §2.2.1 防火墙SELECT 1 FROM alf WHERE global_state 1;§2.2.2 隐身模式 则在同一张alf表上叠加第二个条件SELECT 1 FROM alf WHERE global_state 1 AND stealth_enabled 1;模式 2托管策略检查——验证某个 MDM 描述文件是否已安装。这是最常用的模式必须同时使用EXISTS(好值)与NOT EXISTS(冲突值)成对出现。原因是仅靠单个EXISTS只要managed_policies表中存在一条好值记录就会通过即使同机存在一条用户作用域的行用坏值覆盖了它NOT EXISTS守卫正是为了捕获这种冲突。以 §1.2 自动检查更新 为例SELECT 1 WHERE EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.SoftwareUpdate AND nameAutomaticCheckEnabled AND (value 1 OR value true) AND username ) AND NOT EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.SoftwareUpdate AND nameAutomaticCheckEnabled AND (value ! 1 AND value ! true) );这里username 表示系统作用域键大多数com.apple.*域的 MDM 键以系统作用域下发行内username为空少数用户作用域域如com.apple.Safari、com.apple.Terminal则需省略该条件。当单个描述文件需要同时正确设置多个键如防火墙 隐身模式、密码延迟两个键时则对每个键各自 AND 一组EXISTS/NOT EXISTS。模式 3否定检查——验证某物不存在或被禁用。例如 §2.3.3.1 屏幕共享 通过检查 launchd 禁用列表来确认服务未启用SELECT 1 WHERE NOT EXISTS ( SELECT * FROM plist WHERE path /var/db/com.apple.xpc.launchd/disabled.plist AND key com.apple.screensharing AND value 0 );注释里特别解释了为什么不用launchd表launchd表不会检查disabled.plist而偏好设置面板在服务曾被启用后再禁用时正是通过该文件生效的。模式 4缺失即通过 / 数值阈值——当基准明确说明该设置未被托管同样满足审计时如更新延迟 ≤ 30 天未托管延迟即合规只要求存在的值都在可接受范围内SELECT 1 WHERE NOT EXISTS ( SELECT 1 FROM managed_policies WHERE domaincom.apple.applicationaccess AND nameenforcedSoftwareUpdateDelay AND CAST(value AS INTEGER) 30 );模式 5本地或托管二选一——CIS 有时接受本地 plist 值或托管描述文件任一路径合规如访客账户禁用、自动登录禁用用OR连接两条分支SELECT 1 WHERE EXISTS ( SELECT 1 FROM plist WHERE path /Library/Preferences/com.apple.loginwindow.plist AND key GuestEnabled AND value 0 ) OR EXISTS ( SELECT 1 FROM managed_policies WHERE domain com.apple.MCX AND name DisableGuestAccount AND (value 1 OR value true) AND username );2.3 复杂查询示例部分条目需要多表关联与子查询。例如 §2.5.1 Siri 的 TypeToSiriEnabled 字段 需要遍历所有/Users/%目录、逐用户检查com.apple.Siri.plist中的键值SELECT 1 WHERE NOT EXISTS ( SELECT 1 FROM users AS u LEFT JOIN ( SELECT * FROM plist WHERE path LIKE /Users/%/Library/Preferences/com.apple.Siri.plist AND key TypeToSiriEnabled AND value 1) AS p ON p.path CONCAT(u.directory, /Library/Preferences/com.apple.Siri.plist) WHERE u.directory LIKE /Users/% AND p.value IS NULL );三、无法用策略检查的基准条目Limitations并非所有 CIS 建议都能机械化为策略查询。README 明确列出了 10 项无法用 Fleet 策略检查的限制编号条目无法策略化的原因2.1.2审计 App Store 密码设置需要人工审计2.3.3.12确保计算机名不含 PII 或受保护组织信息无法机械判断名称语义2.6.6审计锁定模式需要人工审计2.11.2审计 Touch ID 与钱包及 Apple Pay 设置需要人工审计2.13.1审计密码系统偏好设置需要人工审计2.14.1审计通知与专注模式设置需要人工审计3.7审计软件清单需要人工审计6.2.1确保邮件中的邮件活动保护已启用需要人工审计5.3.2确保所有 APFS/HFS 外部用户存储卷已加密fleetd 的apfs_volumes表不暴露内/外置指示符无法可靠区分外部卷内置 APFS 卷已由 5.3.1 覆盖5.3.3审计连接的 FAT32 与 ExFAT 驱动器手动CIS 本身将其定为 Manual 审计属于对可移动磁盘的组织性审查而非可机械检查的条件这些条目要么依赖人工判断与主观语义要么受限于当前 osquery 表结构的数据能力。对于 5.3.2README 特别注明其表结构缺陷——apfs_volumes表没有内/外置指示列该能力被单独跟踪。四、需要组织决策的检查Org-Decision PoliciesCIS 将部分检查的参数留给基准实施者自行决定不给出具体推荐。对这些条目Fleet 同时提供enabled启用与 disabled禁用两个版本的策略策略名以-enabled或-disabled后缀标注如2.1.1.1-enabled。当两个版本同时添加时至少会有一条失败组织做出决策后删除另一条即可。四组需要决策的双版本条目2.1.1.1审计 iCloud 钥匙串2.1.1.2审计 iCloud 云盘2.5.1审计 Siri2.8.1审计通用控制以 §2.1.1.1 iCloud 钥匙串 为例仓库同时存在2.1.1.1的禁用版与启用版策略二者查询完全对称——禁用版要求allowCloudKeychainSync为false启用版要求其为true并各自在查询末尾以 SQL 注释说明CIS 对此没有硬性推荐Fleet 提供了两条策略一条失败一条通过根据组织决策可删除其一或其对应版本。对应的 MDM 描述文件也以-enable/-disable后缀区分存放于 test/profiles/如2.1.1.1-enable.mobileconfig、2.1.1.2-enable.mobileconfig、2.1.1.2-disable.mobileconfig。密码复杂度可选项此外CIS 决定不要求以下密码复杂度设置5.2.3 确保复杂密码必须包含字母字符5.2.4 确保复杂密码必须包含数字字符5.2.5 确保复杂密码必须包含特殊字符5.2.6 确保复杂密码必须包含大小写字符Fleet 仍将这几条作为策略提供cis-policy-queries.yml中 5.2.3 与 5.2.4 合并为一条cis_id: 5.2.3, 5.2.4另有5.2.5条目。如果组织选择不实施这些要求直接删除对应策略即可。配套的 MDM 描述文件同样存在例如 5.2.3-and-5.2.4.mobileconfig 与 5.2.5.mobileconfig——这种{id1}-and-{id2}.mobileconfig命名表示一个描述文件同时覆盖多个 CIS 编号。五、v3.1.0 更新要点逐条解析README 记录了对从 v3.0.0 升级到 v3.1.0 时各策略的调整理解这些增量有助于判断既有部署是否需要跟进2.3.5 设备管理——CIS 仅将其作为信息性小节新增无编号推荐因此没有对应策略。2.7.1 屏幕保护热角安全——CIS 将该检查重新限定为仅针对当前用户原先是所有用户并移至 Level 1。查询现在只检查当前控制台用户的com.apple.dock热角。由于检查读取的是控制台用户的 Dock 偏好评估该策略时必须有一个非 root 的控制台用户已登录参见 CIS-BENCHMARKS.md 中的控制台用户陷阱。配套的_pass/_fail测试脚本通过路径写入控制台用户的 Dock plist从而也能在 Fleet 的脚本执行机制下工作——因为在该机制下按用户的defaults write会失败详见下文控制台用户陷阱。以 CIS_2.7.1_pass.sh 为例它先用stat从/dev/console取当前控制台用户在非 root 前提下把四个热角键全部写为 0再修正文件属主并重启该用户的 cfprefsduser$(/usr/bin/stat -f %Su /dev/console 2/dev/null) if [ -n $user ] [ $user ! root ]; then plist/Users/$user/Library/Preferences/com.apple.dock.plist for corner in wvous-tl-corner wvous-tr-corner wvous-bl-corner wvous-br-corner; do /usr/bin/sudo /usr/bin/defaults write $plist $corner -int 0 done /usr/bin/sudo /usr/sbin/chown $user:$(/usr/bin/id -gn $user) $plist /usr/bin/sudo /usr/bin/killall -u $user cfprefsd 2/dev/null || true fi3.4 安全审计日志保留 30 天——要求放宽为expire-after:≥ 30 天OR 5G之类的容量子句改为可选。查询从旧的60d OR 5G改为检查天数 ≥ 30。3.5 审计记录访问控制——CIS 仅更新了修复方法为chmod 700但审计仍检查-r--r-----mode 440二者在 CIS 文档中相互矛盾。Fleet 的查询遵循审计口径audit_control为 0400/var/audit内容为 0440因此查询与测试脚本保持不变。5.1.6 系统文件夹无全局可写目录——CIS 增加了2/dev/null抑制错误fleetd 的find_cmd表已处理此情况查询不变。注意 CIS 审计排除downloadDir|locks而 Fleet 查询仅排除Drop Box这一既有的排除差异保留未动早于 v3.1.0 增量。5.1.7 库文件夹无全局可写目录——CIS 更新审计以忽略不可访问的/Library/AppStore文件夹查询现在排除/Library/AppStore。5.3.1 / 5.3.2 存储加密——CIS 移除了旧的 CoreStorage 推荐将磁盘加密拆分为内置5.3.1与外置5.3.2。Fleet 的 5.3.1 覆盖内置 APFS 卷存在上述表结构缺陷旧 CoreStorage 策略已删除。Apple 的密封只读资产 cryptex 卷无 role、名称以Cryptex结尾macOS 15 及以后存在无法加密已从查询中排除以避免误报失败。5.3.2外置与 5.3.3FAT32/ExFAT记录在 Limitations 中。5.6 禁用 root 账户——CIS 更新审计以在 root 未启用时也能检测残留的secure token修复方法随之增加fdesetup remove -user root。Fleet 的查询原本就检查 root 的AuthenticationAuthority键缺失该条件覆盖了 secure token 场景修复说明与测试脚本相应更新为移除 secure token。六、fleetd 自定义表与控制台用户陷阱许多设置无法用原生 osquery 表读取Fleet 通过 orbit/pkg/table/ 中的自定义 fleetd 表补齐。macOS 14 的 CIS 策略实际用到的表包括表关键列使用约束服务条目apfs_volumesrole、filevault、encryption、device_identifier、name无内部/外置指示5.3.1authdbright_name、json_resultright_name必须等值约束用json_extract(json_result, $.rule)解析5.8 等csrutil_infossv_enabled整型 0/15.7dsclcommand、path、key、valuecommand/path/key必填目前仅支持commandread5.6 等find_cmddirectory、type、perm、pathdirectory必填且为绝对路径5.1.6、5.1.7nvram_infoamfi_enabled整型 0/15.9 等pmsetgetting、json_resultgetting如custom用JSON_EXTRACT(json_result, $.AC Power:)5.5 等pwd_policymax_failed_attempts、expires_every_n_days、history_depth等见控制台用户陷阱5.2.xpassword_policypolicy_identifier、policy_contentmacOS 原生表非 fleetd5.2.xsoftware_updatesoftware_update_required—1.1sudo_infojson_result解析sudo -V输出5.4user_login_settingspassword_hint_enabled见控制台用户陷阱5.2.x例如find_cmd表会调用/usr/bin/find适用于/System/Volumes/Data/System这类大范围扫描——直接遍历原生file表在超过 1 万行时会超出 osquery 的 CPU/内存限制。控制台用户陷阱Console-User Caveatpwd_policy、user_login_settings以及原生location_services表会以当前控制台用户的身份执行底层命令。如果查询时没有控制台用户登录——或在无头测试 VM 上控制台用户是root——这些表返回空结果查询会静默失败0 行。因此评估任何依赖这些表的策略前必须确保有一个非 root 的控制台用户已登录。当前受影响的策略包括5.2.1、5.2.2、5.2.7、5.2.8、2.12.1、2.6.1.1。2.7.1也要求非 root 控制台用户登录但机制不同其查询通过logged_in_userstty console限定为当前控制台用户的 Dock plist没有控制台用户时失败场景无法被触发查询会平凡通过。七、测试工件脚本、描述文件与自动测试运行器7.1 测试类型分级每条策略至少应被以下一种工件覆盖测试运行器按优先级分类优先级类型工件测试方式1PASS_FAIL_pass.sh_fail.sh先跑 fail 脚本验证查询失败再跑 pass 脚本验证查询通过2PASS_ONLYCIS_{id}.sh运行脚本后验证查询通过3PROFILEprofiles 目录中的.mobileconfig无描述文件时查询应失败推送描述文件到团队后查询通过4MANUAL以上皆无提示用户按修复步骤操作或--skip-manual跳过脚本优先于描述文件若策略同时具备脚本与描述文件则按脚本类型测试描述文件在 setup 阶段与其他描述文件一并推送。7.2 测试脚本约定test/scripts/ 中的脚本遵循严格约定统一使用#!/bin/bash系统命令使用完整路径/usr/bin/sudo、/usr/sbin/systemsetup首行注释注明 CIS 编号与策略名不可靠的脚本以not_always_working_前缀命名运行器会跳过如not_always_working_CIS_2.10.1.sh创建工件的 fail 脚本stub app、stub 目录、额外 plist 键应配套移除这些工件的 pass 脚本。以 CIS_2.3.3.4_pass.sh 的配套示例来看远程登录的禁用与启用脚本分别执行systemsetup -setremotelogin off/on。常用的脚本模式还包括按路径写控制台用户 plistroot 环境下sudo -u $user defaults write domain会因 per-user cfprefsd 不可达而报 Could not write domain某些 macOS 版本上launchctl asuser也只写缓存不写文件因此正确做法是直接写文件路径、修属主、再重启 cfprefsd遍历/Users/*跳过Shared、Guest与点前缀目录幂等删除defaults delete ... 2/dev/null || truesudoers.d 文件名规则macOS 忽略含点的文件名须用下划线且无扩展名原子改写配置文件经mktempawk/sed写临时文件再mv绝不原地编辑。7.3 MDM 配置描述文件test/profiles/ 中的.mobileconfig是 XML plist 文件。以 1.6.mobileconfig 为实例结构为顶层PayloadType Configuration包裹一个内层 payload内层PayloadType为设置域此处为com.apple.SoftwareUpdate并包含多个设置键?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyPayloadContent/key array dict keyPayloadType/key stringcom.apple.SoftwareUpdate/string keyPayloadIdentifier/key stringcom.fleetdm.cis-1.6.check/string keyPayloadUUID/key string0D8F676A-A705-4F57-8FF8-3118360EFDEB/string keyConfigDataInstall/key true/ keyCriticalUpdateInstall/key true/ /dict /array keyPayloadIdentifier/key stringcom.fleetdm.cis-1.6/string keyPayloadRemovalDisallowed/key false/ keyPayloadScope/key stringSystem/string keyPayloadType/key stringConfiguration/string keyPayloadUUID/key stringEBEE9B81-9D33-477F-AFBE-9691360B7A74/string keyPayloadVersion/key integer1/integer /dict /plist命名约定与创建要点详见 test/profiles/README.md 与 CIS-BENCHMARKS.md单描述文件使策略通过{cis_id}.mobileconfig组织决策型策略{cis_id}-enable.mobileconfig/{cis_id}-disable.mobileconfig一个描述文件覆盖多个 CIS 编号{id1}-and-{id2}.mobileconfig如 5.2.3-and-5.2.4.mobileconfig需要多个描述文件同时安装的条目{cis_id}-part1.mobileconfig如 2.6.2 拆分为 part1/part2/part3用uuidgen生成两个唯一 UUID顶层与内层 payload 各一内层PayloadType设为设置域顶层PayloadIdentifier为com.fleetdm.cis-{cis_id}、内层为com.fleetdm.cis-{cis_id}.check提交前用/usr/bin/plutil -lint校验。关键注意点同一PayloadType的多个键必须放在同一个内层 payload dict 中而不是拆成多个描述文件——部分基准明确要求如此例如延迟更新描述文件需要enforcedSoftwareUpdateDelay与forceDelayedSoftwareUpdates同时生效。一个典型的多键例子是防火墙 隐身模式CIS 要求二者必须位于同一描述文件com.apple.security.firewallpayload 同时含EnableFirewall与EnableStealthMode分开会导致失败。7.4 自动测试运行器tools/cis/cis-test-runner.py 自动化完整测试周期创建 Fleet 团队、在 tart VM 中构建并安装 fleetd、注册主机、逐条运行测试并输出汇总。常用命令# 测试全部跳过需要人工操作或缺少测试工件的策略 python3 tools/cis/cis-test-runner.py \ --macos-version 14 --all --skip-manual \ --fleet-url $FLEET_URL --fleet-token $FLEET_API_TOKEN # 只测试指定 CIS 编号 python3 tools/cis/cis-test-runner.py \ --macos-version 14 --cis-ids 2.3.3.4,1.1 # 测试完成后清理全部环境 python3 tools/cis/cis-test-runner.py \ --macos-version 14 --all --skip-manual --cleanup对仅靠描述文件才能通过的策略运行器会自动执行推送前先跑查询确认返回 0 行能检测不合规→ 推送描述文件 → 等待下发 → 再跑查询确认返回行。若查询在描述文件下发前就意外通过运行器会在结果中记录note:警告该查询可能无法检测不合规防火墙、Gatekeeper 等查询的系统状态可能本就合规值得调查但不自动判失败。八、如何在你的 Fleet 实例中落地 macOS 14 CIS 策略综合上述实现在实际环境中启用这些策略的建议路径是确认目标评估贵组织需要 Level 1、Level 2 还是两者的组合tags字段区分CIS_Level1/CIS_Level2并审阅 README.md 中的 Limitations 与组织决策项清单。裁剪决策型策略对 2.1.1.1、2.1.1.2、2.5.1、2.8.1 四组双版本策略先明确组织的立场只保留-enabled或-disabled其中之一对 5.2.3–5.2.6 密码复杂度策略若组织不实施直接删除。导入策略将cis-policy-queries.yml中的策略按需导入 Fleet可通过 GitOps 或 Fleet UI注意每条策略的查询依赖(MDM Required)条目需要先推送对应的.mobileconfig描述文件(Fleetd Required)条目需要目标主机已安装 fleetd(FDA Required)条目需要给 osquery 授予完全磁盘访问权限。确认运行前提涉及pwd_policy、user_login_settings、location_services的策略以及 2.7.1需要主机上有非 root 控制台用户登录否则查询会静默返回 0 行造成误判。验证参照test/scripts/与test/profiles/中的工件在小规模试点团队上验证每条策略合规/不合规两态均能被正确检出再推广到全量设备。结语ee/cis/macos-14/目录完整呈现了 Fleet 将 CIS macOS 14 Sonoma v3.1.0 基准工程化的全过程从 105 条 osquery 策略与五种查询模式到 10 项无法策略化的限制清单、4 组组织决策双版本策略再到 v3.1.0 逐条增量说明、fleetd 自定义表的使用边界与自动化测试体系。这套实现既可以直接作为合规基线投入使用其 CIS-BENCHMARKS.md 中的撰写与测试约定也适用于未来版本升级新增 macOS 版本时需同步在 cis-test-runner.py 中注册VERSION_MAP、SSH_BREAKING_CIS_IDS、PASSWORD_POLICY_CIS_IDS、NON_AUTOMATABLE_CIS_IDS四个字典——理解这些机制是安全团队准确解读策略结果、避免误报漏报的关键。赞分享后端前端企业应用运维网络安全【免费下载链接】fleetOpen device management项目地址https://gitcode.com/GitHub_Trending/fl/fleet点击查看免费下载相关推荐基于 Fleet 的 macOS 15 Sequoia CIS Benchmark 合规策略实战指南基于 Fleet 的 macOS 15 Sequoia CIS Benchmark 合规策略实战指南 本指南以 Fleet 开源仓库中 ee/cis/macos后端前端企业应用运维网络安全Fleet CIS Benchmarks 实战把 CIS 基准变成策略、GitOps 工作流与合规闭环Fleet CIS Benchmarks 实战把 CIS 基准变成策略、GitOps 工作流与合规闭环 CIS Benchmarks 是网络安全专家基于共识制后端前端企业应用运维网络安全Fleet 中的 CIS macOS 13 Ventura 基准合规实践策略查询、MDM 配置与补救脚本全解析Fleet 中的 CIS macOS 13 Ventura 基准合规实践策略查询、MDM 配置与补救脚本全解析 本文是围绕开源设备管理平台 Fleet 官方提后端前端企业应用运维网络安全上一篇aioredis-py 项目常见问题解决方案下一篇免费提取人声、分离伴奏一步到位UVR 5.6 音频分离工具完整上手指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表