Muestras de código para políticas de red

En las siguientes solicitudes, se ilustra la administración de políticas con la API de Policy mediante políticas de red como ejemplo. Antes de comenzar, asegúrate de revisar la Descripción general de la API de Chrome Policy y la guía de esquemas de políticas.

Todas las solicitudes que se presentan a continuación usan las siguientes variables:

  • $TOKEN: Token de OAuth 2
  • $CUSTOMER: ID del cliente o literal my_customer
  • $ORG_UNIT: ID de la unidad organizativa de destino
  • $NETWORK_ID: Es el identificador único del objeto con el que deseas interactuar.

Servicio de redes de políticas

El servicio de redes de políticas es una API que ayuda a la API de políticas de Chrome a administrar la configuración de red.

La API consta de cuatro extremos:

Definir red

El extremo Define la red se usa para crear una red nueva. Este extremo se usa para redes Wi-Fi, Ethernet y VPN.

En este ejemplo, definimos una red Wi-Fi simple. Para definir una red más compleja, examina qué campos están disponibles en el espacio de nombres chrome.networks.wifi.

El policy_schema de los detalles debe estar presente para todos los 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"   

Una respuesta correcta contendrá la red creada, incluido el networkId que hace referencia a ella.

{
  "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
      }
    }
  ]
}

Quitar red

El extremo Quitar red se usa para borrar una red. Este extremo se usa para redes Wi-Fi, Ethernet y VPN.

En este ejemplo, quitamos una red 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"

Una respuesta correcta está vacía.

{}

Definir certificado

El extremo Definir certificado se usa para crear un certificado nuevo.

En este ejemplo, definimos un certificado y permitimos que los dispositivos Chrome lo usen.

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"

Una respuesta correcta contendrá una referencia al certificado creado (networkId).

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

Quitar certificado

El extremo Quitar certificado se usa para quitar una definición de certificado.

En este ejemplo, quitamos un 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"

Una respuesta correcta está vacía.

{}

Cómo interactuar con tus redes guardadas

Si quieres interactuar con un certificado o una red, usa la API de Policy. Las solicitudes deben incluir una clave de destino adicional que represente el recurso con el que deseas interactuar.

La omisión de una clave de destino adicional solo es aceptable en una solicitud de resolución. Esto hará que se muestren todas las redes que coincidan con el espacio de nombres solicitado.

Los esquemas de red completos se pueden obtener a través del servicio de esquemas mediante filtros.
Para ver todos los parámetros de configuración de la VPN, prueba lo siguiente:

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

A continuación, se muestra un ejemplo de cómo agregar Imprivata como autoridad 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 es un ejemplo de cómo cambiar una contraseña de red.

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"