日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

簡單權限模型函數說明

本文為您介紹在實時數倉Hologres中簡單權限模型(Simple Permission Model,SPM)的函數調用說明,您可以通過調用相關函數管理簡單權限模型。

函數概述

簡單權限模型的函數及其功能說明如下所示。

  • spm_enable:開啟簡單權限模型。

  • spm_migrate:將已有實例對象(包括表、視圖及外表等)切換至SPM權限模型。

  • spm_create_user:創建僅具有登錄權限的用戶,您需要授予其具體的權限才能進行開發。

  • spm_grant:將某個用戶加入到某個用戶組。

  • spm_revoke:將某個用戶從某個用戶組中移除。

  • spm_disable:關閉當前DB簡單權限模型。

  • spm_cleanup:清除DB的SPM保留用戶組。

spm_enable

  • 函數介紹

    spm_enable()函數用于開啟簡單權限模型。

    調用spm_enable()函數后,系統將會自動創建{db}_admin、{db}_developer、{db}_writer和{db}_viewer 4個用戶組。

  • 命令語法

    CALL spm_enable();
    說明

    僅實例的Superuser可以執行spm_enable()函數。

  • 使用說明

    調用spm_enable()函數成功開啟SPM的使用說明如下:

    • DB的所有權限從PUBLIC用戶組收回。因此,不相關的用戶將不能連接到目標DB。

    • DB下所有Schema的所有權限從PUBLIC用戶組收回。

    • {db}_admin、{db}_developer、{db}_writer和{db}_viewer都具有DB的連接權限。

    • {db}_admin將作為DB的Owner以及DB下所有Schema的Owner。

    • {db}_developer、{db}_writer和{db}_viewer具有所有Schema的USAGE權限,{db}_developer具有所有Schema的CREATE權限。

    • {db}_admin和{db}_developer未來創建的對象,Owner都是{db}_developer。{db}_writer具有讀寫(readwrite)權限,{db}_viewer具有只讀(readonly)權限。

spm_migrate

  • 函數介紹

    spm_migrate()函數用于將已有實例對象(包括表、視圖及外表等)切換至SPM權限模型。

  • 命令語法

    CALL spm_migrate( [ batch_size ] );

    參數說明如下表所示。

    參數

    描述

    取值范圍

    batch_size

    單次批量遷移對象的大小。

    取值為0代表采用當前max_locks_per_transaction作為batch_size。

    [0, max_locks_per_transaction],超出該范圍則不合法。其中max_locks_per_transaction最大取值為64.

    如果您的實例中有大量的對象(超過數千甚至數萬)需要切換至簡單權限模型,需要您多次執行spm_migrate()函數,直到全部對象切換完成為止。

    同時,建議您加入實時數倉Hologres交流群申請將max_locks_per_transaction參數調大,再執行操作,加群方式請參見如何獲取更多的在線支持?。

  • 使用說明

    • 調用spm_migrate()函數時,當遇到DONE BUT NOT COMPLETED提示,說明全部對象還沒有遷移完畢,您需要繼續執行spm_migrate()遷移。

    • 當遇到COMPLETED提示,說明全部對象已經遷移完畢。

  • 使用示例

    CALL spm_migrate(); //切換最多max_locks_per_transaction個對象至SPM管理。
    
    CALL spm_migrate(128); // 切換128個對象至SPM管理。

spm_create_user

  • 函數介紹

    spm_create_user()函數用于在SPM中創建用戶。創建的用戶僅具有登錄權限,您需要授予其具體的權限才能進行開發。

    說明

    僅Superuser和{db}_admin的成員可以調用該函數。

  • 命令語句

    CALL spm_create_user( user_name [, role_name] );

    參數說明如下表所示。

    參數

    描述

    user_name

    需要創建的用戶名。格式如下:

    • 阿里云賬號,例如13432193xxxx或者xx@aliyun.com。

    • RAM用戶賬號,例如RAM$mainaccount:subuser或者p4_202338382183xxx。

    role_name

    創建用戶時可以根據業務需求選擇將用戶加入如下用戶組:

    • {db}_admin

    • {db}_developer

    • {db}_writer

    • {db}_viewer

  • 使用示例

    CALL spm_create_user('my_test@aliyun.com');
    CALL spm_create_user('RAM$my_test:mysubuser', 'mydb_developer');
    CALL spm_create_user('13532313103042xxx');
    CALL spm_create_user('p4_23319103042xxx', 'mydb_admin');

spm_grant

  • 函數介紹

    spm_grant()函數用于將某個用戶加入到{db}_admin、{db}_developer、{db}_writer或{db}_viewer用戶組。

    說明

    僅Superuser和{db}_admin可以調用該函數。

  • 命令語法

    CALL spm_grant( role_name, user_name );

    參數說明如下表所示。

    參數

    描述

    role_name

    可以根據業務需求選擇將用戶加入如下用戶組:

    • {db}_admin

    • {db}_developer

    • {db}_writer

    • {db}_viewer

    關于用戶組的權限說明,請參見簡單權限模型概述

    user_name

    需要被添加進用戶組的用戶名。格式如下:

    • 阿里云賬號,例如13432193xxxx或者xx@aliyun.com。

    • RAM用戶賬號,例如RAM$mainaccount:subuser或者p4_202338382183xxx。

  • 使用說明

    • 只有開啟簡單權限模型后才能調用該函數。

    • user_name必須是云賬號ID或者云賬號。

    • role_name必須是{db}_admin、{db}_developer、{db}_writer或{db}_viewer用戶組。

  • 使用示例

    CALL spm_grant('mydb_developer', 'p4_202338382183xxx');//授予RAM用戶mydb的developer權限。
    CALL spm_grant('mydb_admin', 'RAM$my_test:xxx');//授予RAM用戶mydb的admin權限。
    CALL spm_gran('otherdb_admin', '13532313103042xxx'); // 錯誤,加入其他DB的角色請連接到其他DB執行spm_grant函數。

spm_revoke

  • 函數介紹

    spm_revoke()函數用于將某個用戶從{db}_admin、{db}_developer、{db}_writer或{db}_viewer用戶組中移除。

    說明

    僅Superuser和{db}_admin可以調用該函數。

  • 命令語法

    CALL spm_revoke( role_name, user_name );
  • 使用說明

    • 只有開啟簡單權限模型后才能調用該函數。

    • user_name必須是云賬號ID或者云賬號。

    • role_name必須是{db}_admin、{db}_developer、{db}_writer或{db}_viewer用戶組。

  • 使用示例

    CALL spm_revoke('mydb_developer', 'p4_202338382183xxx');//將RAM用戶從mydb的developer用戶組移除。
    CALL spm_revoke('mydb_admin', 'RAM$my_test:xxx');//將RAM用戶從mydb的admin用戶組移除。
    CALL spm_revoke('otherdb_admin', '13532313103042xxx'); // 錯誤,移出其他DB的用戶組請連接到其他DB執行spm_revoke。

spm_disable

  • 函數介紹

    spm_disable()函數用于為當前DB關閉簡單權限模型。

    說明

    僅Superuser可以調用該函數。

  • 命令語句

    CALL spm_disable();
  • 使用說明

    關閉SPM的說明如下:

    • {db}_admin、{db}_developer、{db}_writer和{db}_viewer用戶組繼續保留,可以使用專家模式授權語句將用戶加入對應用戶組來做權限管理,數據庫對象Owner保持不變(仍然是{db}_developer)。

    • DB的CONNECT,TEMPORARY權限向PUBLIC開放。

    • DB中public schema的USAGE,CREATE權限向PUBLIC開放。

    • DB中public schema中function,procedure的EXECUTE權限向PUBLIC開放。

    • 用戶定義的LANGUAGE的USAGE權限向PUBLIC開放。

    • 用戶定義的TYPE的USAGE權限向PUBLIC開放。

  • 使用示例

    CALL spm_disable();

spm_cleanup

  • 函數介紹

    spm_cleanup()函數用于清除DB的SPM保留用戶組,包括{db}_admin、{db}_developer、{db}_writer和{db}_viewer。

    說明

    僅Superuser可以調用此函數。

  • 命令語句

    CALL spm_cleanup( db_name [, batch_size ] );

    參數說明如下表所示。

    參數

    描述

    取值范圍

    db_name

    需要清除用戶組的DB。包含特殊字符或大寫字母的db_name用雙引號引起來。例如“MYDB”

    batch_size

    單次批量遷移對象的大小。

    取值為0代表采用當前max_locks_per_transaction作為batch_size。

    [0, max_locks_per_transaction],超出該范圍則不合法。

    如果您的實例中有大量的對象(超過數千甚至數萬)需要遷移,可能會導致鎖溢出,需要您多次執行spm_migrate()函數,直到全部對象遷移完成為止。

    同時,建議您加入實時數倉Hologres交流群申請將max_locks_per_transaction參數調大,再執行遷移操作,加群方式請參見如何獲取更多的在線支持?。

  • 使用說明

    • 當遇到DONE BUT NOT COMPLETED提示,說明全部對象還沒有遷移完畢,并且未刪除保留用戶組,您需要繼續執行spm_cleanup()函數。

    • 當遇到COMPLETED提示,說明全部對象已經遷移完畢,并已刪除保留用戶組,無需再調用此函數。

  • 使用示例

    CALL spm_cleanup('mydb'); //單次最多將max_locks_per_transaction個對象轉移Owner到current_user。
    CALL spm_cleanup('mydb', 128);//單次轉移128個對象的Owner到current_user。
    • 場景1:刪除對應DB,再清除用戶組。

      drop database mydb;
      CALL spm_cleanup('mydb');  // 無需重試,一次成功。
    • 場景2:在DB仍然存在的情況下,需要連接到對應DB進行清除。

       CALL spm_cleanup('otherdb');
      ERROR:  Permission Denied. execute in database otherdb, or drop database before call spm_cleanup.

功能函數調用權限

用戶組對功能函數調用的權限如下表所示。

功能函數

作用

Superuser

db_admin

db_developer | db_writer | db_viewer

spm_enable

開啟簡單權限模型。

spm_disable

關閉簡單權限模型。

spm_grant

將user加入組。

spm_revoke

將user移出組。

spm_migrate

將已有的表或類表對象等遷移至SPM管理。

spm_cleanup

刪除DB所有保留用戶組。

spm_create_user

創建簡單用戶并該用戶僅擁有登錄權限。

相關權限命令限制

開啟簡單權限模型之后,部分權限相關命令會受到限制,不能在簡單模型中使用的命令如下表所示。

命令語句

說明

alter table owner to xx

所有table owner都自動是對應Schema的developer用戶組,不能更改,無需手動更改。

grant

通過spm_grant將用戶加入某個用戶組后,無需再執行grant語句。

revoke

通過spm_revoke將用戶加入某個用戶組后,無需再執行revoke語句。

alter default privileges

在原權限模型下,授權只對當前以及過去的表有權限,未來表還需要重新授權。在簡單模型下,無需考慮建表的時態,只需要加入某個用戶組就能擁有對應的權限,因此無需再給未來表授權。

create role / drop role / alter role / alter role set默認用戶組

db_admin、db_developer、db_writer及db_viewer為系統默認用戶組,在開啟簡單權限模型后,會默認生成,不允許用戶(包括Superuser)對默認用戶組進行創建或修改。

rename to/from默認用戶組

不可以對保留用戶組(*_admin, *_developer, *_writer, *_viewer)進行更名。