個人/機敏資料自動化盤點方法概述(上)

作者/林信忠

前言 喧騰一時的個資法除有疑義的第六條與第五十四條外,其餘部分已於101年10月1日起正式實施,各企業組織,特別是擁有大量個資的組織主事者面對個資法的心態也從觀望遲疑逐步調整為主動面對,特別是在施行細則公布之後,總算讓業界有一些可以依循的個資保護措施標準。 施行細則第十二條提到了十一項防止個人資料被竊取、竄改、毀損、滅失或洩漏,採取技術上及組織上的保護措施,這些措施相當程度參考了ISO 27001標準,其中界定個人資料範圍一項為其他措施的基礎,也就是說當組織知道了它所要保護的標的物在哪裡之後,才能遂行風險評估、事故預防等後續控制活動。既然識別出個資標的物範圍/位置那麼的重要,是否有一些能夠快速的找出這些可以識別出個人的資料在哪裡?它的範圍多廣的方法?筆者預定將本系列文章分為兩部分,第一篇針對資源較不足的組織,如中小企業等做介紹;第二篇針對資源相對充足的組織,如金融、電信業者分別提出方法或工具的解決方案。當然前者因花費較少,人為的介入與其技術能力的要求就高於後者,不過方法無所謂的好或壞,端看對組織合不合適,接下來先就對克難式個人/機敏資盤點方法做一介紹。 依作業系統找出個人或機敏資料的存放位置 因中小企業大都資源較為受到侷限,故可能無經費採購同一套工具或產品而能查找出不同作業系統個資或機敏資料的存放位置,此時可採行個別擊破的方法來解決這個問題。 一、Windows系統 在原開放源碼網路弱點檢測工具Nessus中,有一個Windows File Contents Compliance Check外掛(plug-in)程式,可以將其客製化來查找個人或機敏性資料。Nessus並針對如信用卡號等一般(common)類型的機敏資料提供了其對應的audit file,唯部分audit file針對美國的環境所設計,在台灣等華人環境中不一定適用,需針對Nessus所沒有的audit file客製化來調整。如社會安全碼(Social Security Number)號碼用處類似台灣的身分證號,但其編碼規則不同,程式設計師可參考其原有的過濾規則與audit file來做修改。 Nessus在做網域內資料查找時需給予相當的權限(通常為domain admin),Nessus會識別出哪些資料違反了Compliance check?也就是說這些資料與個資或機敏資料的patten吻合(即找到了個資或機敏資料),並可設定顯示出資料的存放路徑。 特別注意的是使用這些功能每年需支付一筆$1,200的費用(包含Nessus全功能的弱點檢測功能與audit files),對於經費不多的中小型企業實可一魚兩吃,既可查找個主機的弱點又可因應法律的要求。這個方法不需要在每台主機植入代理程式(Agent),但是因為透過網路做檢測,網段大小切割好壞等因素對檢測效能的影響就十分重要。 二、非Windows系統(例:Unix,Linux and Mac) 與Windows系統不同,Unix等系統需利用一些內建的command-line tool,如grep來做資料檢查。在grep 參數位置設定如[0-9]{4}\-[0-9]{3}\-[0-9]{3}手機號碼等正規化表示式patten的判斷條件來查找目錄中是否有符合個資或機敏資料的檔案?其語法類似如下: grep -cEHilrs -f patterns /directory/to/search grep常和pipe(|)做搭配,可將檢查的結果導入檔案來作後續的分析使用。讀者可利用網路上許多現成的正規化表示式patten做參考,唯若想做更精確的判斷,建議可閱讀相關專業書籍以對該表示式有透徹的了解,另外這個方法無法判別二進位檔(binary files)的內容。下面將判別是否屬個人資料常用的類似正規化表示式摘要如下: ‧身分證號:[a-zA-Z]\d{9} ‧電話號碼:0\d{1,2}-\d{6,8} ‧中文姓名: [\u4e00-\u9fa5]([\s]?[\u4e00-\u9fa5]){1,5} ‧電子郵件: /^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$/ ‧信用卡號: ([^0-9-]|^)(4[0-9]{3}( |-|)([0-9]{4})( |-|)([0-9]{4})( |-|)([0-9]{4}))([^0-9-]|$) ‧中文住址:^\d{5}|^\d{3})?)(?\D+[縣市])(?\D+?(市區|鎮區|鎮市|[鄉鎮市區]))(?.+ 依資料庫找出個人或機敏資料的存放位置 一般而言,資料庫管理員會知道資料庫中各表格(table)欄位(field)的格式,搭配欄位名稱等資訊可以判定是否存有個資或機敏性資料,但是受資料庫日益龐大或是資料異動頻繁、時間久遠等因素影響,用人工判定的方法益發費時且會有看不到的盲點發生,此時採行人工與自動化兩種方式併行不失為一有用的方法。 針對資料庫的盤點,需要一些script的撰寫技巧輔助,不必拘泥使用哪種script,只要能連進資料庫,將資料庫表格列出,爾後抽取(extract)出該表格各欄位前後的數筆記錄,再將這些紀錄導入某個檔案後利用上面介紹的方法就能判別出資料庫中哪個表格哪個欄位存有個資或機敏資料。其pseudo code邏輯如下: for each database in list_of_databases ‧connect to database ‧get list_of_tables for each table in list_of_tables ‧get first five rows ‧get last five rows ‧write to output file 這個方法好處是不管任何品牌的資料庫管理系統與其存放在哪個地點皆能適用。 單機版或植入代理程式找出個人或機敏資料的存放位置 中華民國資料保護協會於其網站上提供了單機版、電子郵件等兩項個資檢測與個資加密的免費工具(如圖一),唯這些工具僅適用於單機或個人,商用版本需額外付費,有興趣的讀者不妨前去瀏覽。

《圖一》
後記 上述介紹的個資/機敏資料盤點的方法最大特色是免費或只花少量的金錢就能達到目的,可為中小型企業所用,但是此法具正規畫表示式、script等程式設計能力的人工介入就較深。筆者預定於下期文章中對大型企業做一介紹,大型企業除了盤點的外,許多業者希望能同時做到預防資料外洩、稽核檔案存取行為與產生報表等功能。所謂魚與熊掌不能兼得,組織應審慎考量其財務與人力資源限制做出最佳的取捨,而前述方法是因應個資法盤點要求或機敏資料保護的一個不錯的選項。 參考資料 ‧阿維實驗室http://lab.hsdn.net/blog ‧正規表示式之應用識別器http://www.cnblogs.com/hero4china/articles/2041506.html ‧個資法施行細則 ‧中華民國資料保護協會網站http://cdpa.org.tw/http://searchsecurity.techtarget.com/tip/How-to-use-almost-free-tools-to-find-sensitive-data