你應該知道的數倉安全:都是同名Schema惹的禍

摘要:我是管理員賬號,怎么還沒有權限?當小伙伴詢問的時候,我第一時間就會想到都是用戶同名Schema惹的禍
本文分享自華為云社區《你應該知道的數倉安全——都是同名Schema惹的禍》,作者: zhangkunhn。
典型場景經常遇到小伙伴問到:
  • 我是管理員賬號,怎么還沒有權限?
  • 管理員給我賦權了啊 , 怎么還沒有權限?
當小伙伴詢問的時候,我第一時間就會想到都是用戶同名Schema惹的禍 。
你應該知道的數倉安全:都是同名Schema惹的禍

文章插圖
同名Schema是私有Schema我們知道,CREATE USER語法在創建用戶的同時會在當前數據庫中創建一個與用戶同名的SCHEMA 。這個Schema很特殊 , 只有兩種用戶能在這個Schema下面創建表、視圖、函數等對象:
  1. 用戶自己
  2. 管理員
然而,不管誰創建的,對象的所有者(Owner)都是用戶自己 。基于這個事實,我們可以稱用戶同名Schema為私有Schema 。私有表明了當前Schema的特殊性 , 在這個Schema下面的所有對象都是這個用戶自己的 , 不管是誰創建的 。
我們來看一個例子 。數據庫中有三個用戶,如表所示 。
你應該知道的數倉安全:都是同名Schema惹的禍

文章插圖
使用管理員dbadmin執行以下SQL:
gaussdb=# create table ua.ta (c1 int); CREATE TABLE gaussdb =# select relname, relowner, rolname from pg_class c, pg_authid a where relname = 'ta' and c.relowner= a.oid; relname | relowner | rolname ---------+----------+---------t1| 16546 | ua(不是dbadmin) (1 row)可以看到:

    推薦閱讀