En las siguientes solicitudes, se muestra la administración de políticas con la API de Policy. Antes de ti 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 literal demy_customer
Enumerar esquemas para políticas de impresoras
Para enumerar los esquemas que solo involucran políticas para impresoras, aplicaremos filter
.
parámetro a la solicitud de lista de servicios de esquema. Puedes controlar la paginación de la
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 búsquedas complejas con el parámetro filter=
en el esquema
Solicitud de lista de servicios. Por ejemplo, si quieres buscar esquemas con
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 más información sobre cómo 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 particular
En el resultado anterior, vemos una lista de esquemas de políticas compatibles. Cada esquema tiene
un campo name
que identifique el esquema En el futuro, una vez que conozcas
nombre del esquema, puedes leer el esquema particular directamente consultando el
nombre del esquema en la URL de la solicitud.
Veamos un ejemplo del esquema de 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 de esquema de política, se describe el esquema de
Política chrome.printers.AllowForUsers
. Observa el campo additionalTargetKeyNames
.
Este campo explica que la política requiere que se proporcionen claves o pares adicionales.
cuando se trata de esta política. En particular, para esta política siempre necesitamos
proporcionar el identificador de una impresora.
Lee un valor de la política
Leamos 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 qué
Unidad organizativa o grupo del que proviene el valor de la política. Para
Unidades organizativas, existen las siguientes posibilidades:
- Si la unidad organizativa de origen es la misma que la unidad organizativa que se indica en una significa que la política se aplica localmente en esta unidad organizativa.
- Si la unidad organizativa de origen es diferente de la unidad organizativa indicada en una solicitud, significa que la política se hereda de la Oficina de administración Unidad.
- Si no hay una
sourceKey
presente o la respuesta está vacía, significa que la política no está configurado para el cliente y tiene un valor de sistema predeterminado.
Para los grupos, el sourceKey siempre será el mismo que el grupo que se especificadas en la solicitud.
El siguiente ejemplo corresponde a una unidad organizativa. Una solicitud de grupo sería iguales excepto por targetResource, que tendría la configuración “groups/” en vez 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 omites
additionalTargetKeys
de la solicitud. Por ejemplo, si additionalTargetKeys
de la solicitud anterior, devolvería todas las impresoras de la
recurso de destino especificado.
Leer varias políticas
Proporcionar un espacio de nombres de esquema con un asterisco (p.ej., chrome.printers.*
) permite
leer los valores de todas las políticas de este espacio de nombres en un
Unidad o grupo organizacional. Obtén más información sobre
Esquemas de políticas.
El siguiente ejemplo corresponde a una unidad organizativa. Una solicitud de grupo sería iguales excepto por targetResource, que tendría la configuración “groups/” en vez 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ítica, la política chrome.printers.AllowForUsers
tiene un campo llamado allowForUsers
. Este campo es de tipo booleano. Ejemplo
valor de la política podría ser {allowForUsers: false}
o
{allowForUsers: true}
En este caso particular, tenemos un solo campo,
pero otras políticas pueden contener varios campos.
En las solicitudes de modificación, debemos especificar un updateMask
. Actualizar máscara enumera todos
los campos que queremos modificar. Si la política ya se aplicó de forma local en el
Unidad organizativa, los campos que no figuran en la máscara de actualización
permanezca intacta. Si la política no se aplicó de forma local en el
Unidad organizativa y todos los campos que no se enumeren mediante la máscara de actualización
copiar sus valores de la unidad organizativa superior cuando corresponda
toda la política se aplicará de forma local.
Los siguientes ejemplos corresponden a una unidad organizativa. Las solicitudes de grupo son
excepto por targetResource, que tendría la configuración “groups/” en vez de
“orgunits/” antes del id. Aquí inhabilitaremos una impresora 0gjdgxs208tpef
para
usuarios en el ID de la 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 varios valores, como las listas o los arrays, están marcados con la etiqueta “LABEL_REPEATED”
etiqueta. Para propagar campos de varios valores, usa el siguiente formato de array JSON:
[value1, value2, value3, ...]
Por ejemplo, para establecer las URL de origen de los paquetes de aplicaciones y extensiones, como “prueba1.com”, “prueba2.com” y “test3.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.
{}
Para todas las políticas que contienen campos NullableDuration, hay dos versiones. La versión original solo acepta cadenas como entrada para NullableDuration y ahora es obsoleto. Utiliza la versión V2, que reemplaza el tipo de duración con una o una entrada numérica. Por ejemplo, para establecer la duración máxima de la sesión del usuario en 10 minutos necesitamos 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
La batchModify
te permite enviar múltiples 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 tipos
políticas (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 iguales excepto por targetResource, que tendría la configuración “groups/” en vez 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 un valor de política en una unidad organizativa
La batchInherit
te permite modificar el estado de la política en una unidad organizativa desde
"aplicada de forma local" como “heredados”. Se borrarán los valores locales y
heredarán los valores de una unidad organizativa superior, cuando corresponda.
El método batchInherit
también te permite enviar varias políticas heredadas
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 un valor de la política en un grupo
La 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 eliminaciones 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.
{}
Indica el orden de prioridad de un grupo.
La listGroupPriorityOrdering
te permite enumerar el orden de prioridad de los Grupos de una app.
El orden de los IDs de grupo que se devuelven indica la prioridad en la que se aplicarán sus parámetros de configuración a la app. IDs posteriores las políticas serán anulada por las políticas cuyos IDs se encuentran antes en la lista.
Ten en cuenta que las prioridades del grupo son más altas que las prioridades de la unidad organizativa.
En esta solicitud, mostramos el orden de prioridad para la “exampleapp”. App de usuario de Chrome.
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
La updateGroupPriorityOrdering
te permite actualizar el orden de prioridad de los Grupos de una app.
El orden de los IDs de grupo en la solicitud indica la prioridad en que se aplicarán sus parámetros de configuración a la app. IDs posteriores las políticas serán anulada por las políticas cuyos IDs se encuentran antes en la lista. La solicitud debe incluir cada ID de grupo que se aplique actualmente en la aplicación.
Ten en cuenta que las prioridades del grupo son más altas que las prioridades de la unidad organizativa.
En esta solicitud, estableceremos el orden de prioridad para la "exampleapp". App de usuario de Chrome.
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ítica especifican los “avisos” para ciertos valores de un campo en particular que requieran reconocimiento.
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, establecer el valor de campo pluginVmAllowed
en true
es
asociado con un aviso que tiene acknowledgementRequired
. Para correctamente
establece el valor de este campo en true
, deberás enviar una solicitud que especifique
el campo de confirmación ackNoticeForPluginVmAllowedSetToTrue
en true
De lo contrario, recibirás un error en tu solicitud.
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 la
de configuración que deseas establecer como el valor de esas políticas para el servidor de la API, de modo que
para obtener una URL y usarla en las solicitudes BatchModify
.
En este ejemplo, configuraremos chrome.users.Wallpaper
cargando un archivo
Archivo JPEG.
Sube 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.
{}