沙盒插件默认是隔离的。要执行超出读写自身 KV 和存储的操作,插件必须在清单中声明能力。
声明能力
{
"slug": "plugin-hello",
"capabilities": ["content:read", "network:request"],
"allowedHosts": ["api.example.com"]
}
能力参考
| 能力 | 授予访问权限 |
|---|---|
content:read | ctx.content.get()、ctx.content.list() |
content:write | ctx.content.create()、ctx.content.update()、ctx.content.delete() |
taxonomies:read | ctx.taxonomies.getAll()、ctx.taxonomies.getTerms() |
media:read | ctx.media.get()、ctx.media.list() |
media:write | ctx.media.getUploadUrl()、ctx.media.upload()、ctx.media.delete() |
network:request | ctx.http.fetch() — 限制为 allowedHosts |
network:request:unrestricted | ctx.http.fetch() 无主机限制 |
users:read | ctx.users.get()、ctx.users.getByEmail()、ctx.users.list() |
email:send | ctx.email.send() |
沙盒强制执行的内容
- 能力门控。
- 存储和 KV 作用域。
- 网络隔离。
- 无宿主绑定。
- 资源限制。
沙盒不强制执行的内容
- 授予能力内的行为。
- Node.js 上的运营商信任。
- 侧信道。
能力同意
安装时 EmDash 会显示同意对话框。
构建时验证
参见打包和发布。