設定公用 IP 網路規則

根據預設,Azure 容器登錄會接受任何網路上的主機透過網際網路的連線。 本文說明如何將您的容器登錄設定為僅允許來自特定公用 IP 位址或位址範圍的存取。 文中提供使用 Azure CLI 和 Azure 入口網站的設定步驟。

IP 網路規則是在公用登錄端點上設定。 IP 網路規則不適用於以私人連結設定的私人端點。

您可以在 Premium 容器登錄服務層級中設定 IP 存取規則。 如需登錄服務層級和限制的相關資訊,請參閱 Azure 容器登錄層級

每個登錄最多支援 100 個 IP 存取規則。

重要

某些功能可能無法使用,或在容器登錄中需要進行更多設定,以限制對私人端點、選取的子網路或 IP 位址的存取。

  • 停用登錄的公用網路存取時,某些信任服務 (部分機器翻譯) 的登錄存取權 (包括Azure 資訊安全中心) 需要啟用網路設定才能略過網路規則。
  • 停用公用網路存取之後,某些 Azure 服務的實例,包括Azure DevOps Services目前無法存取容器登錄。
  • Azure DevOps 受控代理程式目前不支援私人端點。 您必須使用自我裝載代理程式與私人端點的網路可見線。
  • 如果登錄具有已核准的私人端點,且公用網路存取已停用,則無法使用 Azure 入口網站、Azure CLI 或其他工具來將存放庫和標籤列在虛擬網路外部。

從選取的公用網路存取 - CLI

變更登錄的預設網路存取

若要限制對所選公用網路的存取,請先將預設動作變更為拒絕存取。 在下列 az acr update 命令中,以您的登錄名稱取代名稱:

az acr update --name myContainerRegistry --default-action Deny

將網路規則新增至登錄

使用 az acr network-rule add 命令,將網路規則新增至您的登錄,以允許來自公用 IP 位址或範圍的存取。 例如,取代虛擬網路中 VM 的容器登錄的名稱和公用 IP 位址。

az acr network-rule add \
  --name mycontainerregistry \
  --ip-address <public-IP-address>

注意

新增規則之後,需要幾分鐘的時間,規則才會生效。

從選取的公用網路存取 - 入口網站

  1. 在入口網站中,瀏覽到您的容器登錄。
  2. 在 [設定] 底下,選取 [網路]。
  3. 在 [公用存取權] 索引標籤上,選取允許從 [選取的網路] 公用存取。
  4. 在 [防火牆] 下,輸入公用 IP 位址,例如虛擬網路中 VM 的公用 IP 位址。 或者,以 CIDR 標記法輸入包含 VM IP 位址的位址範圍。
  5. 選取 [儲存]。

設定容器登錄的防火牆規則

注意

新增規則之後,需要幾分鐘的時間,規則才會生效。

提示

您可選擇啟用從本機用戶端電腦或 IP 位址範圍的登錄存取。 為了允許此存取,您需要電腦的公用 IPv4 位址。 您可以在網際網路瀏覽器中搜尋「我的 IP 位址是什麼」來尋找此位址。 當您在入口網站的 [網路] 頁面上設定防火牆設定時,目前的用戶端 IPv4 位址也會自動出現。

停用公用網路存取

您可選擇停用登錄上的公用端點。 停用公用端點會覆寫所有防火牆設定。 例如,您可能會想要使用私人連結來停用虛擬網路中受保護登錄的公用存取。

注意

如果登錄是在具有服務端點 (部分機器翻譯) 的虛擬網路中設定,則停用登錄公用端點的存取權時也會同時停用虛擬網路內登錄的存取權。

停用公用存取 - CLI

若要使用 Azure CLI 停用公用存取,請執行 az acr update,並將 --public-network-enabled 設定為 falsepublic-network-enabled 引數需要 Azure CLI 2.6.0 或更新版本。

az acr update --name myContainerRegistry --public-network-enabled false

停用公用存取 - 入口網站

  1. 在入口網站中,瀏覽至您的容器登錄,然後選取 [設定] > [網路]。
  2. 在 [公用存取] 索引標籤的 [允許公用網路存取] 中,選取 [停用]。 然後選取 [儲存]。

停用公用存取

還原公用網路存取

若要重新啟用公用端點,請更新網路設定以允許公用存取。 啟用公用端點會覆寫所有防火牆設定。

還原公用存取 - CLI

執行 az acr update,並將 --public-network-enabled 設定為 true

注意

public-network-enabled 引數需要 Azure CLI 2.6.0 或更新版本。

az acr update --name myContainerRegistry --public-network-enabled true

還原公用存取 - 入口網站

  1. 在入口網站中,瀏覽至您的容器登錄,然後選取 [設定] > [網路]。
  2. 在 [公用存取] 索引標籤的 [允許公用網路存取] 中,選取 [所有網路]。 然後選取 [儲存]。

從所有網路公用存取

疑難排解

HTTPS Proxy 後方的存取

如果已設定公用網路規則,或拒絕登錄的公用存取,則嘗試從不允許的公用網路登入登錄將會失敗。 如果未設定 Proxy 的存取規則,來自 HTTPS Proxy 後方的用戶端存取也會失敗。 您會看到類似 Error response from daemon: login attempt failed with status: 403 ForbiddenLooks like you don't have access to registry 的錯誤訊息。

如果您使用網路存取規則允許的 HTTPS Proxy,但未在用戶端環境中正確設定 Proxy,也可能會發生這些錯誤。 請檢查您的 Docker 用戶端和 Docker 精靈都已針對 Proxy 行為進行設定。 如需詳細資訊,請參閱 Docker 文件中的 HTTP/HTTPS Proxy (英文)。

從 Azure Pipelines 存取

如果您使用 Azure Pipelines 搭配限制存取特定 IP 位址的 Azure 容器登錄,管線可能無法存取登錄,因為管線的輸出 IP 位址並未修正。 根據預設,管線會在具有一組變更 IP 位址的虛擬機器集區上使用 Microsoft 裝載的代理程式 (部分機器翻譯) 來執行作業。

其中一個因應措施是將用來執行管線的代理程式從 Microsoft 裝載變更為自我裝載。 透過在您所管理的 Windows (部分機器翻譯) 或 Linux (部分機器翻譯) 電腦上執行的自我裝載代理程式,您可以控制管線的輸出 IP 位址,並在登錄 IP 存取規則中新增此位址。

從 AKS 存取

如果您使用 Azure Kubernetes Service (AKS) 搭配限制特定 IP 位址存取權的 Azure 容器登錄,則預設無法設定固定的 AKS IP 位址。 系統會隨機指派來自 AKS 叢集的輸出 IP 位址。

若要允許 AKS 叢集存取登錄,您有下列選項:

後續步驟