Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何保护postgres中的数据库对象_Postgresql_Security_Google Cloud Sql - Fatal编程技术网

Postgresql 如何保护postgres中的数据库对象

Postgresql 如何保护postgres中的数据库对象,postgresql,security,google-cloud-sql,Postgresql,Security,Google Cloud Sql,我是postgresql新手,想知道什么是保护数据库中对象的好模式 在我职业生涯的大部分时间里,我一直在使用MSFT SQL server,我喜欢他们采取的保护数据库和对象的方法。我在postgresql中缺少的一些东西是实例和数据库级别的预定义角色,例如db_reader和db_writer 如何处理新对象的安全性 您是否限制了人们在数据库中创建新对象的能力(当然是,但我对一种方法或模式感兴趣),以及您是如何做到这一点的(手动使用CICD、基于事件的触发器) 目前,我正在使用一系列基于事件

我是postgresql新手,想知道什么是保护数据库中对象的好模式

在我职业生涯的大部分时间里,我一直在使用MSFT SQL server,我喜欢他们采取的保护数据库和对象的方法。我在postgresql中缺少的一些东西是实例和数据库级别的预定义角色,例如db_reader和db_writer

如何处理新对象的安全性

  • 您是否限制了人们在数据库中创建新对象的能力(当然是,但我对一种方法或模式感兴趣),以及您是如何做到这一点的(手动使用CICD、基于事件的触发器)
目前,我正在使用一系列基于事件的触发器和角色来管理新对象的创建。虽然我不喜欢它,而且觉得它过于复杂,但我使用的标准如下。我还想避免其他人(非管理员)不得不“升级他们的安全上下文”,并希望使用默认权限来做到这一点。不幸的是,这对我不起作用,我认为这是使用托管解决方案的结果,并且没有真正的超级用户角色

概述

3个默认角色

  • db_reader,对用户定义数据库的只读访问
  • db_writer,对用户定义数据库的读写访问
  • db_admin,对用户定义数据库的完全数据库访问
每个角色都继承其“父角色”的特权

  • db_writer继承db_reader的所有权限
  • db_admin继承db_writer的所有特权
基于角色的权限

读卡器角色(db_读卡器)

  • 连接所有用户定义的数据库
  • 在所有用户定义的架构上使用
  • 选择所有用户定义的表、视图和序列
编写器角色(db_编写器)

  • 与db_读取器关联的所有权限
  • 在所有用户定义的表和序列上插入、更新、删除
管理员角色(数据库管理员)

  • 与db_writer关联的所有权限
  • 在所有用户定义的数据库上创建
  • 截断所有用户定义的表
两种类型的角色

  • 组角色(用户和权限)
  • 用户角色(通常为个人或应用程序名称)
  • 权限通过授予和撤销分配给组角色
  • 用户角色从关联的组角色继承权限并具有登录权限