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, leia a Visão geral da API Chrome Policy e o Guia de esquemas de política.

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

  • $TOKEN: token OAuth 2
  • $CUSTOMER: ID do cliente ou literal my_customer
  • $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 Policy Networks é uma API que auxilia a API Chrome Policy no gerenciamento das configurações de rede.

A API tem 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 uma rede mais complexa, examine quais campos estão disponíveis no namespace chrome.networks.wifi.

Os detalhes policy_schema precisam estar presentes em todos os tipos de rede.

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 terá 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 os 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 vai 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.

{}

Como interagir com suas redes salvas

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

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

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

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

Confira um exemplo da adição do 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"

Veja 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"