导出中的访问规则
Postgres 导出包含行级安全策略,用来重现你的每个用户可以读取哪些行。你需要自行应用它们,并且它们只涵盖读取。
应用它们
数据加载完成后,你用 psql 运行该文件。通过导出命令应用导出包并不会运行它。此后,约定只有一个会话设置,request.jwt.claims,它携带用户的 id。没有设置 claims 时,调用方是匿名的,只能看到公开的行。请以 authenticated 角色进行测试:恢复这些表的角色拥有它们,而表的所有者会绕过行级安全。
哪些不会迁移
字段级权限、API 作用域和写入规则不会带走。能在恢复后的数据库中看到某一行的用户,会看到该行的所有列,因此隐藏字段就成了你的应用、列授权或视图的工作。这些策略只给匿名和已登录的调用方读取权限,你的团队在控制台中的访问权限不会导出。
测试了什么
我们的测试套件会导出一个已填充数据的项目,将其恢复到第二个数据库中,应用这些策略,并要求同一用户在两边得到相同的行 id。这测试的是转换,没有任何检查针对你自己恢复后的数据库上的策略。我们不声称恢复后的规则一致,对此不作保证的情形是项目使用组织。
阅读详情
导出指南中的访问规则一节展示了如何应用这些策略、设置用户的 claims,以及用正确的角色进行测试。