參考來源:https://www.prplbx.com/resources/blog/docker-part1/
儘管 Docker 很受歡迎,仍有許多軟體開發人員避免使用它,因為他們認為 docker 安全性很弱。 Docker 容器包括執行檔、設定檔、相關依賴項、主機環境和網路配置。其中每一個都是淺在的弱點。例如舊函式庫中的漏洞會對整個 docker 容器構成威脅。由於 Docker 容器中有許多不同的技術,安全管理也會變得很複雜。以下為 Docker 的安全實踐:
58% 的 docker 鏡像是使用 root 權限運行,攻擊者可以透過 root 訪問所有資訊並可以直接控制硬體,因此 docker 中的 process 最好以最小權限創建的使用者執行。例如以下範例:
您應該只從受信任的存儲庫中提取基本 Docker 映像檔,或是檢查 checksums 和數位簽名以驗證鏡像的真實性和完整性。
我們每天都會遇到數百個與作業系統和函式庫相關的 CVE,維持 Docker 鏡像為最新並創建自動化的更新機制很重要。
為測試而開放的連接埠(如 SSH)或尚未確定使用目的的連接埠應在生產環境中關閉。
寫死的(API 密鑰、AWS 憑據等)為攻擊者敞開大門。您的 Docker 映像檔不應包含與任何環境(開發、測試、生產等)相關的任何 hardcoded 的機敏資訊。您應該通過環境變數(使用 -e 選項)或使用秘碼管理器獲取憑據。
有很多簡單易用的 Docker 容器的開源工具掃描工具,它們透過 Common Vulnerabilities and Exposures (CVE)、Center for Internet Security (CIS) 數據庫來檢測。
參考來源:https://www.prplbx.com/resources/blog/docker-part2/
Git: https://github.com/docker/docker-bench-security
由 Docker 官方維護的專案,透過 shell script 或是 container 執行掃描,掃瞄範圍涵蓋 Containerd、Docker Daemon、所有他找的到的 Dockerfile、Image、Container。也可以只選擇掃描 image 和 container 就好。
檢測項目包含:
各個細項都對應一個 CIS Docker 的編號,解決方法可以參考 Tenable 的 CIS Docker。
如果上述檢查太繁瑣,可以透過以下方法挑選特定想要檢查的規則:
另外也可以選擇特定的 image 來掃描:
也可以在產生掃描報告後,印出各個弱點的解決方法的摘要:
InSpec 是 Docker 映像檔的開源測試框架,由 Chef 維護。您可以根據各種標準的 baseline 檢測 Docker 容器的狀態,他們提供的 baseline 有 Linux baseline、CIS docker benchmark、nginx-baseline、ssh-baseline 等,詳細列表可以在這裡找到。
linux baseline 執行後產生的報表主要著重在各個 /etc 目錄中的設定檔的權限,以及建議 Kernel Parameter 的設定值。
另外也可以用以下指令執行 cis docker benchmark,他檢查的規則跟先前使用的 docker-bench-security.sh 一樣,但是輸出訊息量多、比較雜亂。
Trivy 是 Aqua Security 開源專案,用於掃描 docker 映像檔的漏洞,Trivy 還可以掃描目錄和 git repo,它可以在幾分鐘內檢測到 CVE 漏洞。
由上圖可以得知掃描報告列出:linux 系統套件 (apt、bash、libc 等)、程式相依套件(dotnet library、package.json、Pipfile 等) 的漏洞並指出該把函式庫更新到哪個版本才修復該漏洞。其餘 trivy 主要用法:
vuln,config,secret,license
,預設值為 vuln,secret)、(漏洞等級有 UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
,預設為全部):
https://snyk.io/learn/docker-security-scanning/
Snyk 是開發者資安平台,提供 IDE、GitHub、Docker、ACR 等的整合工具,在 Docker 中,Snyk 被整合在 docker scan
中。ACR 整合的文件在這邊,他可以從 snyk 提供的 web 界面查看存放在 ACR 的映像檔的漏洞。
他掃描的弱點大部分來自 CVE。
除了用整合的 docker scan
以外,也可以用 snyk cli 來掃描,掃描結果是一樣的。
Pricing: DockerHub 帳號每個月 10 次免費、Snyk 免費帳號每個月 100 次免費
Powerd by Qualys。
Pricing:https://azure.microsoft.com/zh-tw/pricing/details/defender-for-cloud/
啟用方式:
首先啟用訂用帳戶的 Microsoft Defender for Cloud,然後進入 Microsoft Defender for Cloud,進到 Environment settings -> (Azure > Tenant Root Group > subscription name) -> (Containers 右側 Partial Settings) 啟用 Defender DaemonSet
然後推送任意映像檔到 ACR,等一段時間後即可從 Container registry images should have vulnerability findings resolved 看到掃描報告。
Google 維護的掃描工具,可以掃描 Docker image、依賴套件的 Lock File、sbom (Software Bill of Materials)。
他的預設報告格式是 table 如上圖,另外也可以用 --json
格式。
Docker Bench for Security | InSpec | Trivy | Snyk | Microsoft Defender for Containers | OSV-Scanner | |
---|---|---|---|---|---|---|
掃瞄範圍 | host 稽核、host 設定值、Docker 設定檔、container runtime 設定值 | host 設定值、container runtime 設定值 | 系統函式庫、dotnet lib | 系統函式庫 | 系統函式庫 | 系統函式庫 |
主要弱點資料庫 | CIS | CIS | CVE、DLA | CVE、CWE | CVE | CVE |
報告格式 | text | text | table、json、sarif、cyclonedx、spdx、spdx-json、github、cosign-vuln | text、json | Azure Portal | table、json |
報告內容 | Kernel Parameter、檔案權限等 | Kernel Parameter、檔案權限等 | 弱點版本、修復版本 | 弱點版本、修復版本、有些會在網頁顯示 no fix in debian 8 … | 弱點版本、修復版本 | 弱點版本、在網頁中顯示修復版本 |
費用 | 免費 | 免費 | 免費 | 5 人 Team 方案 $125/month | $6.8693/vCore/month | 免費 |
依賴 | git | 官網下載 deb 檔、git | 官網的 PPA | 已經內建在 docker scan ,但第一次執行時需要同意他的 license,並且需要透過網址或 token 登入 Snyk |
無 | golang |