Exemples de code pour les règles de réseau

Les requêtes ci-dessous illustrent la gestion des règles avec l'API Policy à l'aide des règles de réseau à titre d'exemple. Avant de commencer, veillez à consulter la présentation de l'API Chrome Policy et le guide sur les schémas de règles.

Toutes les requêtes présentées ci-dessous utilisent les variables suivantes:

  • $TOKEN : jeton OAuth 2
  • $CUSTOMER : ID du client ou littéral my_customer
  • $ORG_UNIT : identifiant de l'unité organisationnelle cible
  • $NETWORK_ID : identifiant unique de l'objet avec lequel vous souhaitez interagir

Service Policy Networks

Le service Policy Networks est une API qui aide l'API Chrome Policy à gérer les paramètres réseau.

L'API comprend quatre points de terminaison:

Définir le réseau

Le point de terminaison "Définir le réseau" permet de créer un réseau. Ce point de terminaison est utilisé pour les réseaux Wi-Fi, Ethernet et VPN.

Dans cet exemple, nous définissons un réseau Wi-Fi simple. Pour définir un réseau plus complexe, examinez les champs disponibles dans l'espace de noms chrome.networks.wifi.

Les détails policy_schema doivent être présents pour tous les types de réseaux.

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"   

Une réponse réussie contient le réseau créé, y compris l'ID de réseau qui le référence.

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

Supprimer le réseau

Le point de terminaison "Supprimer le réseau" permet de supprimer un réseau. Ce point de terminaison est utilisé pour les réseaux Wi-Fi, Ethernet et VPN.

Dans cet exemple, nous supprimons un réseau 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"

Une réponse réussie est vide.

{}

Définir un certificat

Le point de terminaison "Définir un certificat" permet de créer un certificat.

Dans cet exemple, nous définissons un certificat et autorisons les appareils Chrome à l'utiliser.

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"

Si la réponse aboutit, elle contient une référence au certificat créé (networkId).

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

Supprimer le certificat

Le point de terminaison Supprimer le certificat permet de supprimer une définition de certificat.

Dans cet exemple, nous supprimons un certificat.

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"

Une réponse réussie est vide.

{}

Interaction avec vos réseaux enregistrés

Pour interagir avec un certificat ou un réseau, utilisez Policy API. Les requêtes doivent inclure une clé cible supplémentaire, qui représente la ressource avec laquelle vous souhaitez interagir.

L'omission d'une clé cible supplémentaire n'est acceptable que dans une requête de résolution. Tous les réseaux correspondant à l'espace de noms demandé seront alors renvoyés.

Vous pouvez obtenir des schémas réseau complets via le service de schémas à l'aide de filtres.
Pour afficher tous les paramètres VPN, procédez comme suit:

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

Voici un exemple d'ajout d'Imprivata en tant qu'autorité de certification.

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"

Voici un exemple de modification du mot de passe d'un réseau.

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"