Amostras de código para políticas de rede

As solicitações abaixo ilustram o gerenciamento de políticas com a API Policy usando políticas de rede como exemplo. Antes de começar, revise Visão geral da API Chrome Policy e os Guia de esquemas de políticas.

Todas as solicitações apresentadas abaixo usam as seguintes variáveis:

  • $TOKEN: token OAuth 2
  • $CUSTOMER: ID do cliente ou my_customer literal
  • $ORG_UNIT: ID da unidade organizacional de destino
  • $NETWORK_ID: identificador exclusivo do objeto com que você quer interagir

Serviço de redes de política

O serviço de redes de política é uma API para auxiliar a API Chrome Policy a gerenciar configurações de rede.

A API consiste em quatro endpoints:

Definir rede

O endpoint "Definir rede" é usado para criar uma rede. Esse endpoint é usado para redes Wi-Fi, Ethernet e VPN.

Neste exemplo, definimos uma rede Wi-Fi simples. Para definir um conjunto de dados rede, examine quais campos estão disponíveis no namespace chrome.networks.wifi.

O policy_schema de detalhes precisa estar presente em todos os tipos de redes.

curl -H "Content-Type: application/json" -H "Authorization:Bearer $TOKEN"   -d "{target_resource: 'orgunits/$ORG_UNIT', \
    name: 'Network Name', \
    settings: [
      {policy_schema: 'chrome.networks.wifi.AllowForChromeUsers', value: {'allowForChromeUsers': true}}, \
      {policy_schema: 'chrome.networks.wifi.Details',value: {'details': {'security': 'None', 'ssid': 'ssid'}}}
    ]}" \
    "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/networks:defineNetwork"   

Uma resposta bem-sucedida conterá a rede criada, incluindo o networkId que a referencia.

{
  "networkId": "Network Name-Wifi",
  "targetResource": "orgunits/$ORG_UNIT",
  "settings": [
    {
      "policySchema": "chrome.networks.wifi.Details",
      "value": {
        "details": {
          "ssid": "ssid",
          "security": "None",
          "proxySettings": {
            "type": "Direct"
          },
          "allowIpConfiguration": false,
          "allowNameServersConfiguration": false,
          "nameServerSelection": "NAME_SERVERS_ENUM_AUTOMATIC"
        }
      }
    },
    {
      "policySchema": "chrome.networks.wifi.AllowForChromeDevices",
      "value": {
        "allowForChromeDevices": false
      }
    },
    {
      "policySchema": "chrome.networks.wifi.AllowForChromeUsers",
      "value": {
        "allowForChromeUsers": true
      }
    }
  ]
}

Remover rede

O endpoint "Remover rede" é usado para excluir uma rede. Esse endpoint é usado para redes Wi-Fi, Ethernet e VPN.

Neste exemplo, removemos uma rede Wi-Fi.

curl -H "Content-Type: application/json" -H "Authorization:Bearer $TOKEN" -d "{target_resource: 'orgunits/$ORG_UNIT', network_id: '$NETWORK_ID'}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/networks:removeNetwork"

Uma resposta bem-sucedida está vazia.

{}

Definir certificado

O endpoint "Definir certificado" é usado para criar um novo certificado.

Neste exemplo, definimos um certificado e permitimos que dispositivos Chrome o usem.

curl -H "Content-Type: application/json" -H "Authorization:Bearer $TOKEN" -d " \
{
  target_resource: 'orgunits/$ORG_UNIT', 
  certificate: 'raw string representation of a .pem or .crt certificate file.', 
  settings: [{
      policy_schema: 'chrome.networks.certificates.AllowForChromeDevices', 
      value: {'allowForChromeDevices': true} 
  }]
}" "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/networks:defineCertificate"

Uma resposta bem-sucedida conterá uma referência ao certificado criado (networkId).

{
  "networkId": "{c045f8df-79f1-49d3-92b9-0e61516e6a6b}",
  "targetResource": "orgunits/$ORG_UNIT"
}

Remover certificado

O endpoint "Remover certificado" é usado para remover uma definição de certificado.

Neste exemplo, removemos um certificado.

curl -H "Content-Type: application/json" -H "Authorization:Bearer $TOKEN" -d "{target_resource: 'orgunits/$ORG_UNIT', network_id: '$NETWORK_ID'}" \
"https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/networks:removeCertificate"

Uma resposta bem-sucedida está vazia.

{}

Interagindo com suas redes salvas

Para interagir com um certificado ou uma rede, use a API Policy. As solicitações devem incluir uma chave de destino adicional, representando o recurso que você querem interagir.

A omissão de uma chave de destino adicional só é aceitável em uma solicitação de resolução. Isso fará com que todas as redes correspondentes ao namespace solicitado sejam retornadas.

Os esquemas de rede completos podem ser obtidos por meio do serviço de esquema usando filtros.
Para acessar todas as configurações de VPN, tente o seguinte:

curl -H "Authorization:Bearer $TOKEN" \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policySchemas?filter=chrome.networks.vpn"

Este é um exemplo de como adicionar o Imprivata como uma autoridade certificadora.

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/$ORG_UNIT",
                        additionalTargetKeys: {"network_id": "$NETWORK_ID"}
                        },
                policyValue: {
                        policySchema: "chrome.networks.certificates.AllowForChromeImprivata",
                        value: {allowForChromeImprivata: true}
                        },
                updateMask: {paths: "allowForChromeImprivata"}
       }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"

Este é um exemplo de alteração da senha de uma rede.

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
        requests: [{
                policyTargetKey: {
                        targetResource: "orgunits/$ORG_UNIT",
                        additionalTargetKeys: {"network_id": "$NETWORK_ID"}
                        },
                policyValue: {
                        policySchema: "chrome.networks.wifi.Details",
                        value: {details: {
                                  ssid: 'ssid',
                                  security: 'WEP-PSK'
                                  passphrase: 'Your passphrase.'
                               }
                        }
                },
                updateMask: {paths: "details"}
        }]
      }' \
  "https://chromepolicy.googleapis.com/v1/customers/$CUSTOMER/policies/orgunits:batchModify"