SEPostgreSQL-patch

来自 PostgreSQL wiki
跳转到导航跳转到搜索

请勿在黑客邮件列表中讨论此 URL,直到 2009 年 1 月 28 日星期三格林威治标准时间 1200。


简介

此补丁为 Postgres 引入了两种新功能。第一个是 SQL 级别的行权限。使用此功能,您可以为行分配权限,类似于为表分配的权限。

          INSERT INTO ratbl_p (security_acl, a, b)
          VALUES ('{rausr_x=r/rausr_o}', 2, 'bbb');

权限通过将文字字符串指定给系统列 'security_label' 来分配,而不是使用 GRANT/REVOKE 命令。

第二个功能是 SE-Linux 集成。安全值被分配为文字字符串,就像 SQL 级别的行权限一样。

          INSERT INTO t1 (security_label, x, y)
          VALUES ('system_u:object_r:sepgsql_table_t:s0', 1, 'aaa');

使用的系统列是 'security_label'。SE-Linux 集成的最大优势在于数据库权限由站点范围的安全策略控制,而不是由数据库特定的策略控制。

此 wiki 对功能集有一个很好的介绍:https://wiki.postgresql.ac.cn/wiki/SEPostgreSQL

这基本上实现了 TCSEC (可信计算机系统评估标准)。虽然它目前只支持 SE-Linux,但它可以扩展到支持其他安全基础设施。

补丁

最新的补丁提交:http://archives.postgresql.org/pgsql-hackers/2009-01/msg00661.php

文档补丁:http://sepgsql.googlecode.com/files/sepostgresql-docs-8.4devel-3-r1398.patch

回归测试补丁(包含示例):http://sepgsql.googlecode.com/files/sepostgresql-tests-8.4devel-3-r1398.patch

问题

  • 查看系统表信息的权限是否得到妥善保护?

邮件讨论

代码大小影响

这是我对 SE-PostgreSQL 与文本搜索的代码影响分析,文本搜索包含在 PostgreSQL 8.3 中。如果按总行数或专用目录以外的行数衡量,文本搜索大 4 倍;SE-PostgreSQL 唯一更大的方面是受影响的 C 文件更多。

 TEXT SEARCH:
 total lines	48924
 /snowball	27232
 /tsearch	 7199
 utils/adt	 6180
 mixed	         8313
 -------
 C files:         46
 SE-PGSQL:
 total lines	10040
 /security	 7721
 mixed	         2319
 -------
 C files:        104

待办事项

  • 允许系统列 'security_acl' 和 'security_label' 在每行分配,而无需 CREATE TABLE 选项,并且如果未分配则不需要存储空间。
  • 找到删除未引用 pg_security 行的方法。

新闻

Kaigai Kohei 和 SE PostgreSQL 已经在美国国家安全局 (NSA) 网站上列出:http://www.nsa.gov/research/selinux/contrib.shtml