停用從 Azure 容器登錄匯出成品
若要防止組織中的登錄使用者在虛擬網路外部惡意或意外洩漏成品,您可以設定登錄的「匯出原則」來停用匯出。
匯出原則是 API 2021-06-01-preview 版中針對進階容器登錄所引進的屬性。 exportPolicy
屬性的狀態設定為 disabled
時,會在使用者嘗試執行下列動作時封鎖從受網路限制的登錄匯出成品:
注意
停用成品匯出並不會防止授權使用者存取虛擬網路內的登錄,以提取成品或執行其他資料平面作業。 若要稽核此用途,建議您設定診斷設定來監視登錄作業。
必要條件
- 已設定私人端點的進階容器登錄。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
停用匯出的其他需求
停用公用網路存取 - 若要停用成品的匯出,也必須停用登錄的公用存取 (登錄的
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"
下一步
- 了解 Azure Container Registry 角色和權限。
- 如果您想要防止意外刪除登錄成品,則請參閱鎖定容器映像。
- 了解內建 Azure 原則,以保護 Azure 容器登錄