Capacités et sécurité

Sur cette page

Les plugins sandboxés sont isolés par défaut. Pour faire quoi que ce soit au-delà de la lecture et l’écriture de leur propre KV et stockage, un plugin doit déclarer une capacité dans son manifeste.

Déclarer des capacités

{
	"slug": "plugin-hello",
	"capabilities": ["content:read", "network:request"],
	"allowedHosts": ["api.example.com"]
}

Référence des capacités

CapacitéAccorde l’accès à
content:readctx.content.get(), ctx.content.list()
content:writectx.content.create(), ctx.content.update(), ctx.content.delete()
taxonomies:readctx.taxonomies.getAll(), ctx.taxonomies.getTerms()
media:readctx.media.get(), ctx.media.list()
media:writectx.media.getUploadUrl(), ctx.media.upload(), ctx.media.delete()
network:requestctx.http.fetch() — restreint à allowedHosts
network:request:unrestrictedctx.http.fetch() sans restriction d’hôte
users:readctx.users.get(), ctx.users.getByEmail(), ctx.users.list()
email:sendctx.email.send()

Ce que le sandbox impose

  1. Contrôle des capacités.
  2. Portée du stockage et KV.
  3. Isolation réseau.
  4. Pas de bindings hôte.
  5. Limites de ressources.

Ce que le sandbox n’impose pas

  • Comportement au sein d’une capacité accordée.
  • Confiance de l’opérateur sur Node.js.
  • Canaux latéraux.

Consentement des capacités

Lors de l’installation, EmDash affiche un dialogue de consentement.

Validation au moment du build

Voir Bundling et publication.