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 商店安装任何应用程序。
您有两种选择来解决这个问题:
- 阻止设备,直到卸载不在策略中的应用程序
- 禁止添加其他 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 商店。
我们正在为我们的组织测试 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 商店安装任何应用程序。
您有两种选择来解决这个问题:
- 阻止设备,直到卸载不在策略中的应用程序
- 禁止添加其他 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 商店。