共用方式為


設定公用 IP 網路規則

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

IP 網路規則是在公用登錄端點上設定。 IP 網路規則不適用於已設定 為 Private Link 的私有端點。

您可以在 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 後方的存取

如果你設定了公共網路規則或拒絕公開存取登錄檔,從被禁止的公開網路登入登錄檔會失敗。 如果你沒有為代理設定存取規則,從 HTTPS 代理後方的客戶端存取也會失敗。 你會看到類似 Error response from daemon: login attempt failed with status: 403 ForbiddenLooks like you don't have access to registry的錯誤訊息。

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

從 Azure Pipelines 存取

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

其中一個因應措施是將用來執行管線的代理程式從 Microsoft 裝載變更為自我裝載。 透過你管理的 WindowsLinux 機器上運行的自架代理,你就能控制管線的出站 IP 位址。 你可以在登錄 IP 存取規則中加入這個位址。

從 AKS 存取

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

要讓 AKS 叢集存取登錄檔,請使用以下選項之一:

下一步