Manifest per l'archiviazione gestita

A differenza delle aree di archiviazione local e sync, l'area di archiviazione managed deve avere una struttura dichiarato come schema JSON ed è rigorosamente convalidato da Chrome. Questo schema deve essere archiviato in indicato dalla proprietà "managed_schema" della chiave manifest "storage" e dichiara ai criteri aziendali supportati dall'estensione.

I criteri sono analoghi alle opzioni, ma configurate da un amministratore di sistema per le estensioni installate tramite criteri, consentendo la preconfigurazione dell'estensione per tutti gli utenti di un'organizzazione. Per alcuni esempi, scopri in che modo Chrome gestisce i criteri direttamente da Chrome.

Una volta dichiarati, i criteri potranno essere letti dall'API storage.managed. Tocca al per applicare i criteri configurati dall'amministratore.

File manifest.json di esempio

La proprietà storage.managed_schema indica un file all'interno dell'estensione che contiene il criterio .

{
  "name": "My enterprise extension",
  "storage": {
    "managed_schema": "schema.json"
  },
  ...
}

Chrome caricherà quindi questi criteri dal sistema operativo sottostante e da Google Apps per utenti che hanno eseguito l'accesso. L'evento storage.onChanged viene attivato ogni volta che viene rilevata una modifica alle norme. Puoi verificare i criteri caricati da Chrome all'indirizzo chrome://policy.

Formato schema

Il formato dello schema JSON richiede alcuni requisiti aggiuntivi di Chrome:

  • Lo schema di primo livello deve avere il tipo object.
  • L'elemento object di primo livello non può avere additionalProperties. I valori properties dichiarati sono criteri per questa estensione.
  • Ogni schema deve avere un valore $ref o esattamente un type.

Se lo schema non è valido, Chrome non caricherà l'estensione e indicherà il motivo per cui schema non convalidato. Se il valore di un criterio non è conforme allo schema, non sarà pubblicato dall'API storage.managed.

Schema di esempio

{
  "type": "object",

  // "properties" maps an optional key of this object to its schema. At the
  // top-level object, these keys are the policy names supported.
  "properties": {

    // The policy name "AutoSave" is mapped to its schema, which in this case
    // declares it as a simple boolean value.
    // "title" and "description" are optional and are used to show a
    // user-friendly name and documentation to the administrator.
    "AutoSave": {
      "title": "Automatically save changes.",
      "description": "If set to true then changes will be automatically saved.",
      "type": "boolean"
    },

    // Other simple types supported include "integer", "string" and "number".
    "PollRefreshRate": {
      "type": "integer"
    },

    "DefaultServiceUrl": {
      "type": "string"
    },

    // "array" is a list of items that conform to another schema, described
    // in "items". An example to this schema is [ "one", "two" ].
    "ServiceUrls": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },

    // A more complex example that describes a list of bookmarks. Each bookmark
    // has a "title", and can have a "url" or a list of "children" bookmarks.
    // The "id" attribute is used to name a schema, and other schemas can reuse
    // it using the "$ref" attribute.
    "Bookmarks": {
      "type": "array",
      "id": "ListOfBookmarks",
      "items": {
        "type": "object",
        "properties": {
          "title": { "type": "string" },
          "url": { "type": "string" },
          "children": { "$ref": "ListOfBookmarks" }
        }
      }
    },

    // An "object" can have known properties listed as "properties", and can
    // optionally have "additionalProperties" indicating a schema to apply to
    // keys that aren't found in "properties".
    // This example policy could map a URL to its settings. An example value:
    // {
    //   "youtube.com": {
    //     "blocklisted": true
    //   },
    //   "google.com": {
    //     "bypass_proxy": true
    //   }
    // }
    "SettingsForUrls": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "properties": {
          "blocklisted": { "type": "boolean" },
          "bypass_proxy": { "type": "boolean" }
        }
      }
    }
  }
}