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

配置SQL審核優(yōu)化建議

更新時(shí)間:

DMS的安全規(guī)則中新接入了SQL審核優(yōu)化建議,在SQLConsole或數(shù)據(jù)變更中,對(duì)提交的SQL語句進(jìn)行規(guī)范審核并提出相關(guān)優(yōu)化建議。可協(xié)助您在提交變更操作前審核、解決問題SQL,規(guī)避潛在問題SQL在變更到數(shù)據(jù)庫(kù)后產(chǎn)生異常。

前提條件

  • 您的系統(tǒng)角色為DBA管理員,更多信息請(qǐng)參見用戶管理

  • 已創(chuàng)建安全規(guī)則。具體操作,請(qǐng)參見創(chuàng)建安全規(guī)則

  • 數(shù)據(jù)庫(kù)類型:

    • MySQL:RDS MySQLPolarDB MySQL版、MariaDB、PolarDB分布式版AnalyticDB for MySQL、其他來源MySQL

    • Oracle

    • PolarDB PostgreSQL版(兼容Oracle)

    • OceanBase

系統(tǒng)行為動(dòng)作

DMS預(yù)定義了三種系統(tǒng)行為動(dòng)作:

  • 必須改進(jìn):若不改進(jìn)該語句,系統(tǒng)會(huì)自動(dòng)阻斷流程,并進(jìn)行相應(yīng)提示,系統(tǒng)初始化SQL審核規(guī)則中不包含必須改進(jìn)

    說明

    SQL審核規(guī)則的檢測(cè)項(xiàng)請(qǐng)參見檢測(cè)項(xiàng)

    例如:將表要有主鍵的規(guī)則設(shè)置為必須改進(jìn),若開發(fā)人員在創(chuàng)建表時(shí)未設(shè)置主鍵,系統(tǒng)將會(huì)攔截SQL語句的執(zhí)行,并要求開發(fā)人員針對(duì)該項(xiàng)規(guī)則進(jìn)行修改,驗(yàn)證通過后才允許系統(tǒng)執(zhí)行。

  • 潛在問題:提醒該SQL存在問題,但不會(huì)阻斷流程。

  • 建議改進(jìn):建議進(jìn)行改進(jìn),且不阻斷流程。

不同管控模式下的功能支持情況

DMS提供三種不同的管控模式,更多信息,請(qǐng)參見管控模式

支持項(xiàng)

安全協(xié)同

穩(wěn)定變更

自由操作

開啟或關(guān)閉規(guī)則

支持

支持

支持

配置行為動(dòng)作

支持

不支持配置

不支持配置

更改規(guī)則參數(shù)

部分規(guī)則可填寫參數(shù),例如表的索引數(shù)量、表的字段數(shù)量。

支持

支持

不支持配置

配置備注

配置規(guī)則的業(yè)務(wù)背景。

支持

不支持配置

不支持配置

操作步驟

安全規(guī)則中已生成默認(rèn)的SQL審核規(guī)則,本示例向您介紹如何進(jìn)行自定義配置,將表要有主鍵的規(guī)則設(shè)置為必須改進(jìn)

  1. 登錄數(shù)據(jù)管理DMS 5.0
  2. 單擊控制臺(tái)左上角的2023-01-28_15-57-17.png圖標(biāo),選擇全部功能 > 安全與規(guī)范(DBS) > 安全規(guī)則

    說明

    若您使用的是非極簡(jiǎn)模式的控制臺(tái),在頂部菜單欄中,選擇安全與規(guī)范(DBS) > 安全規(guī)則

  3. 單擊目標(biāo)安全規(guī)則右側(cè)操作列下的編輯

    說明

    若您需要配置自由操作穩(wěn)定變更的配置項(xiàng),請(qǐng)單擊對(duì)應(yīng)管控模式右側(cè)的SQL審核優(yōu)化建議

  4. 詳情頁左側(cè)的導(dǎo)航欄中,單擊SQL審核優(yōu)化建議

  5. 單擊表要有主鍵規(guī)則右側(cè)的編輯

    編輯SQL審核規(guī)則

    說明

    您可以單擊標(biāo)記(規(guī)則生效范圍,目前包含DDL語句、DML語句)、行為動(dòng)作狀態(tài)(開啟或關(guān)閉規(guī)則)右側(cè)的篩選按鈕圖標(biāo),進(jìn)行快速篩選。

  6. 規(guī)則內(nèi)容配置彈窗中,配置如下信息。

    規(guī)則內(nèi)容配置

    參數(shù)名

    說明

    行為動(dòng)作

    行為動(dòng)作設(shè)置為必須改進(jìn)

    說明

    系統(tǒng)初始化規(guī)則中不包含必須改進(jìn)

    備注

    輸入此規(guī)則的備注信息,如業(yè)務(wù)背景信息。

  7. 單擊確定

    在后續(xù)的數(shù)據(jù)開發(fā)、數(shù)據(jù)變更及SQL審核等功能中,SQL審核優(yōu)化建議將根據(jù)配置的安全規(guī)則檢驗(yàn)SQL語句。

    若不符合表要有主鍵該項(xiàng)規(guī)則,系統(tǒng)會(huì)自動(dòng)阻斷流程。

檢測(cè)項(xiàng)

  • SQL規(guī)范檢查支持的檢測(cè)項(xiàng)如下。

    表結(jié)構(gòu)定義

    檢測(cè)項(xiàng)

    適用的SQL語句

    規(guī)則名稱與規(guī)則標(biāo)識(shí)

    庫(kù)屬性

    CREATE DATABASE

    限制創(chuàng)建庫(kù)的字符集:CREATE_DATABASE_LIMIT_CHARSET

    表屬性

    • CREATE TABLE

    • ALTER TABLE

    • 表要有主鍵:TABLE_MUST_HAVE_PRIMARY_KEY

    • 表要有備注:TABLE_MUST_HAVE_COMMENTS

    • 表不能使用外鍵:TABLE_FORBID_USE_FOREIGN_KEY

    • 限制表名大小寫:TABLE_NAME_LIMIT_CHAR_CASE

    • 限制表存儲(chǔ)引擎:TABLE_LIMIT_STORE_ENGINE

    • 限制表使用分區(qū)設(shè)置:TABLE_FORBID_USE_PARTITION

    • 表需要包含某些列:TABLE_MUST_HAVE_SOME_COLUMN

    • 限制表字符集:TABLE_MUST_USE_SOME_CHARSET

    • 限制表校驗(yàn)規(guī)則:TABLE_MUST_USE_SOME_COLLATION

    • 表名不能是關(guān)鍵字:TABLE_NAME_FORBID_KEYWORD

    • 限制表索引的數(shù)量:TABLE_LIMIT_INDEX_COUNT

    • 限制表字段的數(shù)量:TABLE_LIMIT_COLUMN_COUNT

    • 限制建表自增初始值:TABLE_LIMIT_INIT_AUTO_INCREMENT

    • 限制主鍵列必須自增:LIMIT_PRIMARY_COLUMN_AUTO_INCREMENT

    • 限制使用視圖:TABLE_FORBID_USE_VIEW

    • 限制使用觸發(fā)器:TABLE_FORBID_USE_TRIGGER

    • 限制使用事件:TABLE_FORBID_USE_EVENT

    • 限制使用存儲(chǔ)過程:TABLE_FORBID_USE_STORED_PROCEDURE

    • 限制使用自定義函數(shù):TABLE_FORBID_USE_CUSTOM_FUNCTION

    • 修改表字符集建議用ALTER TABLE CONVERT語法:MODIFY_CHARSET_USE_ALTER_TABLE_CONVERT

    列屬性

    • CREATE TABLE

    • ALTER TABLE

    • 字段名不能是關(guān)鍵字:COLUMN_NAME_FORBID_KEYWORD

    • 限制字段名大小寫:COLUMN_NAME_LIMIT_CHAR_CASE

    • 不能設(shè)置列的字符集:COLUMN_FORBID_SET_CHARSET

    • 限制列不能使用部分?jǐn)?shù)據(jù)類型:COLUMN_FORBID_DATA_TYPES

    • 列要有注釋:COLUMN_MUST_HAVE_COMMENTS

    • 限制char類型字段長(zhǎng)度:COLUMN_LIMIT_CHAR_LENGTH

    • 限制varchar類型字段長(zhǎng)度:COLUMN_LIMIT_VARCHAR_LENGTH

    • 限制列都不可空(NOT NULL):COLUMN_MUST_SET_NOT_NULL

    • 限制自增列名字為ID:COLUMN_AUTO_INCREMENT_NAME_ID

    • 限制自增列為無符號(hào):COLUMN_AUTO_INCREMENT_UNSIGNED

    • 不能使用floatdouble類型(建議用decimal替換):COLUMN_FORBID_FLOAT_DOUBLE_TYPE

    • 每個(gè)列都要有默認(rèn)值:EACH_COLUMN_NEED_DEFAULT_VALUE

    • 不能設(shè)置列的校驗(yàn)集:COLUMN_FORBID_SET_COLLATE

    • 限制修改表重命名列:ALTER_TABLE_FORBID_RENAME_COLUMN

    • 限制修改表刪除列:ALTER_TABLE_FORBID_DROP_COLUMN

    • 修改表禁止更改數(shù)據(jù)類型:ALTER_TABLE_FORBID_MODIFY_DATA_TYPE

    • 修改表新增字段要求可空:ALTER_TABLE_ADD_COLUMN_NULLABLE

    • 修改表新增非空字段時(shí)要明確指定默認(rèn)值:ALTER_ADD_NOT_NULL_COLUMN_NEED_DEFAULT

    • 修改表將可空字段改為非空時(shí)要明確指定默認(rèn)值:COLUMN_NULLABLE_TO_NOT_NEED_DEFAULT

    • 不能使用enum類型(建議用tinyintchar代替):COLUMN_FORBID_USE_ENUM_TYPE

    • 字段禁用ZEROFILL屬性:COLUMN_DATA_TYPE_FORBID_ZEROFILL

    索引屬性

    • CREATE TABLE

    • ALTER TABLE

    • 索引需要設(shè)置名字:INDEX_MUST_HAVE_CLEARLY_NAME

    • 限制Unique索引名格式:UNIQUE_INDEX_NAME_PATTERN

    • 限制普通索引名格式:COMMON_INDEX_NAME_PATTERN

    • 限制單個(gè)索引包含列的個(gè)數(shù):INDEX_LIMIT_CONTAINS_COLUMNS

    • 限制主鍵包含列的個(gè)數(shù):PRIMARY_LIMIT_CONTAINS_COLUMNS

    • 限制主鍵列類型:PRIMARY_LIMIT_COLUMN_DATA_TYPE

    • 限制修改表刪除主鍵:ALTER_TABLE_FORBID_DROP_PRIMARY

    • 修改表禁止刪除索引:ALTER_TABLE_FORBID_DROP_INDEX

    數(shù)據(jù)查詢

    檢測(cè)項(xiàng)

    適用的SQL語句

    規(guī)則名稱與規(guī)則標(biāo)識(shí)

    SELECT

    • SELECT

    • INSERT SELECT

    • 子查詢(嵌套在UPDATEDELETE中)

    • SELECT語句建議指定WHERE條件:SELECT_SUGGEST_ASSIGN_WHERE

    • SELECT語句不建議使用ORDER BY RAND():SELECT_FORBID_USE_ORDER_BY_RAND

    • SELECT語句不建議對(duì)常量進(jìn)行GROUP BY:SELECT_FORBID_GROUP_BY_CONST

    • SELECT語句不建議對(duì)常量進(jìn)行ORDER BY:SELECT_FORBID_ORDER_BY_CONST

    • SELECT語句不建議對(duì)不同的表GROUP BYORDER BY:SELECT_FORBID_GROUP_ORDER_BY_DISTINCT_TABLE

    • SELECT語句不建議ORDER BY多個(gè)字段使用不同方向排序:SELECT_FORBID_ORDER_BY_MULTI_COLUMN_RANK

    • SELECT語句不建議GROUP BYORDER BY表達(dá)式或函數(shù):SELECT_FORBID_GROUP_ORDER_BY_EXPR_OR_FUNCTION

    • SELECT語句不建議使用union:SELECT_FORBID_USE_UNION

    • SELECT語句限制多表關(guān)聯(lián)的數(shù)量:SELECT_LIMIT_TABLE_JOIN_COUNT

    • SELECT語句限制LIMIToffset大小:SELECT_CONFINE_LIMIT_MAX_OFFSET

    • SELECT語句不建議使用HAVING子句:SELECT_FORBID_USE_HAVING

    WHERE條件

    包含WHERE條件子句的SELECTUPDATEDELETEINSERT SELECT語句。

    • WHERE條件中不建議索引字段包含數(shù)學(xué)運(yùn)算或函數(shù)運(yùn)算:WHERE_FORBID_INDEX_COLUMN_HAS_MATH

    • WHERE條件中不建議使用前通配符查找:WHERE_FORBID_BEFORE_WILDCARD_SEARCH

    • WHERE條件中檢測(cè)沒有通配符的LIKE語句:WHERE_CHECK_LIKE_HAS_NOT_WILDCARD

    • WHERE條件中不建議使用反向查詢(not in/ not like):WHERE_FORBID_USE_REVERSE_SEARCH

    • WHERE條件中限制IN子句包含元素個(gè)數(shù):WHERE_LIMIT_IN_ITEM_MAX_COUNT

    • WHERE條件中檢測(cè)字段是否存在隱式類型轉(zhuǎn)換:WHERE_CHECK_COLUMN_IMPLICIT_TYPE_CONVERSION

    • WHERE條件中檢測(cè)是否通過OR操作符連接過濾條件:WHERE_CHECK_OR_LINK_CONDITION

    數(shù)據(jù)變更

    檢測(cè)項(xiàng)

    適用的SQL語句

    規(guī)則名稱與規(guī)則標(biāo)識(shí)

    插入數(shù)據(jù)

    • INSERT SELECT

    • INSERT [IGNORE]

    • REPLACE

    • 插入語句建議指定INSERT字段列表:ASSIGN_INSERT_COLUMN_NAME_LIST

    • 插入語句中INSERT字段名不能重復(fù):INSERT_COLUMN_NAME_FORBID_DUPLICATE

    • 插入語句不能為NOT NULL列插入NULL值:NOT_NULL_COLUMN_FORBID_INSERT_NULL

    • 插入語句中INSERT字段列表要和值列表匹配:INSERT_COLUMN_MUST_MATCH_VALUES

    • 插入語句限制一條INSERT VALUES的總行數(shù):LIMIT_INSERT_VALUES_TOTAL_ROWS

    • 插入語句檢測(cè)INSERT的表或字段是否存在:INSERT_CHECK_TABLE_COLUMN_EXISTS

    • 插入語句不建議使用SYSDATA()函數(shù):INSERT_FORBID_USE_SYSDATE_FUNCTION

    修改、刪除數(shù)據(jù)

    • UPDATE

    • DELETE

    • UPDATEDELETE語句限制多表關(guān)聯(lián)的數(shù)量:UPDELETE_LIMIT_TABLE_JOIN_COUNT

    • UPDATEDELETE語句建議指定WHERE條件:UPDELETE_ASSIGN_WHERE_CONDITION

    • UPDATEDELETE語句檢測(cè)WHERE條件是否包含子查詢:UPDELETE_CHECK_WHERE_EXIST_SUB_QUERY

    • UPDATEDELETE語句限制LIMIT數(shù)據(jù)量大小:UPDELETE_CHECK_LIMIT_AFFECTED_ROWS

    • UPDATEDELETE語句檢測(cè)多表關(guān)聯(lián)語法是否完整(如join遺漏on子句):UPDELETE_CHECK_TABLE_JOIN_LOSS_ON

    • UPDATEDELETE語句不能有ORDER BY子句:UPDELETE_FORBID_ORDER_BY

    • UPDATE語句檢測(cè)SET多個(gè)列之間的分隔符(and非法):UPDATE_CHECK_SET_ITEM_DELIMITER

    • UPDATE多表時(shí)檢測(cè)SET的列是否指定表前綴:UPDATE_MULTI_TABLE_CHECK_SET_COLUMN_PREFIX

    • UPDATE語句檢測(cè)涉及表或字段是否存在:UPDATE_CHECK_TABLE_COLUMN_EXIST

    • UPDATE語句檢測(cè)是否更新了主鍵:UPDATE_CHECK_PRIMARY_KEY_CHANGE

    • UPDATE語句檢測(cè)是否更新了唯一鍵:UPDATE_CHECK_UNIQUE_KEY_CHANGE

    • UPDATE語句建議同時(shí)更新表上的“修改時(shí)間”列:UPDATE_ALSO_TO_UPDATE_MODIFY_TIME_COLUMN

    • UPDATE語句不建議更新表上的“創(chuàng)建時(shí)間”列:UPDATE_FORBID_MODIFY_CREATE_TIME_COLUMN

  • SQL優(yōu)化建議支持的檢測(cè)項(xiàng)如下。

    類別

    檢測(cè)點(diǎn)

    • 優(yōu)化主鍵為int類型的表:OPTIMIZE_PRIMARY_IS_INT_TABLE

    • 預(yù)警自增主鍵剩余可用空間風(fēng)險(xiǎn):SNIFFING_AUTO_PRIMARY_REMAIN_SPACE

    • 預(yù)警唯一索引(uk)null值風(fēng)險(xiǎn):SNIFFING_UNIQUE_EXIST_NULL_RISK

    • DDL鎖表或變更失敗預(yù)警與優(yōu)化:ALTER_LOCK_FAIL_SNIFFING_OPTIMIZE

    • SQL注入風(fēng)險(xiǎn)檢測(cè):CHECK_SQL_INJECTION_RISK

    • 強(qiáng)制索引(force index)風(fēng)險(xiǎn)檢測(cè):CHECK_SQL_ASSIGN_FORCE_INDEX

    • 執(zhí)行計(jì)劃索引檢查:SQL_EXPLAIN_INDEX_CHECK

    • DMS索引分析與推薦:DMS_INDEX_ANALYZE_AND_SUGGEST