ブラックリスト管理
場合によっては、管理者が特定のSQLパターンを無効にして、SQLがクラスタのクラッシュや予期しない高い同時実行クエリを引き起こすのを避ける必要があります。ブラックリストは、SELECT ステートメント、INSERT ステートメント(v3.1 以降)、および CTAS ステートメント(v3.4 以降)にのみ適用されます。
StarRocksは、ユーザーがSQLブラックリストを追加、表示、削除することを可能にします。
構文
enable_sql_blacklist を使用してSQLブラックリストを有効にします。デフォルトはFalse(オフ)です。
admin set frontend config ("enable_sql_blacklist" = "true")
ADMIN_PRIV権限を持つ管理者ユーザーは、次のコマンドを実行してブラックリストを管理できます。
ADD SQLBLACKLIST "<sql>"
DELETE SQLBLACKLIST <sql_index_number>
SHOW SQLBLACKLIST
enable_sql_blacklistがtrueの場合、すべてのSQLクエリはsqlblacklistによってフィルタリングされる必要があります。一致する場合、ユーザーはそのSQLがブラックリストにあることを通知されます。それ以外の場合、SQLは通常通り実行されます。SQLがブラックリストにある場合、メッセージは次のようになります。
ERROR 1064 (HY000): Access denied; sql 'select count (*) from test_all_type_select_2556' is in blacklist
ブラックリストの追加
ADD SQLBLACKLIST "<sql>"
sql は特定のタイプのSQLに対する正規表現です。
ヒント
現在、StarRocksはSELECT文をSQLブラックリストに追加することをサポートしています。
SQL自体には、正規表現のセマンティクスと混同される可能性のある一般的な文字 (, ), *, . が含まれているため、エスケープ文字を使用してそれらを区別する必要があります。SQLで頻繁に使用される ( と ) については、エスケープ文字を使用する必要はありません。他の特殊文字には、エスケープ文字 \ をプレフィックスとして使用する必要があります。例えば:
count(\*)を禁止する:
ADD SQLBLACKLIST "select count(\\*) from .+"
count(distinct)を禁止する:
ADD SQLBLACKLIST "select count(distinct .+) from .+"
- order by limit
x,y,1 <= x <=7,5 <=y <=7を禁止する:
ADD SQLBLACKLIST "select id_int from test_all_type_select1 order by id_int limit [1-7], [5-7]"