Hasty Briefsbeta

双语

Using JWT to establish a trusted context for Row Level Security

9 months ago
  • #Row-Level Security
  • #JWT
  • #PostgreSQL
  • 行级安全(RLS)是通过应用策略定义的过滤器来限制行访问的功能
  • RLS需要可信上下文环境,这是一组RLS策略可以查询用于行过滤的键值对
  • 传统的RLS上下文解决方案依赖角色机制,虽然通过认证获得信任但使连接池和管理复杂化
  • 基于密码学的上下文方案(如使用JWT数字签名)可以独立于认证建立信任关系
  • JWT(JSON Web Token)是推荐的签名上下文标准,具有JSON序列化和算法支持等优势
  • 实验性扩展'jwt_context'实现了该方案,允许RLS策略使用JWT签名的上下文
  • 基础架构包含应用生成令牌、数据库验证和RLS策略应用三个环节
  • 高级架构可能涉及独立的上下文生成系统和连接池优化方案
  • 签名验证密钥通过GUC参数配置(jwt.secret用于HMAC算法,jwt.pubkey用于RSA/ECDSA算法),需注意安全性
  • 现有方案的弱点包括超级用户访问风险、自定义C代码漏洞和令牌泄露问题
  • 未来改进方向包括协议层支持以简化连接池集成