虛擬存放區總覽

本文將概略介紹虛擬存放區。如需建立虛擬存放區的操作說明,請參閱「建立虛擬存放區」。

虛擬存放區適用 Artifact Registry 的配額與限制

虛擬存放區的運作方式

虛擬存放區可做為單一存取點,從一或多個上游存放區下載、安裝或部署相同格式的構件。 上游存放區可以是 Artifact Registry 標準或遠端存放區。

其他存放區模式包括:

  • 標準:預設存放區模式。您可以將私人套件等構件直接上傳或發布至標準存放區。雖然您可以直接從個別標準存放區下載,但透過虛擬存放區存取存放區群組,可簡化工具設定。
  • 遠端 (僅限語言套件存放區):從 Maven Central 或 PyPI 等公開存放區提取構件時,會透過快取。這個服務會做為公開存放區的 Proxy,讓您進一步控管外部依附元件。

用途和優點

簡化用戶端設定

如果工作只需要存放區的讀取權限,您只需設定單一 Artifact Registry 存放區,即可存取儲存在多個上游存放區中的構件。

例如:

  • Maven 套件的虛擬存放區可從 Artifact Registry 標準存放區提供私人 Java 套件,並從遠端存放區提供公開 Java 套件,而遠端存放區會快取 Maven Central 的公開套件。
  • 虛擬存放區可從多個上游標準存放區提供私人 Python 套件,這些存放區由不同團隊擁有。每個團隊都有上游存放區的寫入權,但會使用虛擬存放區下載其他團隊的套件。
更安全的依附元件解析

您可以為上游存放區指派優先順序,以便在要求的構件位於多個上游存放區時,進一步控管 Artifact Registry 選擇的存放區。

部分工具 (例如 Python pip 工具) 無法在用戶端設定私人和公開存放區時,控管搜尋順序。這類設定容易受到依附元件混淆攻擊,攻擊者會將含有惡意程式碼的新版套件上傳至公開存放區,誘騙用戶選擇惡意版本。

您可以同時使用遠端和虛擬存放區來減輕這項風險:

  1. 建立遠端存放區,做為公開存放區的 Proxy。
  2. 為私人套件建立標準存放區。
  3. 建立虛擬存放區,並設定優先使用標準存放區,前提是兩個存放區都有相同套件的版本。
  4. 設定套件管理員和其他工具,只從虛擬存放區讀取資料,這樣用戶端邏輯就不會參與存放區選取作業。

如要瞭解其他依附元件管理最佳做法,請參閱「依附元件管理」。

虛擬存放區如何選取上游存放區

每個上游存放區都必須設定優先順序。優先順序是整數,代表權重而非排名。也就是說,系統會優先處理優先順序值較高的存放區,而非優先順序值較低的存放區。

當您要求多個上游存放區中的構件時,Artifact Registry 會使用下列優先順序邏輯:

  • 系統會優先處理值最高的存放區。舉例來說,10 的優先順序高於 1
  • 如果多個上游存放區的優先順序相同,系統可以從任一存放區提供構件。

如果直接設定用戶端搜尋虛擬存放區和其他存放區,用戶端可能仍會從 Artifact Registry 以外的存放區下載構件。

舉例來說,如果您將 Python pip 工具設定為搜尋 PyPI 和虛擬存放區,系統可能會直接從 PyPI 下載套件,因為 pip 一律會選擇最新版本的套件,無論套件來自哪個存放區。如果 pip 設為僅搜尋虛擬存放區,您就可以控管所有上游存放區的優先順序,包括做為 PyPI Proxy 的上游遠端存放區。

支援的存放區格式

您可以為下列 Artifact Registry 存放區格式建立虛擬存放區:

語言套件:

OS 套件:

如果您是 Artifact Registry 新手,可以參閱快速入門指南,瞭解如何為這些格式設定標準存放區。

限制

除了 Artifact Registry 配額和限制外,虛擬存放區還有下列限制:

  • 標準 Artifact Registry 上游存放區必須與虛擬存放區位於相同區域或多重區域,但可以位於不同 Google Cloud 專案。
  • Maven 虛擬存放區不允許將版本政策設為快照或發布。

  • Apt 和 Yum 上游必須是 Artifact Registry 標準存放區。

  • Apt 和 Yum 標準存放區會在匯入、上傳或刪除套件後,非同步更新套件索引。如果是小型存放區,重新產生索引可能需要幾秒鐘。如果是較大的存放區,重新建立索引可能需要幾分鐘或更久的時間。重新建立索引完成後,Apt 和 Yum 用戶端就會看到存放區的變更。

後續步驟