As solicitações abaixo ilustram o gerenciamento de políticas com a API Policy. Antes de você leia a Visão geral da API Chrome Policy para um resumo de alto nível dos recursos dessa API.
Todas as solicitações apresentadas abaixo usam as seguintes variáveis:
$TOKEN
: token OAuth 2$CUSTOMER
: ID do cliente oumy_customer
literal
Listar esquemas para políticas de impressora
Para listar esquemas que só dizem respeito a políticas de impressoras, vamos aplicar filter
à solicitação de lista de serviço de esquema. Você pode controlar a paginação do
resultado usando os parâmetros pageSize
e pageToken
.
Solicitação
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=chrome.printers&pageSize=2"
Resposta
{
"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"
}
Pesquisar esquemas
É possível criar consultas de pesquisa complexas usando o parâmetro filter=
no esquema
Solicitação da lista de serviços. Por exemplo, se você quer pesquisar esquemas que têm
a palavra "impressora" no nome e na palavra "dispositivos" na descrição, você pode aplicar
o seguinte valor ao filtro name=printers AND description=devices
.
Saiba como listar esquemas de políticas.
Solicitação
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=name=printers%20AND%20description=devices"
Resposta
{
"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"
}
]
}
Receber um esquema específico
No resultado acima, vemos uma lista de esquemas de políticas compatíveis. Cada esquema tem
um campo name
que identifica o esquema. No futuro, uma vez que você souber
esquema, você pode ler o esquema específico diretamente consultando o
no URL da solicitação.
Vamos conferir um exemplo de esquema chrome.printers.AllowForUsers
.
Solicitação
curl -X GET \
-H "Authorization: Bearer $TOKEN" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas/chrome.printers.AllowForUsers"
Resposta
{
"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"
}
Acima, a resposta do esquema de política descreve o esquema de
chrome.printers.AllowForUsers
. Aviso no campo additionalTargetKeyNames
.
Este campo explica que a política exige o fornecimento de chaves/valores extras
ao lidar com essa política. Em particular, para esta política, sempre precisamos
forneça o identificador de uma impressora.
Ler um valor de política
Vamos ler uma política chrome.printers.AllowForUsers
para uma determinada impressora.
Use o campo additionalTargetKeys
para especificar o ID da impressora na solicitação.
Você pode ler uma política em uma unidade organizacional ou em um grupo.
Na resposta, observe o campo sourceKey
, que especifica qual
Unidade organizacional ou grupo de origem do valor da política. Para
Unidades organizacionais, existem as seguintes possibilidades:
- Se a unidade organizacional de origem for igual à unidade organizacional fornecida em uma ela será aplicada localmente a essa unidade organizacional.
- Se a unidade organizacional de origem for diferente da unidade organizacional informada no uma solicitação, isso significa que a política é herdada da organização de origem Unidade.
- Se nenhum
sourceKey
estiver presente ou a resposta estiver vazia, isso significa que a política não está definido para o cliente e tem um valor de sistema padrão.
Nos Grupos do Google, a sourceKey será sempre a mesma que o grupo que foi especificado na solicitação.
O exemplo a seguir refere-se a uma unidade organizacional. Uma solicitação de grupo seria o mesmo, exceto para targetResource, que teria "groups/" em vez de "unidades organizacionais/" antes do ID.
Solicitação
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"
Resposta
{
"resolvedPolicies": [
{
"targetKey": {
"targetResource": "orgunits/03ph8a2z1xdnme9"
"additionalTargetKeys": {"printer_id":"0gjdgxs208tpef"}
},
"value": {
"policySchema": "chrome.users.AllowForDevices",
"value": {
"allowForDevices": true
}
},
"sourceKey": {
"targetResource": "orgunits/03ph8a2z3qhz81k"
}
}
]
}
Todas as entidades nos recursos de destino podem ser buscadas com a omissão
additionalTargetKeys
da solicitação. Por exemplo, se additionalTargetKeys
foram omitidos da solicitação acima, retornaria todas as impressoras na
recurso de destino especificado.
Ler várias políticas
Fornecer um namespace de esquema com um asterisco (por exemplo, chrome.printers.*
) permite
os valores de todas as políticas sob esse namespace em um determinado
Grupo ou unidade organizacional. Saiba mais sobre
Esquemas de políticas.
O exemplo a seguir refere-se a uma unidade organizacional. Uma solicitação de grupo seria o mesmo, exceto para targetResource, que teria "groups/" em vez de "unidades organizacionais/" antes do ID.
Solicitação
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"
Resposta
{
"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="
}
Modificar o valor da política
Conforme visto na resposta do esquema da política, a política chrome.printers.AllowForUsers
tem um campo chamado allowForUsers
. Esse campo é do tipo booleano. Exemplo
o valor da política pode ser {allowForUsers: false}
ou
{allowForUsers: true}
. Neste caso específico, temos apenas um campo,
Porém, outras políticas podem conter vários campos.
Em solicitações de modificação, precisamos especificar um updateMask
. Atualizar todas as listas de máscaras
os campos que queremos modificar. Se a política já tinha sido aplicada localmente no
unidade organizacional, os campos não listados pela máscara de atualização
permanecem intocados. Se a política não tiver sido aplicada localmente no
Unidade organizacional e todos os campos não listados pela máscara de atualização vão
copiar os valores da unidade organizacional mãe, quando apropriado, e as
toda a política será aplicada localmente.
Os exemplos a seguir são referentes a uma unidade organizacional. As solicitações de grupo são
o mesmo exceto para targetResource, que teria "groups/" em vez de
"unidades organizacionais/" antes do ID. Aqui, não permitiremos a impressora 0gjdgxs208tpef
para
usuários no ID da unidade organizacional 04fatzly4jbjho9
:
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Campos com vários valores, como listas ou matrizes, são marcados com um "LABEL_REPEATED"
rótulo. Para preencher campos de vários valores, use o seguinte formato de matriz JSON:
[value1, value2, value3, ...]
:
Por exemplo, para definir URLs de origem para pacotes de aplicativos e extensões como "teste1.com", "teste2.com" e "test3.com", precisamos enviar a seguinte solicitação:
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Para todas as políticas que contêm campos NullableDuration, há duas versões. A versão original só aceita string como entrada para NullableDuration e agora é descontinuada. Use a versão V2, que substitui o tipo de duração por um uma entrada numérica. Por exemplo, para definir a duração máxima da sessão do usuário como 10 minutos precisamos enviar a seguinte solicitação:
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Modificar várias políticas de uma vez
O batchModify
permite que você envie várias modificações de política ao mesmo tempo.
No entanto, nem todas as políticas podem ser agrupadas. Para mais detalhes,
consulte Políticas de atualização em lote.
Neste exemplo, modificaremos, na mesma solicitação, dois campos
políticas (chrome.printers.AllowForDevices
e chrome.printers.AllowForUsers
)
para a mesma impressora.
O exemplo a seguir refere-se a uma unidade organizacional. Uma solicitação de grupo seria o mesmo, exceto para targetResource, que teria "groups/" em vez de "unidades organizacionais/" antes do ID.
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Herdar um valor de política em uma unidade organizacional
O batchInherit
permite modificar o status da política em uma unidade organizacional de
"aplicado localmente" como "herdado". Os valores locais serão apagados, e a política
vão herdar valores de uma unidade organizacional mãe, quando aplicável.
O método batchInherit
também permite enviar várias políticas herdadas
ao mesmo tempo. No entanto, nem todas as políticas podem ser agrupadas.
Para mais detalhes,
consulte Políticas de atualização em lote.
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Excluir um valor de política em um grupo
O batchDelete
permite excluir uma política de um grupo. Os valores locais serão apagados.
O método batchDelete
também permite enviar várias políticas de exclusão
ao mesmo tempo. No entanto, nem todas as políticas podem ser agrupadas.
Para mais detalhes, consulte
Políticas de atualização em lote.
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Listar a ordem de prioridade para um grupo
O listGroupPriorityOrdering
permite listar a ordem de prioridade dos grupos de um aplicativo.
A ordem dos IDs de grupo retornados indica a prioridade na qual as configurações dele serão aplicadas ao app. IDs posteriores" políticas serão substituído por políticas com IDs que estão nos primeiros lugares da lista.
As prioridades de grupos são maiores do que as de unidades organizacionais.
Nesta solicitação, estamos retornando a ordem de prioridade para o "exampleapp" Chrome User.
Solicitação
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"
Resposta
{
"policyTargetKey": {
"additionalTargetKeys": {
"app_id": "chrome:exampleapp"
}
},
"policyNamespace": "chrome.users.apps",
"groupIds": [
"03ep43zb2k1nodu",
"01t3h5sf2k52kol",
"03q5sasy2ihwnlz"
]
}
Atualizar a ordem de prioridade de um grupo
O updateGroupPriorityOrdering
permite que você atualize a ordem de prioridade dos Grupos de um aplicativo.
A ordem dos IDs de grupo na solicitação indica a prioridade na qual as configurações dele serão aplicadas ao app. IDs posteriores" políticas serão substituído por políticas com IDs que estão nos primeiros lugares da lista. A solicitação deve inclua todos os IDs de grupo aplicados ao app no momento.
As prioridades de grupos são maiores do que as de unidades organizacionais.
Nesta solicitação, definimos a ordem de prioridade para o "exampleapp" Chrome User.
Solicitação
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"
Resposta
Uma resposta bem-sucedida está vazia.
{}
Lidar com políticas que exigem confirmação
Alguns esquemas de política especificam "avisos" com certos valores de um campo específico. que exigem confirmação.
Exemplo da 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"
}
No exemplo acima, definir o valor do campo pluginVmAllowed
como true
é
associado a um aviso que tenha acknowledgementRequired
. Para adequadamente
defina o valor desse campo como true
, será necessário enviar uma solicitação que especifique
o campo de confirmação ackNoticeForPluginVmAllowedSetToTrue
para true
;
Caso contrário, você receberá um erro na solicitação.
Nesse exemplo, você precisaria enviar a seguinte solicitação de modificação em lote:
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"
Como definir políticas de arquivos
Algumas políticas têm campos digitados como UploadedFile
. Você precisará fazer o upload do
arquivo que você quer definir como o valor dessas políticas para o servidor da API, para
para conseguir um URL e usá-lo em solicitações BatchModify
.
Neste exemplo, definiremos chrome.users.Wallpaper
fazendo upload de um
JPEG.
Fazer upload do arquivo
Solicitação
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"
Resposta
Uma resposta bem-sucedida deve conter o URL para acessar o arquivo:
{
"downloadUri": "https://storage.googleapis.com/chromeos-mgmt/0gjdgxs370bkl6/ChromeOsWallpaper/32ac50ab-b5ae-4bba-afa8-b6b443912897"
}
Definir a política de arquivos
Solicitação
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"
Resposta
Uma resposta bem-sucedida deve estar vazia.
{}