2018最火的微信群名上怎么这么多基佬啊啊啊

DNA遗传哲学? - 数据库里schema应该属于谁?
PostgreSQL , schema , template
安装好PostgreSQL软件后,需要调用initdb,或者pg_ctl初始化数据库实例,初始化数据库实例时,通过bki接口(脚本),建立数据库元数据。
PostgreSQL , schema , template
安装好PostgreSQL软件后,需要调用initdb,或者pg_ctl初始化数据库实例,初始化数据库实例时,通过bki接口(脚本),建立数据库元数据。
初始化后,数据库有了数据文件、日志文件、控制文件、CLOG、WAL等一系列数据库的文件。
同时会创建模板库template0, template1, 以及数据库postgres。
模板库内,默认会有一个public schema,owner是谁?是初始化时数据库的超级用户。例如初始化数据库集群时,超级用户为postgres,那么模板库属于postgres,模板库里的schema(public)也属于postgres。
接下来,用户可以使用PostgreSQL数据库从模板库创建更多数据块。
通过模板库创建的新的数据库,里面也会带有模板库所有的一切,包括schmea,这些对象属于谁呢?
owner是postgres还是新建数据库的用户(或者指定的数据库owner呢?)
目前,不管你用什么用户新建数据库,新数据库的权限,OWNER都会和模板库保持原样。
例如,template1的public属于postgres用户
template1=# \dn
List of schemas
--------+----------
public | postgres
使用另一个用户,创建一个数据库,并将新的数据库的owner设置为新用户。但是这个新数据库内的public schema owner依旧是postgres。
template1=# create role di
CREATE ROLE
template1=# \c postgres
You are now connected to database "postgres" as user "test".
postgres=# create database db1 with template template1
CREATE DATABASE
postgres=# \c db1
You are now connected to database "db1" as user "test".
List of schemas
--------+----------
public | postgres
为什么要基因?
假设不继承模板库的权限,而是将schema或者对象的权限或者OWNER直接转嫁给数据库的owner,会有什么风险呢?
风险如下:
一个有create database权限的普通用户,它可以利用这种方法,窥探其他数据库的它看不到的内容。
创建一个普通用户,带有create database权限
db1=# create role r1
CREATE ROLE
连接到template1库,使用超级用户postgres创建一个测试表和测试数据
template1=& \c template1 postgres
You are now connected to database "template1" as user "postgres".
template1=# create table test(id int);
CREATE TABLE
template1=# insert into test values (1);
INSERT 0 1
普通用户无法访问这张测试表
template1=# \c template1 r1
You are now connected to database "template1" as user "r1".
template1=& select *
permission denied for relation test
以template1为模板,新建一个数据库,OWNER为自己。
template1=& \c postgres r1
You are now connected to database "postgres" as user "r1".
postgres=& create database db3 with template template1 owner r1;
CREATE DATABASE
由于权限继承,所以新建的数据库,OWENR依然没有权限查询这张表
postgres=& \c db3 r1
You are now connected to database "db3" as user "r1".
List of schemas
--------+----------
public | postgres
db3=& select *
permission denied for relation test
PostgreSQL 权限继承的方法充分考虑了这一点,避免了安全风险问题。
有什么更好的方法呢?
实际上用户的想法和PostgreSQL实施的安全防护不一致,例如用户创建了一个模板库,并希望其他人通过这个模板库创建的数据库,里面的对象OWNER也改成建库的OWNER。
create database db1 with template template1
用户也许希望db1里面包含的模板库中的schema public也转给newrole
如何改变现状呢?
1. 既然owner改变不了,那么可以使用权限来控制,模板建好后,把模板中的对象权限赋予给public角色。
\c template1 postgres
grant all on sch
2. 还有更人性化的方法,例如新增SQL语法:
给schema,table,view等对象增加一个权限选项(允许用户选择),作为模板创建时,OWNER是否跟随数据库的owner。
3. 当以template0为模板创建数据库时,建议public的owner可以改为数据库的owner,同样需要社区代码层面的支持。
4. 当用户新建了数据库后,再使用超级用户,将新库的public schema赋予给新库的owner.
\c new_db superuser
alter schema public owner to db_
注意,schema owner有这个schema的绝对管理权限,包括删除其他人在这个schema创建的对象。
所以千万不要把自己的对象创建到别人的schema下面,那很危险。
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@ 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】首届阿里巴巴中间件技术峰会,揭秘阿里10年分布式技术沉淀!阿里高可用体系核心缔造者、全链路压测创始人,DRDS与TDDL负责人等大咖出场,干货分享,不可错过!&&
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...
提供海量、安全和高可靠的云存储服务。RESTful API的平台无关性,容量和处理能力的弹性扩展,按实际容量付费...
快速、完全托管的TB/PB级数据仓库解决方案,向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
Loading...2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2010年6月 其他数据库开发大版内专家分月排行榜第二2010年6月 Oracle大版内专家分月排行榜第二2010年5月 其他数据库开发大版内专家分月排行榜第二
2011年1月 其他数据库开发大版内专家分月排行榜第三2010年12月 其他数据库开发大版内专家分月排行榜第三
2017年1月 其他数据库开发大版内专家分月排行榜第二2014年8月 其他数据库开发大版内专家分月排行榜第二2014年2月 其他数据库开发大版内专家分月排行榜第二2014年1月 其他数据库开发大版内专家分月排行榜第二2013年12月 其他数据库开发大版内专家分月排行榜第二2013年10月 其他数据库开发大版内专家分月排行榜第二2013年8月 其他数据库开发大版内专家分月排行榜第二2013年5月 其他数据库开发大版内专家分月排行榜第二2013年1月 其他数据库开发大版内专家分月排行榜第二2012年8月 其他数据库开发大版内专家分月排行榜第二2012年5月 其他数据库开发大版内专家分月排行榜第二2012年4月 其他数据库开发大版内专家分月排行榜第二2012年1月 其他数据库开发大版内专家分月排行榜第二
2017年5月 其他数据库开发大版内专家分月排行榜第三2017年3月 其他数据库开发大版内专家分月排行榜第三2016年12月 其他数据库开发大版内专家分月排行榜第三2014年11月 其他数据库开发大版内专家分月排行榜第三2014年7月 其他数据库开发大版内专家分月排行榜第三2014年6月 其他数据库开发大版内专家分月排行榜第三2014年5月 其他数据库开发大版内专家分月排行榜第三2013年7月 其他数据库开发大版内专家分月排行榜第三2013年3月 其他数据库开发大版内专家分月排行榜第三2012年7月 其他数据库开发大版内专家分月排行榜第三2012年6月 其他数据库开发大版内专家分月排行榜第三2011年12月 其他数据库开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 2018最火的微信群名 的文章

 

随机推荐