Codebeispiele für Netzwerkrichtlinien

Die folgenden Anfragen veranschaulichen die Richtlinienverwaltung mit der Policy API mithilfe von Netzwerkrichtlinien als Beispiel. Bevor Sie beginnen, sollten Sie sich die Übersicht über die Chrome Policy API und die Leitfaden zu Richtlinienschemas

Für alle unten aufgeführten Anfragen werden die folgenden Variablen verwendet:

  • $TOKEN – OAuth 2-Token
  • $CUSTOMER – ID des Kunden oder Literal-my_customer
  • $ORG_UNIT – ID der Zielorganisationseinheit
  • $NETWORK_ID – Eindeutige Kennung des Objekts, mit dem Sie interagieren möchten

Policy Networks-Dienst

Der Policy Networks Service ist eine API zur Unterstützung der Chrome Policy API in die Netzwerkeinstellungen verwalten.

Die API besteht aus vier Endpunkten:

Netzwerk definieren

Der Endpunkt „Netzwerkendpunkt definieren“ wird verwendet, um ein neues Netzwerk zu erstellen. Dieser Endpunkt wird für WLAN-, Ethernet- und VPN-Netzwerke verwendet.

In diesem Beispiel definieren wir ein einfaches WLAN. Um eine komplexere Netzwerk überprüfen, welche Felder im Namespace „chrome.networks.wifi“ verfügbar sind.

Die Details policy_schema müssen für alle Netzwerktypen vorhanden sein.

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"   

Eine erfolgreiche Antwort enthält das erstellte Netzwerk einschließlich der Netzwerk-ID, die darauf verweist.

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

Netzwerk entfernen

Der Endpunkt „Netzwerk entfernen“ wird zum Löschen eines Netzwerks verwendet. Dieser Endpunkt wird für WLAN-, Ethernet- und VPN-Netzwerke verwendet.

In diesem Beispiel entfernen wir ein WLAN.

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"

Eine erfolgreiche Antwort ist leer.

{}

Zertifikat definieren

Der Endpunkt „Zertifikat definieren“ wird zum Erstellen eines neuen Zertifikats verwendet.

In diesem Beispiel definieren wir ein Zertifikat und erlauben Chrome-Geräten, es zu verwenden.

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"

Eine erfolgreiche Antwort enthält einen Verweis auf das erstellte Zertifikat (networkId).

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

Zertifikat entfernen

Der Endpunkt „Zertifikat entfernen“ wird zum Entfernen einer Zertifikatsdefinition verwendet.

In diesem Beispiel entfernen wir ein Zertifikat.

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"

Eine erfolgreiche Antwort ist leer.

{}

Mit gespeicherten Netzwerken interagieren

Verwenden Sie die Policy API, um mit einem Zertifikat oder Netzwerk zu interagieren. Anfragen müssen einen zusätzlichen Zielschlüssel enthalten, der die Ressource darstellt, die Sie mit denen Sie interagieren möchten.

Das Auslassen eines zusätzlichen Zielschlüssels ist nur bei einer Auflösungsanfrage akzeptabel. Dieses führt dazu, dass alle Netzwerke zurückgegeben werden, die mit dem angeforderten Namespace übereinstimmen.

Vollständige Netzwerkschemas können über den Schemadienst mithilfe von Filtern abgerufen werden.
Versuchen Sie Folgendes, um alle VPN-Einstellungen zu sehen:

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

Hier ist ein Beispiel für das Hinzufügen von Imprivata als Zertifizierungsstelle.

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"

Hier ist ein Beispiel für das Ändern eines Netzwerkpassworts.

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"