热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle最佳替代者PostgreSQL数据库的整体安全性

报纸上经常出现黑客袭击企业数据库的报道。大多数攻击由叛逆的未成年人发起的日子已经一去不复返。如今,数据收集成为了一项

报纸上经常出现黑客袭击企业数据库的报道。大多数攻击由叛逆的未成年人发起的日子已经一去不复返。如今,数据收集成为了一项

  数据库安全性是如今基于 Web 的应用程序面对的最大挑战。如果不加以控制,您将面临公司敏感信息被曝光的风险,更糟糕的是,珍贵的客户信息也将面临被泄露的风险。在本文中,了解可以用来保护您的 PostgreSQL 数据库的安全措施。

  简介

  报纸上经常出现黑客袭击企业数据库的报道。大多数攻击由叛逆的未成年人发起的日子已经一去不复返。如今,数据收集成为了一项重要的事业,并且由在企业基础设施中工作的专家专门负责。问题已经不再是您如何 阻止未授权的访问企图 — 您无法阻止 — 而在于您在发生这种情况时如何降低 影响。

  本文讨论了在保护您的 PostgreSQL(也称为 Postgres)数据库服务器时遇到的挑战。PostgreSQL 是一款强大的开源对象-关系数据库系统。它拥有一个可靠的架构并以可靠性、数据完整性和准确性著称。它运行在所有主流操作系统之上,包括 Linux?、UNIX? 和 Windows?。它与 ACID 完全兼容,并且充分支持外键、连接、视图、触发器和存储过程(支持多种语言)。

  理想的管理员

  在传统的 UNIX 中,PostgreSQL 被进行了重新设计来补充它所依附的操作系统。要最大限度地发掘 PostgreSQL 的价值,所需要的知识超过了一般数据库管理员(DBA)所要求具备的技能。

  简单来说,一名合格的 PostgreSQL DBA 需要具备以下背景:

  ?了解关系理论并熟悉 SQL'92, '99, 和 2003。

?知道如何阅读源代码,特别是 C 代码,并且能够在 Linux 上编译源代码。

?能够管理系统并熟悉 system-V UNIX 或 Linux。

?能够维护(如果需要的话)IT 组织中出现的各种典型硬件项目。理解 TCP OS 层,能够将网络分为子网,调优防火墙,等等。

许 多 DBA 只具备管理、监控和调优数据库本身的技能。然而,PostgreSQL 在构建时也考虑了 OS 工具。当然,很少有 DBA 精通所有学科的知识,但是拥有这些知识使 PostgreSQL DBA 能够用更少的时间完成更多的工作,而通过其他方式是无法办到的。

  访问权限回顾

  如果您要了解可能的攻击媒介(attack vector),那么了解数据库角色的作用是非常重要的。首先,您需要通过授予和撤销权限来控制对数据的访问。

  角色、授予权限和特权

  一个具有默认权限和特权的普通角色的安全性究竟如何?用户帐户可以通过以下命令的其中之一创建:

  ?SQL 语句 CREATE USER

?SQL 语句 CREATE ROLE

?Postgres 命令行实用程序 createuser

这三种创建用户帐户的方法表现出不同的行为,并导致产生截然不同的默认权限和特权。

  对于一个普通角色,典型的用户可以执行下面的操作:

  ?如果数据集群使用如 pg_hba.conf 中描述的默认身份验证策略,那么用户可以访问任何数据库。

?在用户可以访问的任何数据库的 PUBLIC 模式中创建对象。

?在临时会话中创建会话(临时)对象,比如模式 pg_temp_?

?修改运行时参数。

?创建用户定义函数

?执行在 PUBLIC 模式中由其他用户创建的用户定义函数(只要处理的是用户有权访问的对象 。

一定要清楚用户所具有的权限,但是,了解普通用户在默认情况下不可以做什么也同样重要。普通用户无权执行以下操作:

  ?创建数据库或模式。

?创建其他用户。

?访问由其他用户创建的对象。

?登录(只适合语句 CREATE ROLE)。

超级用户权限和特权

  尽管普通用户无权执行被定义为超级用户功能的权限和特权,但是普通用户仍然会引起一些与默认权限和特权有关的问题。

  本文将讨论一些可由普通用户操作的攻击媒介。

  访问对象

  一项极其常见且不太安全的实践发生在将 PostgreSQL 用作 Web 服务器的后端时。开发人员创建普通用户的目的只是让其使用 INSERT、UPDATE 和 DELETE 命令来执行数据操作命令。然而,未经授权的操作也可能会被执行,因为 PUBLIC 模式是公开给所有人的。例如,用户可以对这些表进行数据挖掘。甚至还可以对表进行修改:添加规则和触发器、将数据保存到 PUBLIC 模式中的表,,随后这些数据就会被收集。

  记住,一个被盗用的用户帐户可以对它所拥有的对象做任何事情。

linux

推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
快乐皇妃800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有