我有一个连接到AWS PostgreSQL数据库的现有API,使用AWS Cognito进行用户身份验证。
目标是让用户通过API插入数据,并将一些字段Map到他们的Cognito id,然后检索相同的数据。这个想法是每个用户只能访问他们"拥有"的数据。类似于行级别访问的工作方式。
但我不想为每个用户创建一个角色,这似乎是必要的。
我的想法是,我需要以某种方式使用user_id建立到PostgreSQL DB的连接,而不创建用户,并通过策略处理可访问的数据,或者以某种方式将数据直接传递给策略。
什么是实现此目的的理想方法,或者为每个用户创建一个PG用户是否是此设置的必要条件?
先谢了
编辑:我目前正在使用自定义代码通过我的后端查询数据库。但我宁愿有一个系统,而不是自己编写代码,PostgreSQL系统使用策略处理自身的安全性我完全理解PostgreSQL行级访问是如何与角色和策略一起工作的,我更喜欢一个PostgreSQL完成主要工作而不需要我实现自定义返回的系统。结束逻辑,并且优选地不为用户创建数千个PostgreSQL角色。
1条答案
按热度按时间mzsu5hc01#
不应允许用户直接连接到数据库。
相反,他们应该向您的后端发出请求,您的后端有业务逻辑来确定每个用户被允许访问的内容,然后您的后端对数据库进行适当的调用,并将响应返回给用户。
这是一个“更安全”的响应,因为它防止用户直接访问您的数据库,而且它也是一个更好的体系结构,因为它允许您在不影响服务的情况下将数据库引擎替换为另一个。
数据库是为您的应用程序而不是为您的用户提供的。