Artifact Registry 虛擬存放區可讓您透過單一端點,存取多個上游存放區中相同格式的構件。虛擬存放區可簡化用戶端設定、啟用更安全的依附元件解析,並防範依附元件混淆攻擊。
如要瞭解如何建立虛擬存放區,請參閱「建立虛擬存放區」。虛擬存放區適用 Artifact Registry 的配額和限制。
虛擬存放區的運作方式
虛擬存放區可做為單一存取點,從一或多個上游存放區下載、安裝或部署相同格式的構件。上游存放區可以是 Artifact Registry 標準或遠端存放區。
用途和優勢
- 簡化用戶端設定
如果工作只需要存放區的讀取權限,您只需設定單一 Artifact Registry 存放區,即可存取儲存在多個上游存放區中的構件。
例如:
- Maven 套件的虛擬存放區可提供 Artifact Registry 標準存放區中的私人 Java 套件,以及遠端存放區中的公開 Java 套件,該遠端存放區會快取 Maven Central 的公開套件。
- 虛擬存放區可從不同團隊擁有的多個上游標準存放區,提供私人 Python 套件。每個團隊都有上游存放區的寫入權,但會使用虛擬存放區下載其他團隊的套件。
- 更安全的依附元件解析
您可以為上游存放區指派優先順序,進一步控管 Artifact Registry 選擇的存放區。如果要求的構件位於多個上游存放區,這項功能就派得上用場。
部分工具 (例如 Python
pip工具) 無法在用戶端中設定私人和公開存放區時,控管搜尋順序。這類設定容易受到依附元件混淆攻擊,攻擊者會將含有惡意程式碼的新版套件上傳至公開存放區,誘騙用戶選擇惡意版本。您可以同時使用遠端和虛擬存放區,降低這項風險:
- 建立遠端存放區,做為公開存放區的 Proxy。
- 為私人套件建立標準存放區。
- 建立虛擬存放區,並設定優先使用標準存放區,前提是兩個存放區都有相同套件的版本。
- 設定套件管理員和其他工具,只從虛擬存放區讀取資料,這樣用戶端邏輯就不會參與存放區選取作業。
如要瞭解其他依附元件管理最佳做法,請參閱「依附元件管理」。
虛擬存放區如何選取上游存放區
每個上游存放區都必須設定優先順序。優先順序是整數,代表權重而非排名。也就是說,優先順序數值較高的存放區,會優先於優先順序值較低的存放區。
當您要求多個上游存放區中的構件時,Artifact Registry 會使用下列優先順序邏輯:
- 系統會優先處理值最高的存放區。舉例來說,
10的優先順序高於1。 - 如果多個上游存放區的優先順序相同,則可從任一存放區提供構件。
此外,我們也建議在要求中加入構件版本。這樣一來,用戶端就會傳回優先順序最高、且包含所要求構件版本的上游存放區。如未指定構件版本,無論存放區優先順序為何,用戶端都可能會傳回最新版本的構件。
如果直接設定用戶端搜尋虛擬存放區和其他存放區,用戶端仍可能從 Artifact Registry 以外的存放區下載構件。舉例來說,如果您設定 Python pip 工具搜尋 PyPI 和虛擬存放區,套件可能會直接從 PyPI 下載,因為 pip 一律會選擇套件的最新版本,無論套件來自哪個存放區。如果 pip 設定為僅搜尋虛擬存放區,您就可以控管所有上游存放區的優先順序,包括做為 PyPI 代理的上游遠端存放區。
支援的存放區格式
您可以為下列 Artifact Registry 存放區格式建立虛擬存放區:
語言套件:
OS 套件:
如果您是第一次使用 Artifact Registry,可以透過快速入門導覽課程,瞭解如何為這些格式設定標準存放區。
限制
除了 Artifact Registry 配額和限制外,虛擬存放區還有下列限制:
- 由於虛擬存放區不會儲存資料,因此執行
gcloud artifacts docker images list時,以及在 Google Cloud 控制台中查看存放區時,都會顯示為空白。 - 標準 Artifact Registry 上游存放區必須與虛擬存放區位於相同區域或多個區域,但可以位於不同 Google Cloud 專案。
Maven 虛擬存放區不允許將版本政策設為快照或發布。
Apt 和 Yum 上游必須是 Artifact Registry 標準存放區。
匯入、上傳或刪除套件後,Apt 和 Yum 標準存放區會以非同步方式更新套件索引。如果是小型存放區,重新產生索引可能需要幾秒鐘的時間。如果是較大的存放區,重新建立索引可能需要幾分鐘或更久的時間。重新建立索引完成後,Apt 和 Yum 用戶端就能看到存放區的變更。
其他存放區模式
其他存放區模式如下:
- 標準:預設存放區模式。您可以將私人套件等構件直接上傳或發布至標準存放區。雖然您可以直接從個別標準存放區下載,但透過虛擬存放區存取存放區群組,可簡化工具設定。
- 遠端:存放區會做為上游來源的 Proxy,在從上游來源首次下載套件後,將套件快取至 Artifact Registry。下次您要求相同的套件版本時,Artifact Registry 會提供快取的副本。
- 連接器 (預先發布版):做為上游來源的代理存放區,但不會在 Artifact Registry 中快取構件。而是會向 upstream 來源提出所有要求。如果您需要完整稽核上游來源,或有政策禁止快取構件,連接器存放區就非常實用。