StarRocks的許可權管理系統支援表層級細粒度的許可權控制、基於角色的許可權存取控制,以及白名單機制。
背景資訊
StarRocks 2.x版本和StarRocks 3.x版本在使用上存在一定的差異,更多資訊請參見社區文檔StarRocks 2.5和StarRocks 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_pluginIDENTIFIED 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%';