阿里云最新活動:阿里云WAF&DB體驗交流阿里云安全產品近期因公司在各云產品使用上的一些情況,與阿里云各專家們進行了交流,從中深入的了解了阿里云安全WAF與DB兩款產品,以此分享出來給大家參考。
阿里云MVP 云集 基礎服務技術負責人 張強
第一步:領取阿里云優(yōu)惠券:https://www.aliyun.com/
第二步:在代理商云店下單,即可享受優(yōu)惠:https://partner.aliyun.com/shop/1690271921397837
1、web應用攻擊防護主要作用:防護常見的攻擊手段,如SQL注入攻擊,XSS跨站攻擊等、配置后實時生效;實現原理:根據URL請求參數實時校驗,若發(fā)現URL中帶有SQL或者JS等腳本語句,直接在網絡層攔截。
2、惡意IP懲罰
主要作用:若發(fā)現同一IP在短時間內發(fā)生多次WEB攻擊,自動將該IP拉黑一段時間,目前時間間隔與攻擊次數只能由阿里云配置。
實現原理:結合WEB應用攻擊防護,統(tǒng)計單位時間內的攻擊頻率,實現原理較簡單。
3、CC安全防護
主要作用:基于IP+URL的組合防護策略,如針對某個IP在某個URL單位時間內的請求頻率統(tǒng)計限制,規(guī)則可以自己指定,單目前不支持一個URL多個規(guī)則,阿里云正在優(yōu)化。
實現原理:記錄某個IP在某個URL上單位時間內的請求頻率,跟惡意IP懲罰原理類似。
4、精準訪問控制
主要作用:可對常見的HTTP請求字段進行條件組合,適用于對某個請求有特殊嚴格限制的操作。
實現原理:將HTTP請求中的IP、URL、Referer、Cookie、Header、Content-Type、X-forwarded-For等信息獲取出來,根據用戶指定的規(guī)則觸發(fā)動作,相對于web攻擊、IP懲罰、CC防護來說控制的條件粒度可以更細。
注意入坑:精準訪問控制的匹配規(guī)則是根據列表,從上到下的匹配,若匹配上一條規(guī)則,則按照匹配上的條件來執(zhí)行動作,不會繼續(xù)往下執(zhí)行,所以注意規(guī)則列表中的排列順序;e.g: 如下圖排序,當杭州IP與客服IP訪問注冊驗證碼地址時,若匹配上規(guī)則,照樣被攔截,IP放行將失效。
5、禁封地區(qū)
主要作用:禁止某個地區(qū)的IP請求訪問。
實現原理:根據IP段來限制請求訪問,實現原理比較簡單。
6、網頁防篡改
主要作用:鎖定頁面內容,防止人員手動誤改或者黑客入侵后篡改,多應用于.org等類似政府網站。
實現原理:將設置的某個頁面緩存處理。在設置的時間內返回固定的內容,實現比較簡單。
7、數據風控
主要作用:識別黑白請求,如批量注冊,批量刷某個接口等,防止非法跳躍式請求,目前數據風控只支持H5或網頁端。
實現原理:在HTML頁面插入token,正常請求鏈路都會有token附加信息,并且有效期只有一次,若直接跳躍請求,沒有token信息或者token信息失效則斷定為惡意請求;如A---B,從A正常跳轉到B是帶有token信息的,直接訪問到B則鏈路上不會有token信息。
8、防敏感信息泄露
主要作用:避免重要信息泄露,如銀行卡、身份證、手機號碼等,針對返回報文信息做攔截處理。
實現原理:針對返回報文進行識別處理,若返回的接口不在白名單,并且有明感信息,則將報文中明感信息剔除,可能對前端樣式內容等產生影響。
DB:
DB這塊主要咨詢了阿里云2個產品與RDS日常使用中遇到問題,包括注意點、排查思路、解決方案、SQL索引相關等,分開來介紹。
DB產品這塊阿里云官方介紹有,但是寫的比較商業(yè)化,按照個人的理解與阿里云的介紹來描述下:
1)、POLADB
阿里云自研的一款DB,其核心原理是一寫多讀、分布式存儲、看下阿里云的設計架構圖:
采用計算與存儲分離的設計理念,滿足公有云計算環(huán)境下用戶業(yè)務彈性擴展的剛性需求。數據庫的計算節(jié)點(DB Server)僅存儲元數據,而將數據文件、Redo Log等存儲于遠端的存儲節(jié)點(Chunk Server)。各計算節(jié)點之間僅需同步Redo Log相關的元數據信息,極大降低了主實例和只讀實例間的延遲,而且在主實例故障時,只讀實例可以快速切換為主服務器,由于是分布式存儲,是的I/O不在是瓶頸點,支持上百TB級別數據。
PS:同開源MYSQL相比,擁有高性能(讀寫分離),阿里云號稱比開源MYSQL性能提高6倍,100%兼容原生態(tài)MYSQL,支持數據量存儲的同時保證了讀寫性能,主要用戶大數據下OLTP類型的等值計算。
2、HybridDB
設計思想就是鏈路、計算和存儲分離,實現松耦合分布式架構的HTAP數據庫云服務,架構圖如下:
可以這么來理解,大數據下分庫分表的封裝,類似云集現有的訂單sharding庫,只不過阿里云做了更全面的封裝,如面對用戶的只有一個庫,其實內部是做了路由的,用戶只要在創(chuàng)建表的時候指定路由規(guī)則即可,后續(xù)操作跟單臺MYSQL完全一樣,不用管路由算法,另外封裝了多庫連表查詢,如where后面跟的是時間區(qū)間,數據散落在不同的分片時候,鏈路引擎會將不同節(jié)點的數據匯總后呈現給用戶,讓用戶無感知的操作,可以基于一份數據OLTP與OLAP混合處理;由于面對用戶的只是個proxy,所以可以做到無縫隙的動態(tài)擴容;了解的過程中可以拿POLADB與云集的order Sharding進行對比理解。
第一步:領取阿里云優(yōu)惠券:https://www.aliyun.com/
第二步:在代理商云店下單,即可享受優(yōu)惠:https://partner.aliyun.com/shop/1690271921397837
PS:雖然封裝完美,但也有自身痛點,總結一句話叫:上云容易下云難,下云后繼續(xù)使用阿里云的POLADB能頂住,但如果自建MYSQL,數據層需要大改,并且自己寫路由規(guī)則。
3、RDS使用問題與解決
這塊描述下日常使用RDS需要注意的事項:
1、高可用切換原理:現將Master置為readOnly,Slave完成binlog同步與數據遷移后,Slave成為Master,Master停用,如果RDS前有掛proxy,閃短時間30內,若沒掛,閃短時間約為10分鐘左右,閃短期間數據庫狀態(tài)為readOnly狀態(tài)。
2、設置 loose_max_statement_time:超時時間指的是SQL的執(zhí)行處理時間,不包含排隊等待時間。
3、若出現KILL不掉某種SQL進程時候(批量來源),可以使用SQL限流來處理,以免出現一條SQL拖垮整庫的情況。
SQL Filter
SET GLOBAL sql_select_filter = '+,{CONC},KEY1~KEY2~KEY3.....';e.g.
SET GLOBAL sql_select_filter = '+,10,a=1~b=2';作用:
對同時包含 a=1 和 b=2 兩個關鍵字的SQL,限制最高并發(fā)線程為10;注意:一般只對select進行限制如慢SQL,競爭鎖等,注意關鍵字,如where等。
PS:阿里云RDS封裝后的功能,原生態(tài)開源MYSQL沒有此功能。
4、聯合索引創(chuàng)建的優(yōu)先順序:如果出現有表需要建立聯合索引的情況,可以通入如下方式來排列優(yōu)先級方法一:
show index from `t_user` --查看t_user表索引select count(DISTINCT(`user_id`)) /count(*) from t_user;--若等于1,說明user_id建立所以的優(yōu)先級最高select count(DISTINCT(concat(`user_name` ,`user_id`))) /count(*) from t_user; --哪個值越接近1,則優(yōu)先級越高,從左到右排列。
方法二:
5、count(*) VS count(X):總結 count(expression)比count(*)和count(column),如果沒有特殊業(yè)務含義的話,可以優(yōu)先使用,具體可參考阿里云測試說明https://yq.aliyun.com/articles/379946?spm=a2c4e.11155435.0.0.16813312gMppl06、補天臨時參數設置:
1、 rds_max_tmp_disk_space:控制 MySQL 能夠使用的臨時文件的大小,適用于一個 SQL 語句就消耗掉整個數據庫的磁盤空間;2、tokudb_buffer_pool_ratio:控制 TokuDB 引擎能夠使用的 buffer 內存大小,適用于選擇了 tokudb 作為存儲引擎的場景;3、loose_max_statement_time:控制單個 SQL 語句的最長執(zhí)行時間,適用于控制數據庫中的慢 SQL 數量;4、rds_threads_running_high_watermark:控制 MySQL 并發(fā)的查詢數目,常用于秒殺場景的業(yè)務;
第一步:領取阿里云優(yōu)惠券:https://www.aliyun.com/
第二步:在代理商云店下單,即可享受優(yōu)惠:https://partner.aliyun.com/shop/1690271921397837
