Capacidades e segurança

Nesta página

Plugins sandboxed são isolados por padrão. Para fazer algo além de ler e escrever seu próprio KV e armazenamento, um plugin precisa declarar uma capacidade em seu manifesto.

Declarar capacidades

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

Referência de capacidades

CapacidadeConcede acesso a
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() — restrito a allowedHosts
network:request:unrestrictedctx.http.fetch() sem restrição de host
users:readctx.users.get(), ctx.users.getByEmail(), ctx.users.list()
email:sendctx.email.send()

O que o sandbox impõe

  1. Controle de capacidades.
  2. Escopo de storage e KV.
  3. Isolamento de rede.
  4. Sem bindings do host.
  5. Limites de recursos.

O que o sandbox não impõe

  • Comportamento dentro de uma capacidade concedida.
  • Confiança do operador em Node.js.
  • Canais laterais.

Consentimento de capacidades

Na instalação, EmDash exibe um diálogo de consentimento.

Validação em tempo de build

Veja Bundling e publicação.