Android 管理 API 未阻止来自 Play 商店中不同帐户的应用安装

App installs from different account in Play Store not being blocked by Android Management API

我们正在为我们的组织测试 Android 管理 API,并且我们找到了托管 Play 商店的解决方法:如果用户将他的个人帐户添加到设备(以访问 Gmail,例如),他可以在 Play 商店中切换到该帐户并下载政策不允许的应用程序。

虽然 DPC(Android 设备策略)会在下一次策略同步时删除该应用程序,但出于某种原因,无论何时安装应用程序,同步都不会自动发生。 Device Policy 应用仅在以下任一情况下同步:1) 管理员通过 API 推送对策略的更改,或 2) 用户通过应用手动同步。

这意味着用户可以安装任何他想要的应用程序,并在策略同步之前使用它。

是否有任何方法可以防止用户从受管理的 Play 商店帐户外部下载应用,或者让 Device Policy 应用在安装应用时自动同步?

这是我应用到测试设备和补丁码的策略:

import json

test_policy_name = enterprise_name + '/policies/test'

test_policy_json = '''
{
  "applications": [
    {
      "packageName": <app_package_name>,
      "installType": "BLOCKED"
    },
    {
      "packageName": <app_package_name>,
      "installType": "AVAILABLE"
    }
  ],
  "installAppsDisabled": false,
  "playStoreMode": "WHITELIST",
  "installUnknownSourcesAllowed": false
}
'''

androidmanagement.enterprises().policies().patch(
    name=test_policy_name,
    body=json.loads(test_policy_json)
).execute()

实际上,可以使用不同于 Android 管理 API 配置的 Google 帐户从 Google Play 商店安装任何应用程序。

您有两种选择来解决这个问题:

  1. 阻止设备,直到卸载不在策略中的应用程序
  2. 禁止添加其他 Google 帐户,因此用户无法安装不在政策中的应用程序

目前无法在允许其他 Google 帐户的同时阻止从 Google Play 商店安装任何应用程序。我们正在开发一项允许这样做的功能,但目前没有准确的时间表。

选项 1:阻止设备,直到卸载不在策略中的应用程序

您可以在 policy 中设置 policyEnforcementRules 以阻止设备,直到禁用的应用程序被卸载:

{
  "policyEnforcementRules": [
    {
      "blockAction": {
        "blockAfterDays": 0
      },
      "wipeAction": {
        "wipeAfterDays": 30,
        "preserveFrp": true
      },
      "settingName": "playStoreMode"
    }
  ]
}

选项 2:禁用添加其他 Google 帐户,因此用户无法安装不在政策中的应用

您可以在策略中禁用添加其他 Google 个帐户:

  • accountTypesWithManagementDisabled设置为["com.google"],
  • 或者,将 modifyAccountsDisabled 设置为 true

这将阻止在所有 Google 应用程序(包括 Gmail、Google 日历、Google 云端硬盘等)中使用其他 Google 帐户,而不仅仅是在 Google Play 商店。