postgresql關於訪問檢視需要的許可權
某個使用者訪問一個檢視,這個使用者需要具備這個檢視的schema的usage和這個檢視本身的select許可權,如果檢視的基表來自其他schema,可能還需要其他schema的usage許可權(根據postgresql改造的redshift發現了此問題),但是這個使用者不需要檢視對應基表的select許可權
如果基表被修改了或重建了,需要把基表重新賦權給檢視的owner,否則檢視無法生效,但是不需要把基表授權給需要訪問檢視的使用者,比如檢視view1的owner是viewowner,一個使用者user1有訪問view1的許可權,一旦view1的基本table1被重建了,需要把基表table1的許可權重新賦給viewowner,但是不需要把table1的許可權重新賦給uers1
案例1:使用者u2訪問s2.view1,使用者u2只需要s2的usage許可權和s2.view1的select許可權,而不需要s2.view1基表s1.table1的select許可權和對應schema s1的usage許可權
t1=# \c
You are now connected to database "t1" as user "postgres"
t1=# \dns
List of schemas
Name | Owner
--------+----------
public | postgres
s1 | postgres
s2 | postgres
(3 rows)
t1=# create user u1 password '123456';
CREATE ROLE
t1=# create user u2 password '123456';
CREATE ROLE
t1=# grant all privileges on schema s1 to u1;
GRANT
t1=# grant all privileges on schema s2 to u1;
GRANT
t1=# \c - u1
You are now connected to database "t1" as user "u1".
t1=> create table s1.table1(hid int);
CREATE TABLE
t1=> create view s2.view1 as select * from s1.table1;
CREATE VIEW
t1=> \c - u2
You are now connected to database "t1" as user "u2".
t1=> select * from s2.view1;
ERROR: permission denied for schema s2
LINE 1: select * from s2.view1;
t1=> \c - postgres
You are now connected to database "t1" as user "postgres".
t1=# grant usage on schema s2 to u2;
GRANT
t1=# \c - u2
You are now connected to database "t1" as user "u2".
t1=> select * from s2.view1;
ERROR: permission denied for view view1
t1=> \c - postgres
You are now connected to database "t1" as user "postgres".
t1=# grant select on s2.view1 to u2;
t1=# \c - u2
You are now connected to database "t1" as user "u2".
t1=> select * from s2.view1;
hid
-----
(0 rows)
案例2:redshift資料庫,使用者lukes訪問cl_crm.v_account,使用者lukes不僅需要cl_crm的usage許可權和cl_crm.v_account的select許可權,還需要cl_crm.v_account基表對應schema的usage許可權,但是不需要基表raw_wam.ibdwsurvey、raw_c3.ibdwsurveyinfo的select許可權
建立使用者lukes,並授權使用者擁有檢視cl_crm.v_account對應schema的usage許可權
create user lukes password 'X123_x123'
grant usage on schema cl_crm to lukes
lukes使用者查詢cl_crm.v_account檢視報錯
select * from cl_crm.v_account limit 1
[Amazon](500310) Invalid operation: permission denied for schema raw_wam;
1 statement failed.
對使用者lukes授權usage在檢視基表對應的schema上
grant usage on schema raw_wam to lukes
grant usage on schema raw_c3 to lukes
lukes使用者查詢cl_crm.v_account檢視繼續報錯
[Amazon](500310) Invalid operation: permission denied for relation v_account;
對使用者lukes授權訪問檢視的select許可權
grant select on table cl_crm.v_account to lukes
lukes使用者查詢cl_crm.v_account正常了
cl_crm.v_account檢視語句是
CREATE or replace view cl_crm.v_account as with userids as (
select distinct su.ibsu_userid from raw_wam.ibdwsurvey su
left join raw_c3.ibdwsurveyinfo si ....)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2682551/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql關於許可權的總結SQL
- 如何檢視postgresql使用者許可權SQL
- 淺析Windows的訪問許可權檢查機制Windows訪問許可權
- 關於公司程式碼許可權的問題
- win10老跳出訪問許可權怎麼辦_win10訪問許可權怎麼關閉Win10訪問許可權
- Quarkus中基於角色的許可權訪問控制教程
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- Java 訪問許可權控制(6)Java訪問許可權
- public, private, protected 訪問許可權訪問許可權
- mongoDB 3.0 安全許可權訪問MongoDB
- PostgreSQL:許可權管理SQL
- PostgreSQL訪問許可權查詢函式彙總和使用舉例SQL訪問許可權函式
- 關於動態許可權
- 關於mysql許可權管理MySql
- 17-成員訪問許可權訪問許可權
- 使用nginx控制ElasticSearch訪問許可權NginxElasticsearch訪問許可權
- 兩個關於許可權設定的問題思考
- 2020.9.28(Hive檢視、索引、許可權管理)Hive索引
- 關於IPC和PTH使用者許可權問題,psexec拒絕訪問(Access Denied)的原因
- 由於GDPR Instapaper暫時關閉了歐洲使用者的訪問許可權訪問許可權
- 005.OpenShift訪問控制-許可權-角色
- win共享檔案沒有許可權訪問怎麼辦 win10共享檔案許可權訪問的方法Win10
- 論Java訪問許可權控制的重要性Java訪問許可權
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- 如何在 Linux 中配置 sudo 訪問許可權Linux訪問許可權
- kubernetes實戰篇之Dashboard的訪問許可權限制訪問許可權
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- 友好訪問許可權篇:訪問語音、相簿、通訊錄----iOS訪問許可權iOS
- linux的常用操作——檢視和修改檔案許可權Linux
- Spring Security實現基於RBAC的許可權表示式動態訪問控制Spring
- iOS相關許可權檢測和申請iOS
- k8s結合jumpserver做kubectl許可權控制 使用者在多個namespaces的訪問許可權 rbac許可權控制K8SServernamespace訪問許可權
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- SQL Server資料庫檢視login所授予的具體許可權問題SQLServer資料庫
- 採坑之Android手機訪問相簿許可權問題Android
- 遇到問題,需要開發角色許可權模組
- ubuntu 開放root使用者的SSH訪問許可權Ubuntu訪問許可權
- mongodb關於使用者許可權的總結MongoDB