- SQL Server 安全總體架構簡介
-
資訊人的安全挑戰
- 緊急救援案例經驗分析與處理方式
- 政府組態基準
資訊人的安全挑戰
當資訊技術越來越深入生活,安全也將隨之越來越重要。但我們卻常常忽略它,直到發生問題。 例如,現今物聯網(Internet of Things IoT)的概念甚囂塵上,大家廣泛宣傳其將會為大家帶來的便利性, 包含萬物聯網後,無所不在的溝通、監控、交換、協同,創造出無限的智慧型自動化, 但甚少討論其所可能造成的安全困境。例如:
- 因為物聯網的裝置多用來執行特殊功能的控制行為,這些裝置的製造商便將重心投入特殊功能而不重視安全, 再者,他們的專業也是特殊功能的應用,而非安全,為裝置安全投入的研發成本比例相對稀少。
- 為了減低成本並適用於特定場合,這些裝置往往都非常輕巧,不跑防毒軟體,不執行軟體更新, 也難有完整的遠端管理。換句話說,有了安全漏洞,一旦被利用了,這些物聯網將永遠成為攻擊者的跳板。
- 人們將陷於無所不在的攻擊與被攻擊,你的裝置是受命攻擊別人的殭屍,你操控的裝置也正被攻擊著。 例如,芭比娃娃玩具正在教你的小朋友做壞事,換句話說,鬼娃出現了,但控制者是網路上的陰魂。 不只是電腦內的檔案被鎖住,就連汽車也被鎖住了,要付款給勒索者才能開車, 或是你的隨身胰島素注射器將置你於死地,而這些攻擊來自附近的冰箱、電視與影音播放器。
- 攻擊形成產業鏈,花多少錢買多少武器,例如買特定用途的個資、某區的監控視訊、鎖住那些汽車、 派出那些鬼娃。現在有點扯,但簡化、標準化、資料庫化、商業化,讓攻擊隨手可得是進行式。
-
企業、產業、標準組織乃至於政府機關在安全學習上都是緩慢的,如同汽車工業從產出第一台汽車的百年後,
才開始注重車子對人身的安全防護。現今行業法規如醫療、汽車已經開始重視規範,
但要普及至物聯網的製造商還有段時間差。畢竟物聯網的應用範圍無所不在,我們很難要求現下尚沒有規模的小廠,
花大成本預算去規劃與目標功能可能無關、甚至傷害功能的安全架構。
就以熟知的SQL Server而言,其1-0版於1989年面市,但大幅強化安全性則是在2005年推出的SQL Server 2005版, 換句話說,開始注重安全已經是16年後的事了。然而廣泛流行的SQL 2000版本至今仍到處都是, 且微軟已經放棄維護,其安全漏洞將永遠放在那,就看使用者有沒有透過其他的安全機制來保護。 -
安全與方便互斥,就算製造商與平台商已經設想到安全部份,但使用者卻可能為了方便而廢棄安全設定不用,
甚至破解掉原先的安全機制。一人為了自己的便利性,或是不得已而疲勞駕駛、超速、闖紅燈、酒駕、
開危險的老舊車輛…等,而誤傷了別人,但傷害有限。個人為了某種原因讓網路防護上產生漏洞,
就有可能引發大規模的網路災難。
要知,人永遠是安全的最大漏洞,因為人有七情六慾、有高低潮,會犯錯, 而物聯網最終是將物和人廣泛地連在一起,安全漏洞無可避免。 - 攻擊不是不發生,而是遲早來到,就像有了汽車就很難避免車禍一樣。 未來一次肇禍的傷亡是以網路設備連線的數量與邊界來計,而非單一車禍事件。
以上僅是舉個例子,測試當你看到功能時,是否會想到安全性的問題。 IT職涯浩瀚,隔行隔山。我們當下或許不會從事以安全為主的相關工作, 企業組織的安全執掌、法規、流程、執行…等,都與自己無關,一個齒輪螺絲,哪知整體。 但IT個人仍要在本職學能上重視安全,例如:
- 熟悉架構上,自己工作領域內的認證、授權、加密、監控、簽章、稽核、備援、更新、檢測, 乃至於與安全產品的整合。
- 安全幾乎與其它的架構需求都相衝,因此,談系統安全往往是權衡整體架構的優先順序, 團隊成員間協商的結果。
- 程式開發要做安全掃描與測試,不管是自己開發還是協力廠商開發的。
- 撰寫程式、架設平台或資料庫管理都要注重已知的安全準則。
- 安全的基礎設施,不管是網路、作業系統,還是各項軟硬體,都要有「預設設定以安全優先的概念」。
我們做的任何事都應基於安全,為避免安全事件而引發災難,我們需有安全縱深,多層次隔絕, 有因應措施減少傷害。安全是無時無刻的警醒,要付出高昂代價換取。討論安全漏洞時, 需要跨團隊地集思廣益才能舉一反三。讓熟悉不同技術的工程師體會到彼此未想到的黑洞有多大, 掉入的深淵將多深,而需要架設的基礎安全網為何。
然而,雖知要永遠地警醒,但若有大量的系統,想要一視同仁地保護,所需成本太高。因此, 必須先定義安全等級,將系統歸屬到不同的等級,再按實體或虛擬地分開伺服器、服務、應用程式、 資料與使用者。接著,依等級制定安全區域。若程式可以從低安全性區域存取到高安全性區域, 而低安全性區域在稽核、授權乃至於其他各種防護機制都不如高安全性區域嚴謹, 則低安全性的區域即可能成為攻擊高安全性區域的跳板。
而資料從高安全性流向低安全性也要小心,因為高安全性區域的資料比較會要求加密、遮罩, 以及稽核、授權…等,但低安全性區域則無,易造成資料外洩。上述情境都需要小心規劃, 並常常檢討可能的漏洞。
此外,一個人一手遮天容易,但要讓一群人圓謊卻很困難。透過人員的分權, 彼此監控下的協同作業較能維護安全。例如,加密應該是程式做,資料庫管理師既看不到原始資料, 也無法解密,只能授權可使用資料的人。程式設計師雖然知道如何解密,但無權存取正式系統, 因此,也看不到資料。操作人員雖然可以看到明碼,但受限於程式與資料庫的授權, 只能看到業務所需的資料。其他類似的例子如:成立專責的安全團隊1 , 不要讓管理者自己授權自己的安全或設定密碼。跨組織的安全會議劃分權責。 稽核存放的系統與一般管理者管理的系統分開…等。安全代表著時時警醒,隨時監控, 上修補程式,關注資訊新聞、學習新技術…等,都不可或缺,最好要有專人負責。 並透過工具程式,掃描系統潛在的漏洞。
預防重於治療,早期規劃的成本一般小於事後補救的花費。透過專門的程式、 服務與軟/硬體維護安全有其必要,畢竟要人時時警醒去看所有環節是辦不到的, 尤其不重要的系統與環境,例如,測試環境,我們就曾碰到測試環境被SQL Inject塞了大量Agent Job, 執行不明的行為,但因為沒人對測試環境做安全監控,一段時間後才被發現。 透過程式自動偵測、掃描、紀錄、分析,才能較快發現沒人重視的角落有著風險。
而資訊安全是企業、用戶,乃至於每個人的事。系統有任一漏洞,任何人不警醒,危機就存在, 所以對於普通用戶的安全教育與安全宣導都變得需要。
最後,雖然在此高聲疾呼安全,但要小心安全與架構面的其他需求是互斥的,越安全, 則高可用性、易用性、可管理、整合、效能、擴充…等,都將受損。換句話說, 講求安全的系統往往較沒有效率、不好用、發生災難時不容易還原、不容易整合、難於管理…, 如何折衷妥協,則是設計者的藝術了。
1 在相同團隊中安插一個人負責安全,而稽核同團隊的其他人,並要求他人遵守該成員所定的規範, 這不可能落實,因為是自己搬石頭砸自己的腳。