CyberArk Glossary >

什麼是開發維運?

開發維運(DevOps)一詞形容將軟體開發(Dev)與IT營運(Ops)結合起來並提高組織快速交付應用程式與服務之能力的一系列工作理念、實踐做法及工具。

新的應用程式功能可透過開發維運方法頻繁交付。高彈性的雲端 基礎設施可適應自動擴縮過程中的需求激增情況,根據需要建立新的運算資源(虛擬機器或容器)及部署更多應用程式實例。組織只需為所需的運算用量付費。

世界各地許多企業組織皆轉向靈活的開發維運方法,以消除功能及管理孤島,並將應變管理、組態配置管理及部署流程自動化。開發維運最終可協助組織縮短產品上市時間、提高產品品質、排除效率不彰、加快數位化轉型 及更快回應客戶的需求。

什麼是CI/CD?

開發維運將開發與營運這兩項功能合併並推動二者之間的更多協力合作,可縮短開發週期,使其與業務目標更緊密一致。利用持續整合(CI),開發人員每天可多次將程式碼更改合併至儲存庫,並將更改自動整合至新版本。持續交付(CD)的做法要求程式碼隨時候命,以便隨時點一下按鈕即可部署至生產流程。

開發維運的安全挑戰

儘管開發維運有許多優點,它也會帶來新的風險及文化變化,進而產生傳統安全管理解決方案與實踐做法通常無法解決的安全挑戰。這些傳統做法通常太慢、太昂貴或太複雜,無法支援自動軟體交付及部署至雲端或作為容器操作。這些挑戰包括:

開發維運使用的特權憑證是網路攻擊者的目標。 開發維運環境中最大的安全挑戰之一,便是 特權存取管理。開發維運流程需使用功能非常強大且極易受網路攻擊的人類與機器特權憑證。

  • 人類存取:透過高速流程,開發維運執行人員需要跨越開發及生產環境的特權存取。
  • 機器存取:透過自動化流程,機器及工具需要升級的特權(或許可權限),方可在無人類參與的情況下存取資源。例子包括:
    • 自動化工具:Ansible、Puppet和Chef
    • CI/CD工具:Jenkins、Azure DevOps和Bamboo
    • 容器管理工具:Docker和Linux容器(LXC)
    • 容器編排工具:Kubernetes、Red Hat OpenShift、Pivotal、Cloud Foundry

Tier Zero資產(例如Ansible和Jenkins)可存取其他許多工具使用的憑證。

攻擊者獲得特權憑證之後,即可充分存取開發維運流程、敏感資料庫,甚至存取組織的整個雲端。攻擊者已發現這一點,因此更積極尋找特權憑證,包括密碼、存取密鑰、SSH密鑰和令牌,以及其他類型的金鑰,包括證書、加密密鑰及API密鑰等。攻擊者可侵佔開發維運環境內的不安全憑證,進而導致挖礦劫持、資料外洩及智慧財產遭受破壞。

開發人員求快、不求安全。開發維運團隊的目標在於更快編寫出程式碼,因此經常採取安全團隊權限之外的不安全做法,包括在應用程式及組態檔案內留下嵌入式金鑰及憑證、在未充份仔細檢查之下重新使用第三方程式碼、使用新工具但未評估其潛在的安全問題、以及未充份保護開發維運工具與基礎設施。

以工具為中心的金鑰管理方法會產生安全漏洞。開發維運工具通常已內建一些金鑰保護功能。但是這些功能無法支援工具、雲端與平台之間的相互運作或安全共享金鑰。開發維運團隊經常結合個別工具的內建功能來管理金鑰。由於無法以一致的方式監控及管理金鑰,此做法可能難以為金鑰提供足夠的保護。

在您組織內實行開發維運安全措施的步驟

組織為實現大規模開發維運安全性、同時解決特權存取風險並與開發維運文化及方法保持一致,經常採取以下步驟:

  • 將安全政策實例化為程式碼。開發維運的基礎概化便是「基礎設施即程式碼」(有時稱為不可變基礎設施),以此取代手動管理及配置伺服器與軟體的傳統模型。將這個概念應用至資安(以程式碼形式實例化及管理安全政策),可讓組織省去人力密集且容易出錯的組態配置過程。
  • 確立職責分離。 開發維運團隊應明確定義不同的角色與職責:
    • 開發人員應專注於建立應用程式來推動業務成果。
    • 營運人員應專注於提供可靠且可擴縮的基礎設施。
    • 安全人員應專注於保護資產與數據及降低風險。

每個團隊之間的互動可編寫成書面安全政策。例如,開發人員設下安全政策,聲明其應用程式或服務需要哪些特權。然後,安全人員檢查及核准安全政策,營運人員確保應用程式的部署按照預期進行。

  • 將安全性整合至CI/CD的實踐運作。在開發維運領域,安全問題經常被認為是一個後續考量事項,因此往往太晚執行(如有執行)。然後,為了解決安全漏洞可能必須臨時進行變更,進而導致產品延遲發佈。具前瞻性的企業組織使用 Kanban(看板) 等先進的工作流程排程與管理工具建立流程模型、加速開發及消除低效率。此外,安全團隊越來越常將應用程式分解成微服務,以簡化安全審查及變更。
  • 採取積極的安全做法。 應當在整個應用程式生命週期內建立強大的安全實踐做法 ,以減少安全漏洞、改善安全態勢及降低風險。良好的開發維運安全衛生習慣包括:
    • 全面性解決安全需求及潛在安全漏洞,因為攻擊者可能只需利用一個漏洞即可執行其任務。
    • 降低構建自動化工具內的特權集中度,並確保程式碼儲存庫的金鑰未外洩。
    • 安全、高度可用的保管庫內維護機器與人員使用的金鑰(密碼、證書、API密鑰、令牌和SSH密鑰)—在原始碼、開發人員筆電及用戶可存取的儲存系統之外。定期輪換金鑰,將外洩風險降至最低。
    • 運用 最小特權原則,確保機器與人員只能存取他們絕對需要的資源。
    • 為正常使用模式建立基線來偵測異常,使惡意用戶變得可追溯而無法竊取憑證。
    • 透過記錄憑證的使用方式建立歸責制度。例如對於人類用戶,可考慮按鍵動作或側錄連線登入。
    • 為每台機器提供各自專屬的身份,以便審核及監控其金鑰存取。
    • 執行安全漏洞掃描及滲透測試,以改進網路安全態勢。
    • 對開發人員進行安全威脅及最佳實踐做法的教育訓練。
    • 促進安全團隊與開發團隊之間的緊密合作與協作
  • 自動化安全流程。 開發維運利用自動化來加快應用程式生命週期管理及消除人類延誤。同樣的,開發維運安全措施應利用自動化儘可能減少人機互動及手動介入。例如自動輪換金鑰(密碼、密鑰、證書)讓組織得以預防攻擊者長時間存取開發維運工具、存取密鑰或系統。自動化安全程序也可在偵測到資料外洩時被動使用。例如在發現安全漏洞之後自動終止特權連線及自動轉換憑證。

瞭解有關開發維運安全性的更多資訊

其他詞匯