以下请求展示了使用 Policy API 进行政策管理的情况。在您之前 首先,请务必查看 Chrome Policy API 概览 ,简要了解此 API 的功能。
下面展示的所有请求都使用以下变量:
$TOKEN
- OAuth 2 令牌$CUSTOMER
- 客户 ID 或字面量my_customer
列出打印机政策的架构
如需列出仅涉及打印机政策的架构,我们将采用 filter
参数添加到架构服务列表请求中。您可以控制
使用 pageSize
和 pageToken
参数返回结果。
请求
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=chrome.printers&pageSize=2"
响应
{
"policySchemas": [
{
"name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForUsers",
"policyDescription": "Allows a printer for users in a given organization.",
"additionalTargetKeyNames": [
{
"key": "printer_id",
"keyDescription": "Id of printer as visible in Admin SDK printers API."
}
],
"definition": {
"messageType": [
{
"name": "AllowForUsers",
"field": [
{
"name": "allowForUsers",
"number": 1,
"label": "LABEL_OPTIONAL",
"type": "TYPE_BOOL"
}
]
}
]
},
"fieldDescriptions": [
{
"field": "allowForUsers",
"description": "Controls whether a printer is allowed for users in a given organization."
}
],
"schemaName": "chrome.printers.AllowForUsers"
},
{
"name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForDevices",
"policyDescription": "Allows a printer for devices in a given organization.",
"additionalTargetKeyNames": [
{
"key": "printer_id",
"keyDescription": "Id of printer as visible in Admin SDK printers API."
}
],
"definition": {
"messageType": [
{
"name": "AllowForDevices",
"field": [
{
"name": "allowForDevices",
"number": 1,
"label": "LABEL_OPTIONAL",
"type": "TYPE_BOOL"
}
]
}
]
},
"fieldDescriptions": [
{
"field": "allowForDevices",
"description": "Controls whether a printer is allowed for devices in a given organization."
}
],
"schemaName": "chrome.printers.AllowForDevices"
}
],
"nextPageToken": "AEbDN_obE8A98T8YhIeU9VCIZhEBylLBwZRQpGu_DUug-mU4bnzcDx30UnO2xMuuImvfVpmeuXRF6VhJ4OmZpZ4H6EaRvu2qMOPxVN_u"
}
搜索架构
您可以在架构中使用 filter=
参数创建复杂搜索查询
服务列表请求。例如,如果您想搜索包含
字词“打印机”在名称和“devices”一词中说明中可能含有
为过滤条件 name=printers AND description=devices
赋值。
了解如何列出政策架构。
请求
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=name=printers%20AND%20description=devices"
响应
{
"policySchemas": [
{
"name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForDevices",
"policyDescription": "Allows a printer for devices in a given organization.",
"additionalTargetKeyNames": [
{
"key": "printer_id",
"keyDescription": "Id of printer as visible in Admin SDK printers API."
}
],
"definition": {
"messageType": [
{
"name": "AllowForDevices",
"field": [
{
"name": "allowForDevices",
"number": 1,
"label": "LABEL_OPTIONAL",
"type": "TYPE_BOOL"
}
]
}
]
},
"fieldDescriptions": [
{
"field": "allowForDevices",
"description": "Controls whether a printer is allowed for devices in a given organization."
}
],
"schemaName": "chrome.printers.AllowForDevices"
}
]
}
获取特定架构
在以上结果中,我们看到了支持的政策架构列表。每个架构都有
用于标识架构的 name
字段。一旦您知道了
则可以参考架构名称中的
架构名称。
我们来看一个 chrome.printers.AllowForUsers
架构示例。
请求
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas/chrome.printers.AllowForUsers"
响应
{
"name": "customers/C0202nabg/policySchemas/chrome.printers.AllowForUsers",
"policyDescription": "Allows a printer for users in a given organization.",
"additionalTargetKeyNames": [
{
"key": "printer_id",
"keyDescription": "Id of printer as visible in Admin SDK printers API."
}
],
"definition": {
"messageType": [
{
"name": "AllowForUsers",
"field": [
{
"name": "allowForUsers",
"number": 1,
"label": "LABEL_OPTIONAL",
"type": "TYPE_BOOL"
}
]
}
]
},
"fieldDescriptions": [
{
"field": "allowForUsers",
"description": "Controls whether a printer is allowed for users in a given organization."
}
],
"schemaName": "chrome.printers.AllowForUsers"
}
上面的政策架构响应描述了
chrome.printers.AllowForUsers
政策。注意字段 additionalTargetKeyNames
。
此字段说明了政策要求必须提供额外的键/值
需要注意的一点是具体而言,对于本政策,我们始终需要
提供打印机的标识符。
读取政策值
我们来阅读特定打印机的 chrome.printers.AllowForUsers
政策。
请注意,使用字段 additionalTargetKeys
指定请求中的打印机 ID。
您可以读取组织部门或群组的政策。
在响应中,请注意 sourceKey
字段,该字段指定了
政策值的来源组织部门或群组。对于
组织部门,则可能存在以下几种选择:
- 如果源组织部门与 则表示该政策已在此组织部门本地应用。
- 如果源组织部门与下方指定的组织部门不同 请求,则表示该政策是从源组织继承的 单元。
- 如果不存在
sourceKey
或响应为空,则表示政策 没有为客户设置,并且具有默认的系统值。
对于群组,sourceKey 将始终与之前使用的群组相同 指定名称。
以下示例适用于组织部门。群组请求为 但 targetResource 均相同,但 targetResource 以“groups/”表示而非 “orgunits/”。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policySchemaFilter: "chrome.printers.AllowForDevices"
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies:resolve"
响应
{
"resolvedPolicies": [
{
"targetKey": {
"targetResource": "orgunits/03ph8a2z1xdnme9"
"additionalTargetKeys": {"printer_id":"0gjdgxs208tpef"}
},
"value": {
"policySchema": "chrome.users.AllowForDevices",
"value": {
"allowForDevices": true
}
},
"sourceKey": {
"targetResource": "orgunits/03ph8a2z3qhz81k"
}
}
]
}
请注意,您可以通过省略
additionalTargetKeys
。例如,如果 additionalTargetKeys
则会返回
指定的目标资源。
读取多项政策
提供带有星号的架构命名空间(例如,chrome.printers.*
)允许
在特定的环境中读取此命名空间下所有政策的值,
组织部门或群组。详细了解
政策架构。
以下示例适用于组织部门。群组请求为 但 targetResource 均相同,但 targetResource 以“groups/”表示而非 “orgunits/”。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
},
policySchemaFilter: "chrome.printers.*"
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies:resolve"
响应
{
"resolvedPolicies": [
{
"targetKey": {
"targetResource": "orgunits/04fatzly4jbjho9",
"additionalTargetKeys": {
"printer_id": "0gjdgxs0xd59y1"
}
},
"value": {
"policySchema": "chrome.printers.AllowForUsers",
"value": {
"allowForUsers": false
}
}
},
{
"targetKey": {
"targetResource": "orgunits/04fatzly4jbjho9",
"additionalTargetKeys": {
"printer_id": "0gjdgxs0xd59y1"
}
},
"value": {
"policySchema": "chrome.printers.AllowForDevices",
"value": {
"allowForDevices": false
}
}
},
//...
],
"nextPageToken": "AEbDN_pFvDeGSbQDkvMxr4UA0Ew7UEUw8aJyw95VPs2en6YxMmFcWQ9OQQEIeSkjnWFCQNyz5GGoOKQGEd50e2z6WqvM2w7sQz6TMxVOBD_4NmEHRWtIJCYymeYXWHIrNH29Ezl1wkeyYBAOKnE="
}
修改政策值
如政策架构响应中所示,政策 chrome.printers.AllowForUsers
有一个名为allowForUsers
的字段。此字段是布尔值类型。示例
此政策的值可以是 {allowForUsers: false}
或
{allowForUsers: true}
。在这个特定示例中,我们只有一个字段
但其他政策可能包含多个字段
在修改请求中,我们需要指定 updateMask
。更新遮盖后,系统会列出
输入要修改的字段如果政策已在
组织部门,那么通过更新掩码未列出的字段将
不受影响如果政策未在本地应用至
组织部门,以及未通过更新掩码列出的所有字段
在适当情况下从上级组织部门复制其值,
整个政策都将在本地应用。
以下示例适用于组织部门。群组请求是
除 targetResource 外相同,前者的后者包含“groups/”而非
“orgunits/”。在此处,我们将禁止打印机 0gjdgxs208tpef
访问
组织部门 ID“04fatzly4jbjho9
”中的用户:
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
requests: [{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policyValue: {
policySchema: "chrome.printers.AllowForUsers",
value: {allowForUsers: false}
},
updateMask: {paths: "allowForUsers"}
}]
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"
响应
成功的响应为空。
{}
列表或数组等多值字段标有“LABEL_REPEATED”
标签。如需填充多值字段,请使用以下 JSON 数组格式:
[value1, value2, value3, ...]
。
例如,要将应用和扩展程序软件包的来源网址设为 “test1.com”、“test2.com”和“test3.com”,则需要发送以下请求:
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{
requests: [
{
policy_target_key: {
target_resource: 'orgunits/03ph8a2z28rz85a'
},
updateMask: {
paths: ['extensionInstallSources']
},
policy_value: {
policy_schema: 'chrome.users.appsconfig.AppExtensionInstallSources',
value: {
extensionInstallSources: ['test1.com', 'test2.com', 'test3.com']
}
}
}
]
}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"
响应
成功的响应为空。
{}
所有包含 NullableDuration 字段的政策都有两个版本。 原始版本仅接受字符串作为 NullableDuration 的输入,现在是 已弃用。请使用 V2 版本,将时长类型替换为 数字输入。例如,将用户会话时长上限设置为 10 分钟 我们需要发送以下请求:
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{
requests: [
{
policy_target_key: {
target_resource: 'orgunits/03ph8a2z28rz85a'
},
updateMask: {
paths: ['sessionDurationLimit']
},
policy_value: {
policy_schema: 'chrome.users.SessionLengthV2',
value: {
sessionDurationLimit: {
duration: 10
}
}
}
}
]
}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"
响应
成功的响应为空。
{}
一次修改多项政策
batchModify
方法可同时发送多项政策修改。
不过,并非所有政策都可以批量进行批处理。如需了解更多详情,
请参阅批量更新政策。
在此示例中,我们将在同一请求中修改两个不同的
政策(chrome.printers.AllowForDevices
和 chrome.printers.AllowForUsers
)
。
以下示例适用于组织部门。群组请求为 但 targetResource 均相同,但 targetResource 以“groups/”表示而非 “orgunits/”。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
requests: [{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policyValue: {
policySchema: "chrome.printers.AllowForDevices",
value: {allowForDevices: true}
},
updateMask: {paths: "allowForDevices"}
},
{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policyValue: {
policySchema: "chrome.printers.AllowForUsers",
value: {allowForUsers: true}
},
updateMask: {paths: "allowForUsers"}
}]
}' \
"https://chromepolicy.googleapis.com/v1/customers/C0202nabg/policies/orgunits:batchModify"
响应
成功的响应为空。
{}
在组织部门中继承政策值
batchInherit
方法允许您从以下位置修改组织部门中的政策状态:
“局部应用”更改为“已继承”。本地值将被清除,并且此政策
将从上级组织部门继承值(如适用)。
借助 batchInherit
方法,您还可以发送多个继承政策
同时提出多个请求不过,并非所有政策都可以批量进行批处理。
如需了解更多详情,
请参阅批量更新政策。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
requests: [{
policyTargetKey: {
targetResource: "orgunits/04fatzly12wd3ox",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policySchema: "chrome.printers.AllowForUsers"
}]
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchInherit"
响应
成功的响应为空。
{}
在群组中删除政策值
batchDelete
方法,可用于从组中删除政策。本地值将被清除。
batchDelete
方法还允许您发送多个政策删除请求。
同时提出多个请求不过,并非所有政策都可以批量进行批处理。
有关详情,请参阅
批量更新政策。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
requests: [{
policyTargetKey: {
targetResource: "groups/04fatzly12wd3ox",
additionalTargetKeys: {"printer_id":"0gjdgxs208tpef"}
},
policySchema: "chrome.printers.AllowForUsers"
}]
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:batchDelete"
响应
成功的响应为空。
{}
列出群组的优先级排序
listGroupPriorityOrdering
方法列出应用程序的各组的优先级顺序。
返回的群组 ID 的顺序表示 他们的设置会应用到该应用;稍后的 ID政策将 会被列表中 ID 较早的政策覆盖。
请注意,群组优先级高于组织部门优先级。
在此请求中,我们将返回“exampleapp” Chrome 用户应用。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
policyTargetKey: {
additionalTargetKeys: {"app_id":"chrome:exampleapp"}
},
policyNamespace: 'chrome.users.apps'
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:listGroupPriorityOrdering"
响应
{
"policyTargetKey": {
"additionalTargetKeys": {
"app_id": "chrome:exampleapp"
}
},
"policyNamespace": "chrome.users.apps",
"groupIds": [
"03ep43zb2k1nodu",
"01t3h5sf2k52kol",
"03q5sasy2ihwnlz"
]
}
更新群组的优先级顺序
updateGroupPriorityOrdering
方法,您可以为应用程序更新群组的优先级排序。
群组 ID 在请求中的顺序表示优先级, 他们的设置会应用到该应用;稍后的 ID政策将 会被列表中 ID 较早的政策覆盖。该请求必须 包含当前应用于应用的每个群组 ID。
请注意,群组优先级高于组织部门优先级。
在此请求中,我们要为“exampleapp”设置优先级排序 Chrome 用户应用。
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
policyTargetKey: {
additionalTargetKeys: {"app_id":"chrome:exampleapp"}
},
policyNamespace: 'chrome.users.apps',
groupIds: ['03ep43zb2k1nodu', '01t3h5sf2k52kol', '03q5sasy2ihwnlz']
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/groups:updateGroupPriorityOrdering"
响应
成功的响应为空。
{}
处理需要确认的政策
部分政策架构会指定“通知”特定字段的某些值 需要确认的服务
政策 chrome.users.PluginVmAllowd
的示例:
{
"name": "customers/C0202nabg/policySchemas/chrome.users.PluginVmAllowed",
"policyDescription": "Parallels Desktop.",
# ...
"fieldDescriptions": [
{
"field": "pluginVmAllowed",
"description": "N/A",
"knownValueDescriptions": [
{
"value": "true",
"description": "Allow users to use Parallels Desktop."
},
{
"value": "false",
"description": "Do not allow users to use Parallels Desktop."
}
]
},
{
"field": "ackNoticeForPluginVmAllowedSetToTrue",
"description": "This field must be set to true to acknowledge the notice message associated with the field 'plugin_vm_allowed' set to value 'true'. Please see the notices listed with this policy for more information."
}
],
"notices": [
{
"field": "pluginVmAllowed",
"noticeValue": "true",
"noticeMessage": "By enabling Parallels Desktop, you agree to the Parallels End-User License Agreement specified at https://www.parallels.com/about/legal/eula/. Warning: Device identifiers may be shared with Parallels. Please see privacy policy for more details at https://www.parallels.com/about/legal/privacy/. The minimum recommended configuration includes an i5 processor, 16 GB RAM, and 128 GB storage: https://support.google.com/chrome/a/answer/10044480.",
"acknowledgementRequired": true
}
],
"supportUri": "...",
"schemaName": "chrome.users.PluginVmAllowed"
}
在上面的示例中,将字段 pluginVmAllowed
的值设置为 true
会
与包含acknowledgementRequired
的通知相关联。正确
将此字段值设置为 true
,则需要发送指定
将确认字段 ackNoticeForPluginVmAllowedSetToTrue
更改为 true
,
否则,您的请求将出现错误。
在此示例中,您需要发送以下批量修改请求。
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d "{
'requests': [
{
'policyTargetKey': {
'targetResource': 'orgunits/03ph8a2z10ybbh2'
},
'policyValue': {
'policySchema': 'chrome.users.PluginVmAllowed',
'value': {
'pluginVmAllowed': true,
'ackNoticeForPluginVmAllowedSetToTrue': true
}
},
'updateMask': {
'paths': [
'pluginVmAllowed',
'ackNoticeForPluginVmAllowedSetToTrue'
]
}
}
]
}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"
设置文件政策
部分政策的字段类型为UploadedFile
,您需要上传
政策值的文件,以便
来获取要在 BatchModify
请求中使用的网址。
在本示例中,我们将通过上传一个 chrome.users.Wallpaper
JPEG 文件。
上传文件
请求
curl -X POST \
-H "Content-Type: image/jpeg" \
-H "Authorization: Bearer $TOKEN" \
-T "/path/to/the/file" \
"https://chromepolicy.googleapis.com/upload/v1/customers/$CUSTOMER/policies/files:uploadPolicyFile?policy_field=chrome.users.Wallpaper.wallpaperImage"
响应
成功的响应应包含访问文件的网址:
{
"downloadUri": "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"
}
设置文件政策
请求
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
requests: [{
policyTargetKey: {
targetResource: "orgunits/04fatzly4jbjho9",
},
policyValue: {
policySchema: "chrome.users.Wallpaper",
value: {
wallpaperImage: {downloadUri: "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"}
}
},
updateMask: {paths: "wallpaperImage"}
}]
}' \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"
响应
成功的响应应该为空。
{}