SEPostgreSQL-patch
请勿在黑客邮件列表中讨论此 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
问题
- 我们是否已经尽可能地避免了隐蔽通道?http://archives.postgresql.org/pgsql-hackers/2008-09/msg01750.php
- 查看系统表信息的权限是否得到妥善保护?
邮件讨论
- http://archives.postgresql.org/pgsql-hackers/2009-01/msg01991.php
- http://archives.postgresql.org/pgsql-hackers/2009-01/msg02295.php
代码大小影响
这是我对 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