En las siguientes solicitudes, se muestra la administración de políticas con la API de Policy. Antes de comenzar, asegúrate de revisar la Descripción general de la API de Chrome Policy para obtener un resumen de alto nivel de las funciones de esta API.
Todas las solicitudes que se presentan a continuación usan las siguientes variables:
$TOKEN
: Token de OAuth 2$CUSTOMER
: ID del cliente o literalmy_customer
Enumerar esquemas para las políticas de impresoras
Para enumerar esquemas que solo corresponden a políticas para impresoras, aplicaremos el parámetro filter
a la solicitud de lista de servicios de esquema. Puedes controlar la paginación del resultado con los parámetros pageSize
y pageToken
.
Solicitud
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=chrome.printers&pageSize=2"
Respuesta
{
"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"
}
Buscar esquemas
Puedes crear consultas de búsqueda complejas con el parámetro filter=
en la solicitud de lista del servicio de Schema. Por ejemplo, si deseas buscar esquemas que tengan la palabra "impresora" en el nombre y la palabra "dispositivos" en la descripción, puedes aplicar el siguiente valor al filtro name=printers AND description=devices
.
Obtén información para enumerar esquemas de políticas.
Solicitud
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=name=printers%20AND%20description=devices"
Respuesta
{
"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"
}
]
}
Obtén un esquema en particular
En el resultado anterior, vemos una lista de esquemas de políticas compatibles. Cada esquema tiene un campo name
que identifica el esquema. En el futuro, una vez que conozcas el nombre del esquema, podrás leer el esquema particular directamente consultando el nombre del esquema en la URL de la solicitud.
Veamos un ejemplo del esquema chrome.printers.AllowForUsers
.
Solicitud
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas/chrome.printers.AllowForUsers"
Respuesta
{
"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"
}
Arriba de la respuesta del esquema de política, se describe el esquema de la política chrome.printers.AllowForUsers
. Observa el campo additionalTargetKeyNames
.
En este campo, se explica que la política requiere que se proporcionen claves o valores adicionales cuando se trata de esta política. En particular, para esta política, siempre debemos proporcionar el identificador de una impresora.
Lee el valor de una política
Vamos a leer una política chrome.printers.AllowForUsers
para una impresora en particular.
Observa el uso del campo additionalTargetKeys
para especificar el ID de impresora en la solicitud.
Puedes leer una política desde una unidad organizativa o un grupo.
En la respuesta, observa el campo sourceKey
, que especifica de qué unidad organizativa o grupo proviene el valor de la política. En el caso de las unidades organizativas, existen las siguientes posibilidades:
- Si la unidad organizativa de origen es la misma que la unidad organizativa que se proporciona en una solicitud, significa que la política se aplica de forma local en esta unidad organizativa.
- Si la unidad organizativa de origen es diferente de la unidad organizativa proporcionada en una solicitud, significa que la política se hereda de la unidad organizativa de origen.
- Si no hay ningún
sourceKey
presente, o la respuesta está vacía, significa que la política no está establecida para el cliente y tiene un valor del sistema predeterminado.
Para los grupos, sourceKey siempre será la misma que la del grupo que se especificó en la solicitud.
El siguiente ejemplo corresponde a una unidad organizativa. Una solicitud de grupo sería la misma, excepto por targetResource, que tendría "groups/" en lugar de "orgunits/" antes del ID.
Solicitud
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"
Respuesta
{
"resolvedPolicies": [
{
"targetKey": {
"targetResource": "orgunits/03ph8a2z1xdnme9"
"additionalTargetKeys": {"printer_id":"0gjdgxs208tpef"}
},
"value": {
"policySchema": "chrome.users.AllowForDevices",
"value": {
"allowForDevices": true
}
},
"sourceKey": {
"targetResource": "orgunits/03ph8a2z3qhz81k"
}
}
]
}
Ten en cuenta que todas las entidades en los recursos de destino se pueden recuperar si se omite additionalTargetKeys
en la solicitud. Por ejemplo, si se omitiera additionalTargetKeys
de la solicitud anterior, se mostrarían todas las impresoras del recurso de destino especificado.
Leer varias políticas
Proporcionar un espacio de nombres del esquema con un asterisco (p.ej., chrome.printers.*
) te permite leer valores de todas las políticas en este espacio de nombres en una unidad organizativa o un grupo en particular. Obtén más información sobre los esquemas de políticas.
El siguiente ejemplo corresponde a una unidad organizativa. Una solicitud de grupo sería la misma, excepto por targetResource, que tendría "groups/" en lugar de "orgunits/" antes del ID.
Solicitud
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"
Respuesta
{
"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="
}
Modifica el valor de la política
Como se ve en la respuesta del esquema de políticas, la política chrome.printers.AllowForUsers
tiene un campo llamado allowForUsers
. Este campo es de tipo booleano. El valor de ejemplo de la política puede ser {allowForUsers: false}
o {allowForUsers: true}
. En este caso particular, solo tenemos un campo, pero otras políticas pueden contener varios campos.
En las solicitudes de modificación, debemos especificar un updateMask
. La máscara de actualización enumera todos
los campos que queremos modificar. Si la política ya se aplicó de forma local en la unidad organizativa, los campos que no se enumeren mediante la máscara de actualización permanecerán intactos. Si la política aún no se aplicó de forma local en la unidad organizativa y todos los campos que no se enumeran mediante la máscara de actualización copiarán sus valores de la unidad organizativa superior cuando corresponda, y toda la política se aplicará de forma local.
Los siguientes ejemplos corresponden a una unidad organizativa. Las solicitudes de grupo son las mismas, excepto por targetResource, que tendría “groups/” en lugar de “orgunits/” antes del ID. Aquí inhabilitaremos una impresora 0gjdgxs208tpef
para los usuarios en el ID de unidad organizativa 04fatzly4jbjho9
:
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Los campos de valores múltiples, como las listas o los arrays, se marcan con la etiqueta “LABEL_REPEATED”. Para propagar campos de valores múltiples, usa el siguiente formato de arreglo JSON: [value1, value2, value3, ...]
.
Por ejemplo, para configurar las URLs de origen de los paquetes de app y extensión como “prueba1.com”, “prueba2.com” y “prueba3.com”, debemos enviar la siguiente solicitud:
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Hay dos versiones para todas las políticas que contienen campos NullableDuration. La versión original solo acepta cadenas como entrada para NullableDuration y dejó de estar disponible. Usa la versión V2, que reemplaza el tipo de duración por una entrada numérica. Por ejemplo, para establecer la duración máxima de la sesión de usuario en 10 minutos, debemos enviar la siguiente solicitud:
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Modifica varias políticas a la vez
El método batchModify
te permite enviar varias modificaciones de políticas al mismo tiempo.
Sin embargo, no todas las políticas se pueden agrupar. Para obtener más detalles, consulta Políticas de actualización por lotes.
En este ejemplo, modificaremos, en la misma solicitud, dos políticas diferentes (chrome.printers.AllowForDevices
y chrome.printers.AllowForUsers
) para la misma impresora.
El siguiente ejemplo corresponde a una unidad organizativa. Una solicitud de grupo sería la misma, excepto por targetResource, que tendría "groups/" en lugar de "orgunits/" antes del ID.
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Hereda el valor de una política en una unidad organizativa
El método batchInherit
te permite modificar el estado de la política en una unidad organizativa de "aplicada de forma local" a "heredada". Se borrarán los valores locales, y la política heredará los valores de una unidad organizativa superior cuando corresponda.
El método batchInherit
también te permite enviar varias solicitudes heredadas de políticas al mismo tiempo. Sin embargo, no todas las políticas se pueden agrupar.
Para obtener más detalles, consulta Políticas de actualización por lotes.
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Borrar el valor de una política de un grupo
El método batchDelete
te permite borrar una política de un grupo. Se borrarán los valores locales.
El método batchDelete
también te permite enviar varias solicitudes de eliminación de políticas al mismo tiempo. Sin embargo, no todas las políticas se pueden agrupar.
Para obtener más detalles, consulta Políticas de actualización por lotes.
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Enumerar el orden de prioridad de un grupo
El método listGroupPriorityOrdering
te permite enumerar el orden de prioridad de los grupos para una app.
El orden de los IDs de grupo que se muestran indica la prioridad en la que se aplicará su configuración a la app. Las políticas cuyos IDs se encuentran antes en la lista anularán las políticas de los IDs posteriores.
Ten en cuenta que las prioridades de los grupos son superiores a las prioridades de las unidades organizativas.
En esta solicitud, mostramos el orden de prioridad para la app de usuario de Chrome "exampleapp".
Solicitud
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"
Respuesta
{
"policyTargetKey": {
"additionalTargetKeys": {
"app_id": "chrome:exampleapp"
}
},
"policyNamespace": "chrome.users.apps",
"groupIds": [
"03ep43zb2k1nodu",
"01t3h5sf2k52kol",
"03q5sasy2ihwnlz"
]
}
Actualiza el orden de prioridad de un grupo
El método updateGroupPriorityOrdering
te permite actualizar el orden de prioridad de los grupos para una app.
El orden de los ID de grupo en la solicitud indica la prioridad en la que se aplicará su configuración a la app. Las políticas cuyos IDs se encuentran antes en la lista anularán las políticas de los IDs posteriores. La solicitud debe incluir cada ID de grupo que se aplica actualmente a la app.
Ten en cuenta que las prioridades de los grupos son superiores a las prioridades de las unidades organizativas.
En esta solicitud, establecemos el orden de prioridad para la app de usuario de Chrome "exampleapp".
Solicitud
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"
Respuesta
Una respuesta correcta está vacía.
{}
Maneja políticas que requieren confirmación
Algunos esquemas de políticas especifican “avisos” para ciertos valores de un campo en particular que requieren confirmación.
Ejemplo de la política 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"
}
En el ejemplo anterior, configurar el valor del campo pluginVmAllowed
en true
está asociada con una notificación que tiene acknowledgementRequired
. Para establecer correctamente este valor de campo en true
, deberás enviar una solicitud que especifique el campo de confirmación ackNoticeForPluginVmAllowedSetToTrue
a true
; de lo contrario, tu solicitud mostrará un error.
En este ejemplo, tendrías que enviar la siguiente solicitud de modificación por lotes.
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"
Configuración de políticas de archivos
Algunas políticas tienen campos escritos como UploadedFile
. Deberás subir el archivo que deseas establecer como el valor de esas políticas al servidor de la API a fin de obtener una URL para usar en las solicitudes BatchModify
.
En este ejemplo, configuraremos chrome.users.Wallpaper
mediante la carga de un archivo JPEG.
Cómo subir el archivo
Solicitud
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"
Respuesta
Una respuesta correcta debe contener la URL para acceder al archivo:
{
"downloadUri": "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"
}
Establece la política de archivos
Solicitud
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"
Respuesta
Una respuesta correcta debe estar vacía.
{}