內容概述
Harbor 是 CNCF 的開源雲原生映像檔倉庫(Registry),提供映像檔儲存、簽章與漏洞掃描功能。
它在 Docker Registry 的基礎上加入專案權限、稽核、複寫與安全政策,適合自架私有映像檔倉庫,守住容器的供應鏈安全。
應用場景
Harbor 適用於需要管理容器映像檔的企業和開發團隊,特別是在以下情境中:
- 需要私有的映像檔倉庫來儲存和分發內部映像檔。
- 需要對映像檔進行漏洞掃描,並阻擋有高風險漏洞的映像檔被拉取。
- 需要以角色為基礎的存取控制(RBAC),管理不同使用者對映像檔的操作權限。
- 需要在多個倉庫之間進行映像檔的複寫和同步。
技術特點
- 安全性:支援 Cosign/Notation 映像檔簽章、可插拔的漏洞掃描器(預設搭配 Trivy)和 RBAC,確保映像檔的安全性和完整性。
- 管理功能:支援使用者管理、專案管理、稽核日誌與垃圾回收(Garbage Collection),方便組織和追蹤映像檔。
- 身分驗證:可整合 LDAP/AD 與 OIDC 單一登入。
- 部署彈性:可用 Docker Compose 安裝在單台主機,或用官方 Helm Chart 部署到 Kubernetes。
- 多倉庫複寫:可依政策與其他倉庫(如 Docker Hub、其他 Harbor)複寫映像檔,並提供 RESTful API 方便與 CI/CD 整合。
安裝步驟
以下是在 Linux 主機上以 Docker Compose 安裝 Harbor 的步驟。官方最低需求為 2 CPU、4 GB 記憶體、40 GB 硬碟(建議 4 CPU、8 GB、160 GB),並需 Docker Engine 20.10 以上與 Docker Compose 2.3 以上。
- 從 GitHub 下載安裝包(以 v2.15.4 為例,請以 Releases 頁面 的最新版本為準):
wget https://github.com/goharbor/harbor/releases/download/v2.15.4/harbor-online-installer-v2.15.4.tgz
wget https://github.com/goharbor/harbor/releases/download/v2.15.4/harbor-online-installer-v2.15.4.tgz.sigstore.json- (建議)用 Cosign 驗證安裝包確實來自官方建置。Harbor 從 v2.15.0 起為安裝包簽章,驗證成功會顯示
Verified OK:
cosign verify-blob \
--bundle harbor-online-installer-v2.15.4.tgz.sigstore.json \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp '^https://github.com/goharbor/harbor/.github/workflows/publish_release.yml@refs/tags/v.*$' \
harbor-online-installer-v2.15.4.tgz- 解壓縮,並複製設定檔:
tar xzvf harbor-online-installer-v2.15.4.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
vi harbor.yml在設定檔中,將 hostname 設為您的網域或 IP 位址,並務必修改 harbor_admin_password(預設 Harbor12345)與 database 的 password(預設 root123)。正式環境請一併設定 https 區塊的憑證路徑。
- 執行安裝腳本。預設安裝不包含 Trivy 漏洞掃描器,若要使用漏洞掃描,請加上
--with-trivy:
sudo ./install.sh --with-trivy安裝完成後,您應該會看到類似以下的訊息:
✔ ----Harbor has been installed and started successfully.----- 使用瀏覽器開啟
https://<您的主機名稱>,以admin和您在harbor_admin_password設定的密碼登入。注意:harbor_admin_password只在第一次啟動時生效,之後請在 Harbor 介面中修改管理員密碼。
存取和操作
安裝完成後,先在 Harbor 介面建立專案(例如 myproject),再透過以下步驟將映像檔推送到 Harbor:
- 使用 Docker 登入 Harbor:
docker login <您的主機名稱>- 為您的映像檔加上標籤:
docker tag <本機映像檔> <您的主機名稱>/<專案名稱>/<映像檔名稱>:<標籤>- 推送映像檔到 Harbor:
docker push <您的主機名稱>/<專案名稱>/<映像檔名稱>:<標籤>若 Harbor 使用 HTTPS,Docker 用戶端需信任 Harbor 的憑證;若只用 HTTP 測試,需在 /etc/docker/daemon.json 的 insecure-registries 加入 Harbor 位址並重新啟動 Docker,正式環境不建議這樣做。
漏洞掃描
以 --with-trivy 安裝後即可使用 Trivy 掃描映像檔,也可以在「Interrogation Services」中連接其他相容的掃描器。常用設定如下:
- 手動掃描:進入專案的「Repositories」分頁,選取映像檔後按「Scan Vulnerability」,即可在「Vulnerabilities」欄位看到掃描狀態與結果。
- 推送時自動掃描:在專案的「Configuration」分頁勾選「Automatically scan images on push」,新推送的映像檔會立即掃描。
- 阻擋有漏洞的映像檔:勾選「Prevent vulnerable images from running」並選擇嚴重度門檻,達到或超過該等級的映像檔將無法被拉取。
- 定期掃描:系統管理員可在「Interrogation Services」設定排程,定期重新掃描所有映像檔,及早發現新公布的漏洞。
映像檔簽章
Harbor 透過 Cosign 與 Notation 支援映像檔簽章,簽章會以附屬物(Accessory)的形式和映像檔一起存放與複寫。以 Cosign 為例,官方文件的簽章方式如下(需先在本機安裝 cosign 並產生金鑰):
cosign generate-key-pair
cosign sign --key cosign.key <您的主機名稱>/<專案名稱>/<映像檔名稱>:<標籤>簽章後,可在 Harbor 介面中展開該映像檔,查看附屬的簽章。若要強制「只能拉取已簽章的映像檔」,請在專案的「Configuration」分頁勾選 Cosign 或 Notation 部署政策並儲存。
注意:Cosign v3 起預設改用新的 bundle 格式,並以 OCI 1.1 referrer 存放容器簽章;若在 Harbor 介面看不到簽章,請先對照 Harbor 與 Cosign 的官方文件確認版本相容性。
小技巧
- 一定要啟用 HTTPS:映像檔倉庫會存放帳號密碼與內部程式,對外開放前請設定 HTTPS,並限制只有內網或 VPN 能存取管理介面。
- 定期更新:定期更新 Harbor 和相關元件,確保取得最新的功能和安全修補;升級前先備份資料庫與設定檔。
- 善用專案與角色:利用 Harbor 的專案和角色功能,實現對映像檔的精細化管理;CI/CD 請使用權限最小的機器人帳號(Robot Account)。
- 清理空間:刪除映像檔後要執行垃圾回收,才會真正釋放磁碟空間。
教學影片
影片來源:Engineering with Morris/YouTube
參考連結
成本與風險摘要
- 適用對象與規模:需要私有映像檔倉庫、並重視漏洞掃描與簽章的團隊;單台主機以 Docker Compose 即可運作,需要高可用時改用 Kubernetes 上的 Helm Chart。
- 成本(硬體、訂閱、授權):軟體以 Apache-2.0 授權免費使用;硬體最低 2 CPU、4 GB 記憶體、40 GB 硬碟,映像檔越多,儲存空間需求越大。
- 維護時間:需定期升級、備份資料庫、執行垃圾回收,並更新 Trivy 漏洞資料庫。
- 資安注意事項:修改預設的管理員與資料庫密碼、啟用 HTTPS、開啟推送時自動掃描與漏洞阻擋政策、使用機器人帳號給 CI/CD。
- 常見誤區:以為預設安裝就有漏洞掃描(實際需加
--with-trivy);只修改登入後的管理員密碼,卻忘了harbor.yml中的資料庫密碼。 - 不建議使用的情況:只有少量個人映像檔、沒有人力維護時,使用雲端服務商的託管倉庫可能更省事。
- 測試日期與版本號:資料查核日期:2026-10-28;Harbor v2.15.4、Cosign v3.1.4。
