《Oracle MySQL云服務(wù)上的MySQL企業(yè)版審計(jì)》要點(diǎn):
本文介紹了Oracle MySQL云服務(wù)上的MySQL企業(yè)版審計(jì),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
Oracle Cloud Service似乎是唯一個(gè)即使你只提交了創(chuàng)建RDS服務(wù)的請(qǐng)求,也會(huì)自動(dòng)幫你創(chuàng)建一個(gè)虛擬主機(jī),并且提供主機(jī)登錄權(quán)限的服務(wù)提供商,也許這就是Oracle一直在宣稱的IaaS+PaaS的整合.
在創(chuàng)建MySQL Cloud Service時(shí),會(huì)要求提供一個(gè)SSH登錄密鑰,所有的Oracle云服務(wù)主機(jī)登錄用戶都是opc,因此在服務(wù)創(chuàng)建完畢,收到通知郵件之后,就可以通過以下命令登錄到云主機(jī)上.
ssh -i id_rsa_oracle_cloud_enmotech opc@your_host_ip
登錄到主機(jī)以后,屏幕歡迎詞是個(gè)小驚喜,Oracle貼心得顯示了MySQL運(yùn)行狀態(tài)和存儲(chǔ)使用量的提示.
在比較了多方的RDS之后,Oracle MySQL Cloud Service確實(shí)如一直以來宣傳的那樣,提供了最多的安全選件功能,如果我們用MySQL Workbench登錄到數(shù)據(jù)庫中,在Server Status頁面可以看到:SSL連接,PAM驗(yàn)證,密碼校驗(yàn),數(shù)據(jù)庫審計(jì)等多種安全功能全部是開啟的.
而與之相比,阿里云MySQL RDS提供的安全功能就少的可憐了.說少不合適,是一項(xiàng)安全功能都沒開啟.
Oracle對(duì)于數(shù)據(jù)庫安全性的看重確實(shí)超越了大多數(shù)數(shù)據(jù)庫提供商,而這也帶來了一些小麻煩.
在創(chuàng)建MySQL云服務(wù)的時(shí)候,需要指定數(shù)據(jù)庫root用戶的密碼,這個(gè)密碼有比較強(qiáng)的安全要求,需要有大寫、小寫英文字母,有數(shù)字,同時(shí)還需要有特殊字符(比如#).因此在后續(xù)創(chuàng)建Login Path時(shí),在mysql_config_editor命令提示輸入密碼的時(shí)候,需要在密碼前后加上雙引號(hào)(比如”Passw#rd”),否則會(huì)一直出現(xiàn)拒絕訪問的提示.
opc用戶沒有辦法直接登錄MySQL,需要切換到oracle用戶
使用密碼直接登錄是沒有問題的
創(chuàng)建Login Path,仍然輸入上述一樣的密碼
[oracle@mysql-cloud-mysql-1 ~]$ mysql_config_editor set --host=localhost - -user=root --password Enter password:
檢查確認(rèn)Login Path已經(jīng)創(chuàng)建成功
直接登錄報(bào)錯(cuò)
[oracle@mysql-cloud-mysql-1 ~]$ mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在密碼前后加上雙引號(hào)重新創(chuàng)建Login Path
再次登錄,成功
在進(jìn)行Audit功能的檢查之前,對(duì)于默認(rèn)的mysql命令行提示只有mysql> 這樣簡(jiǎn)陋的顯示不能忍,要加上當(dāng)前登錄的用戶和數(shù)據(jù)庫名稱.在oracle用戶的.my.cnf下增加以下行.
[mysql] prompt=\\u@\\h [\\d]>\\_ 再次登錄,mysql命令行的提示就比較順眼了.接下來進(jìn)入本文的正題,在Oracle MySQL Cloud Service中默認(rèn)是如何設(shè)置Audit的? 首先先檢查一下audit_log的相關(guān)參數(shù)設(shè)置.
那么audit_log_file=audit.log表示仍然使用了默認(rèn)的名字,到MySQL的數(shù)據(jù)文件目錄中檢查一下audit.log文件的存在.
![]()
這里可以看到總共的audit日志已經(jīng)有1.9GB之大,在第一個(gè)audit.log達(dá)到audit_log_rotate_on_size參數(shù)設(shè)置的大小之后,自動(dòng)切換成了新的audit.log.
題外話,之所以有這么巨大的audit.log,是由于啟用了MySQL Enterprise Monitor,不斷地記錄了Monitor進(jìn)程的登錄和退出.
為了方便后面觀察audit.log,先將Monitor停止.
接下來進(jìn)行一些常規(guī)操作,并觀察audit.log文件的輸出內(nèi)容.
1. 用root用戶登錄,在audit文件中顯示一條Connect類型的記錄.TIMESTAMP記錄了時(shí)間,USER標(biāo)簽記錄了登錄的用戶,HOST標(biāo)簽記錄了登錄的機(jī)器,COMMAND_CLASS為connect.
2. 嘗試直接CTAS一張測(cè)試表,在enforce_gtid_consistency=ON時(shí)會(huì)報(bào)1786錯(cuò)誤,這是GTID特性決定的.
在audit.log中也記錄下了這次報(bào)錯(cuò)的操作,STATUS標(biāo)簽為錯(cuò)誤代碼1786,STATUS_CODE標(biāo)簽值為1表示這條SQL沒有成功執(zhí)行,SQLTEXT標(biāo)簽記錄了整個(gè)SQL語句.
3. 下面的三條語句,select,create table,insert均沒有在audit.log中記錄下來.
這樣的行為是由audit_log_statement_policy=ERRORS參數(shù)決定的,默認(rèn)只記錄報(bào)錯(cuò)的SQL,而不會(huì)記錄所有的執(zhí)行語句.
4. 將audit_log_statement_policy參數(shù)修改為ALL,再執(zhí)行同樣的select語句.
可以發(fā)現(xiàn)audit.log中已經(jīng)有記錄了.
結(jié)論
在Oracle MySQL Cloud Service中默認(rèn)會(huì)啟動(dòng)MySQL Enterprise Audit組件,并且設(shè)置即記錄用戶登錄又記錄執(zhí)行語句(audit_log_policy=ALL),用戶登錄情況則不管登錄成功還是失敗每次都記錄(audit_log_connection_policy=ALL),而執(zhí)行語句則只記錄執(zhí)行失敗的語句(audit_log_statement_policy=ERRORS).
作者:張樂奕
文章來自微信公眾號(hào):數(shù)據(jù)和云
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4217.html