在生產環境中,強化docker容器的一種方法就是使它們不可變,也就是唯讀。安全地執行容器的其他方法還包括最小化受攻擊面和應用linux安全過程,標準linux安全過程和針對容器環境的特定過程都要應用。
\u0026#xd;\n\u0026#xd;\n
在啟動容器時傳入--read-only標記就可以在唯讀模式下執行它。這可以防止任何程序寫入檔案系統。任何試圖寫入的動作都會導致錯誤。執行這種不可變的基礎設施也與其他軟體部署流水線的最佳實踐相吻合。
\u0026#xd;\n\u0026#xd;\n
儘管不可變性可以阻止任何惡意指令碼的執行,可以禁止通過在容器裡執行的其他軟體暴露出來的漏洞而引起的改動。但是在現實生產環境中,這種模式又是不是適用於應用程式呢?比如,要產生的日誌檔案和要使用資料庫的應用程式就需要可寫性。
\u0026#xd;\n\u0026#xd;\n
寫日誌的乙個可能的解決方案可以是使用乙個集中的日誌系統,比如elasticsearch/logstash/kibana(elk),這樣所有的日誌都被收集在乙個中心節點,可能是在另乙個容器中,就不是使用者可以直接訪問的了。另一種替代的方案是在啟動容器時,通過使用--log-driver標記將日誌匯出到容器之外。對於那些需要對/tmp之類的臨時目錄有寫入許可權的應用程式,一種解決辦法是在容器裡為這些目錄載入乙個臨時的檔案系統。
\u0026#xd;\n\u0026#xd;\n
終端使用者不能直接訪問資料庫,所以風險較低。然而,這並不排除受到攻擊的可能,除非面對使用者的應用程式得到了強化。
\u0026#xd;\n\u0026#xd;\n
在不可避免地要有乙個可寫的檔案系統的情況下,docker提供了審計和變化的回滾功能。在docker容器裡的檔案系統是作為一系列層的堆疊。當建立乙個新容器時,將在頂部新增乙個新層,該層可以寫入。docker儲存驅動程式隱藏了這些細節,並將它作為乙個普通的檔案系統交付給使用者。對正在執行的容器的寫入將寫入此新層。這通常被稱為寫時拷貝(copy-on-write,cow)。
\u0026#xd;\n\u0026#xd;\n
在docker容器裡很容易檢測到配置漂移或預期的配置變更。「docker diff」命令可以顯示對檔案系統的更改——無論更改操作是檔案新增、刪除還是修改。
\u0026#xd;\n\u0026#xd;\n
除了在可能的情況下執行乙個唯讀容器,我們還提出以下建議,以確保在生產環境中容器的安全:
\u0026#xd;\n\u0026#xd;\n
在生產環境中安全地執行Docker容器
在生產環境中,強化docker容器的一種方法就是使它們不可變,也就是唯讀。安全地執行容器的其他方法還包括最小化受攻擊面和應用linux安全過程,標準linux安全過程和針對容器環境的特定過程都要應用。在啟動容器時傳入 read only標記就可以在唯讀模式下執行它。這可以防止任何程序寫入檔案系統。任...
在生產環境中安全地執行Docker容器
在生產環境中,強化docker容器的一種方法就是使它們不可變,也就是唯讀。安全地執行容器的其他方法還包括最小化受攻擊面和應用linux安全過程,標準linux安全過程和針對容器環境的特定過程都要應用。在啟動容器時傳入 read only標記就可以在唯讀模式下執行它。這可以防止任何程序寫入檔案系統。任...
在生產環境中安全地執行Docker容器
在生產環境中,強化docker容器的一種方法就是使它們不可變,也就是唯讀。安全地執行容器的其他方法還包括最小化受攻擊面和應用linux安全過程,標準linux安全過程和針對容器環境的特定過程都要應用。在啟動容器時傳入 read only標記就可以在唯讀模式下執行它。這可以防止任何程序寫入檔案系統。任...