停用從 Azure 容器登錄匯出成品

若要防止組織中的登錄使用者在虛擬網路外部惡意或意外洩漏成品,您可以設定登錄的「匯出原則」來停用匯出。

匯出原則是 API 2021-06-01-preview 版中針對進階容器登錄所引進的屬性。 exportPolicy 屬性的狀態設定為 disabled 時,會在使用者嘗試執行下列動作時封鎖從受網路限制的登錄匯出成品:

  • 匯入登錄的成品至另一個 Azure 容器登錄
  • 建立登錄匯出管線,以將成品傳輸至另一個容器登錄

注意

停用成品匯出並不會防止授權使用者存取虛擬網路內的登錄,以提取成品或執行其他資料平面作業。 若要稽核此用途,建議您設定診斷設定來監視登錄作業。

必要條件

停用匯出的其他需求

  • 停用公用網路存取 - 若要停用成品的匯出,也必須停用登錄的公用存取 (登錄的 publicNetworkAccess 屬性必須設定為 disabled)。 您可以在停用匯出之前停用登錄的公用網路存取,或同時予以停用。

    停用登錄公用端點的存取,即可確保只允許在虛擬網路內執行登錄作業。 禁止對登錄進行公用存取以提取成品和執行其他作業。

  • 移除匯出管線 - 將登錄的 exportPolicy 狀態設定為 disabled 之前,請刪除登錄上所設定的任何現有匯出管線。 如果已設定管線,則您無法變更 exportPolicy 狀態。

停用現有登錄的 exportPolicy

當您建立登錄時,exportPolicy 狀態預設會設定為 enabled,以允許匯出成品。 您可以使用 ARM 範本或 az resource update 命令,將狀態更新為 disabled

ARM 範本

包括下列 JSON 以更新 exportPolicy 狀態,並將 publicNetworkAccess 屬性設定為 disabled。 深入了解使用 ARM 範本部署資源

{
[...]
"resources": [
    {
    "type": "Microsoft.ContainerRegistry/registries",
    "apiVersion": "2021-06-01-preview",
    "name": "myregistry",
    [...]
    "properties": {
      "publicNetworkAccess": "disabled",
      "policies": {
        "exportPolicy": {
          "status": "disabled"
         }
      }
      }
    }
]
[...]
}

Azure CLI

執行 az resource update,以將現有登錄中的 exportPolicy 狀態設定為 disabled。 替代登錄和資源群組的名稱。

如此範例所示,停用 exportPolicy 屬性時,也將 publicNetworkAccess 屬性設定為 disabled

az resource update --resource-group myResourceGroup \
    --name myregistry \
    --resource-type "Microsoft.ContainerRegistry/registries" \
    --api-version "2021-06-01-preview" \
    --set "properties.policies.exportPolicy.status=disabled" \
    --set "properties.publicNetworkAccess=disabled"  

輸出會顯示已停用匯出原則狀態。

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
  "identity": null,
  "kind": null,
  "location": "centralus",
  "managedBy": null,
  "name": "myregistry",
  "plan": null,
  "properties": {
    [...]
    "policies": {
      "exportPolicy": {
        "status": "disabled"
      },
      "quarantinePolicy": {
        "status": "disabled"
      },
      "retentionPolicy": {
        "days": 7,
        "lastUpdatedTime": "2021-07-20T23:20:30.9985256+00:00",
        "status": "disabled"
      },
      "trustPolicy": {
        "status": "disabled",
        "type": "Notary"
      },
    "privateEndpointConnections": [],
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Disabled",
    "zoneRedundancy": "Disabled"
[...]
}

啟用 exportPolicy

停用登錄中的 exportPolicy 狀態之後,您隨時可以使用 ARM 範本或 az resource update 命令將其重新啟用。

ARM 範本

包括下列 JSON,以將 exportPolicy 狀態更新為 enabled。 深入了解使用 ARM 範本部署資源

{
[...]
"resources": [
    {
    "type": "Microsoft.ContainerRegistry/registries",
    "apiVersion": "2021-06-01-preview",
    "name": "myregistry",
    [...]
    "properties": {
     "policies": {
        "exportPolicy": {
          "status": "enabled"
         }
      }
      }
    }
]
[...]
}

Azure CLI

執行 az resource update,以將 exportPolicy 狀態設定為 enabled。 替代登錄和資源群組的名稱。

az resource update --resource-group myResourceGroup \
    --name myregistry \
    --resource-type "Microsoft.ContainerRegistry/registries" \
    --api-version "2021-06-01-preview" \
    --set "properties.policies.exportPolicy.status=enabled"

下一步