# PreST
## 产品介绍
PreST 将 PostgreSQL 数据库映射为 REST API。本应用使用 1Panel 已管理的 PostgreSQL 服务,不会启动内置数据库。
## 主要功能
- 将 PostgreSQL schema 和 table 映射为 REST 读写接口。
- 提供数据库、schema 和 table 浏览接口及内置 Studio。
- 支持由 PostgreSQL 账户权限约束的数据访问边界。
## 安全默认值
- 除 `/_health` 和 `/_ready` 外,所有 HTTP 路径默认要求有效的 Bearer JWT。
- 安装脚本生成 32 字节随机 JWT 签名密钥,并以 `0600` 权限保存 `.env`。
- OpenTelemetry、插件构建、调试模式、缓存和目录暴露默认关闭。
- 容器以 UID/GID `65532`、只读根文件系统和无 Linux capabilities 运行。
## 访问说明
生成一枚默认有效期为一小时的访问令牌:
```bash
./scripts/token.sh
```
指定有效期秒数(允许范围 60 到 86400):
```bash
./scripts/token.sh 3600
```
请求示例:
```bash
TOKEN="$(./scripts/token.sh)"
curl -H "Authorization: Bearer ${TOKEN}" http://127.0.0.1:3000/databases
```
外部访问应通过 1Panel 网站反向代理启用 HTTPS。JWT 不是传输加密,不应通过明文公网 HTTP 发送。
## Introduction
PreST maps PostgreSQL databases to a REST API. This package connects to a PostgreSQL service managed by 1Panel and does not start an embedded database.
## Features
- REST read and write endpoints for PostgreSQL schemas and tables.
- Database catalog endpoints and the embedded PreST Studio.
- Global JWT authentication enabled by default for all non-health routes.
Run `./scripts/token.sh` in the installed version directory to generate a short-lived Bearer token. Use HTTPS through a 1Panel reverse proxy before exposing the API outside a trusted network.
## PostgreSQL 权限边界
PreST 使用表单选择的数据库账户执行查询。该账户能访问的数据库对象就是 API 的最大权限边界。不要选择 PostgreSQL 超级用户;应为 PreST 创建专用的最小权限账户,并只授予所需 schema、table 和 operation 权限。备份和数据库账户生命周期由所选 1Panel PostgreSQL 服务负责。
## 版本说明
固定版本 `2.4.1` 保留已审查的官方 `v2.4.1` 镜像摘要;`latest` 目录使用同一版本标签但不固定 digest,以便接收该标签的上游重建。上游 Docker Hub 的浮动 `latest` 在审查时仍包含旧版 PreST,因此本包没有改用该标签。
官方镜像目前仅发布 `linux/amd64`。OpenTelemetry 保持关闭;启用它会引入未包含在本应用验证范围内的外部 OTLP/gRPC 网络路径。
## 参考资料
- 官网:
- 文档:
- 源码:
- 许可证:MIT