Skip to content

feat(db): complete PostgreSQL RLS rollout by access family #601

Description

@tiankaima

目标

按数据访问场景完成 PostgreSQL RLS:普通用户只能访问有权限的数据,公开内容保持可读;应用运行、登录、导入和 migration 各用最小权限的数据库身份。

当前进度

  • 生产 Hyperdrive 已改用不具备 BYPASSRLS 的运行角色;用户身份在短事务内设置,不跨请求缓存。
  • Todo、个人偏好、Upload、HomeworkCompletion、CommentReaction、UserSectionSubscription、UserUstcIdentity、Comment 等表已有 RLS 规则和隔离测试。
  • 数据库权限、角色及规则有自动化检查,跨用户访问、伪造 owner 和连接复用已有针对性测试。

剩余工作

  • 补齐目录与导入数据、Description/Homework 等协作内容的访问规则,明确匿名用户、普通用户、受限用户和管理员分别能读写什么。
  • 为每张业务表明确负责访问的数据库角色,检查 Better Auth、应用运行、导入和 migration 的权限边界。
  • 核对生产环境实际绑定的角色与预期一致。

验收

  • 每张业务表都有明确的访问场景和负责角色;未授权访问默认拒绝。
  • 跨用户访问、伪造 owner、级联操作和连接复用的测试通过。
  • 公开读取与协作内容正常工作,且不会扩大 Better Auth 的数据库权限。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: dataPrisma, migrations, seed/import pipelines, transactions, and persistence invariantsarea: infrastructureProduction runtime, Cloudflare, storage, containers, deployment, and releaseskind: docsKind: docsreleasedtaskDevelopment task tracking issue (org board)

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions