全部產品
Search
文件中心

E-MapReduce:使用者和許可權管理

更新時間:Jul 01, 2024

StarRocks的許可權管理系統支援表層級細粒度的許可權控制、基於角色的許可權存取控制,以及白名單機制。

背景資訊

StarRocks 2.x版本和StarRocks 3.x版本在使用上存在一定的差異,更多資訊請參見社區文檔StarRocks 2.5StarRocks 3.2

建立使用者

重要

擁有ADMIN許可權,或任意層級的GRANT許可權的使用者才可以建立新使用者。

文法

CREATE USER user_identity [auth_option] [DEFAULT ROLE 'role_name'];

涉及參數如下:

  • user_identity:使用者標識。以username@'userhost'username@['domain']的形式標明。

  • [auth_option]:認證方式。可選方式包括:

    • IDENTIFIED BY 'auth_string'

    • IDENTIFIED WITH auth_plugin

    • IDENTIFIED WITH auth_plugin BY 'auth_string'

    • IDENTIFIED WITH auth_plugin AS 'auth_string'

  • DEFAULT ROLE:目前使用者的預設角色。

樣本

  • 建立一個無密碼使用者,且不指定host。

    CREATE USER 'jack';
  • 使用純文字密碼建立使用者,允許其從172.10.**.**登入。

    CREATE USER 'jack'@'172.10.**.**' IDENTIFIED WITH mysql_native_password BY '123456';
  • 使用密文密碼建立使用者,允許其從172.10.**.**登入。

    CREATE USER 'jack'@'172.10.**.**' IDENTIFIED BY PASSWORD '6BB4837EB74329105EE4568DDA7DC67ED2CA****';
    說明

    您可以通過PASSWORD()方法獲得密文密碼。例如,SELECT PASSWORD('123456');

  • 建立一個允許從192.168子網登入的使用者,同時指定其角色為example_role。

    CREATE USER 'jack'@'192.168.%' DEFAULT ROLE 'example_role';
  • 建立一個允許從網域名稱example_domain登入的使用者。

    CREATE USER 'jack'@['example_domain'] IDENTIFIED BY '12345';

修改使用者密碼

重要
  • 擁有ADMIN許可權,或者GLOBAL層級GRANT許可權的使用者,可以設定任意使用者的密碼。

  • 普通使用者可以設定自己對應的User Identity的密碼,自己對應的User Identity可以通過SELECT CURRENT_USER();命令查看。

  • 擁有非GLOBAL層級GRANT許可權的使用者,不可以設定已存在使用者的密碼,僅能在建立使用者時指定密碼。

  • root使用者的密碼僅root使用者可以重設。

文法

SET PASSWORD [FOR user_identity] = [PASSWORD('plain password')]|['hashed password'];

樣本

  • 修改目前使用者的密碼

    SET PASSWORD = PASSWORD('123456');
    SET PASSWORD = '6BB4837EB74329105EE4568DDA7DC67ED2CA****';
  • 修改指定使用者密碼

    SET PASSWORD FOR 'jack'@'192.%' = PASSWORD('123456');
    SET PASSWORD FOR 'jack'@['domain'] = '6BB4837EB74329105EE4568DDA7DC67ED2CA****';
說明

您可以通過PASSWORD()方法獲得密文密碼。

刪除使用者

重要

擁有ADMIN許可權的使用者可以刪除所有使用者。

DROP USER 'user_identity';

授予許可權

重要
  • 擁有ADMIN許可權,或者GLOBAL層級GRANT許可權的使用者,可以授予任意使用者的許可權。

  • 擁有DATABASE層級GRANT許可權的使用者,可以授予任意使用者對指定資料庫的許可權。

  • 擁有TABLE層級GRANT許可權的使用者,可以授予任意使用者對指定資料庫中指定表的許可權。

  • ADMIN_PRIV許可權只能在GLOBAL層級授予或撤銷。

  • 擁有GLOBAL層級GRANT_PRIV實際等同於擁有ADMIN_PRIV,因為該層級的GRANT_PRIV有授予任意許可權的許可權,請謹慎授予該許可權。

StarRocks 3.x版本

  • 將所有資料庫及庫中所有表的讀取許可權授予使用者。

    GRANT SELECT ON *.* TO 'jack'@'%';
  • 將資料庫db1及其中所有表的匯入許可權授予角色。

    GRANT INSERT ON db1.* TO ROLE '<role_name>';
  • 將所有資源的使用許可權授予使用者。

    GRANT USAGE ON RESOURCE * TO 'jack'@'%';

StarRocks 2.x版本

  • 授予指定使用者資料庫級或表級許可權

    GRANT privilege_list ON db_name[.tbl_name] TO user_identity [ROLE role_name];
  • 授予指定使用者指定資源許可權

    GRANT privilege_list ON RESOURCE resource_name TO user_identity [ROLE role_name];

涉及參數如下:

  • privilege_list:需要賦予的許可權列表,以逗號分隔。許可權如下:

    • NODE_PRIV:節點變更許可權。包括FE、BE、BROKER節點的添加、刪除、下線等操作。目前該許可權只能授予root使用者。

    • GRANT_PRIV:許可權變更許可權。允許執行包括授權、撤權,添加、刪除、變更使用者或角色等操作。

    • SELECT_PRIV:對資料庫、表的唯讀許可權。

    • LOAD_PRIV:對資料庫、表的寫入權限。包括LOAD、INSERT、DELETE等。

    • ALTER_PRIV:對資料庫、表的更改許可權。包括重新命名庫、表;添加、刪除、變更列;添加、刪除分區等操作。

    • CREATE_PRIV:建立資料庫、表、視圖的許可權。

    • DROP_PRIV:刪除資料庫、表、視圖的許可權。

    • USAGE_PRIV:資源的使用許可權。

  • db_name:資料庫名。

  • tbl_name:表名。

  • user_identity:使用者標識。以username@'userhost'username@['domain']的形式標明。

  • ROLE:將許可權賦予指定的ROLE,如果指定的ROLE不存在,則會自動建立。

撤銷許可權

重要
  • 擁有ADMIN許可權,或者GLOBAL層級GRANT許可權的使用者,可以撤銷任意使用者的許可權。

  • 擁有DATABASE層級GRANT許可權的使用者,可以撤銷任意使用者對指定資料庫的許可權。

  • 擁有TABLE層級GRANT許可權的使用者,可以撤銷任意使用者對指定資料庫中指定表的許可權。

StarRocks 3.x版本

  • 撤銷指定使用者對指定表的SELECT許可權

    REVOKE SELECT ON TABLE sr_member FROM USER 'jack'@'172.10.**.**';
  • 撤銷指定角色對指定資源的使用許可權

    REVOKE USAGE ON RESOURCE '<resource_name>' FROM ROLE '<role_name>';

StarRocks 2.x版本

  • 撤銷指定使用者資料庫級或表級許可權

    REVOKE privilege_list ON db_name[.tbl_name] FROM user_identity [ROLE role_name];
  • 撤銷指定使用者指定資源許可權

    REVOKE privilege_list ON RESOURCE resource_name FROM user_identity [ROLE role_name];

建立角色

重要

擁有ADMIN許可權的使用者才可以建立角色。

您可以對建立好的角色進行授權操作,擁有該角色的使用者擁有角色被賦予的許可權。

CREATE ROLE <role_name>;

查看角色

SHOW ROLES;

刪除角色

重要

擁有GRANT_PRIV或ADMIN_PRIV許可權的使用者可以刪除角色。

DROP ROLE <role_name>;

查看使用者屬性

SHOW PROPERTY [FOR user] [LIKE key];

涉及參數如下:

  • user:使用者名稱。

  • key:相關屬性關鍵字。

樣本如下:

  • 查看指定使用者的屬性。

    SHOW PROPERTY FOR 'jack';
  • 看指定使用者匯入cluster相關屬性。

    SHOW PROPERTY FOR 'jack' LIKE '%load_cluster%';