共用方式為


使用 Azure 原則稽核 Azure 容器登錄的合規性

Azure 原則是 Azure 中的一個服務,您可以用來建立、指派和管理原則定義。 這些原則定義會對您的資源強制執行不同的規則和效果,讓這些資源能符合公司標準和服務等級協定的規範。

此文介紹適用於 Azure Container Registry 的內建原則定義。 使用這些定義來稽核新增和現有的登錄,是否符合規範。

使用 Azure 原則完全免費。

內建原則定義

下列內建原則定義為 Azure Container Registry 專用:

名稱
(Azure 入口網站)
描述 效果 版本
(GitHub)
[預覽]:Container Registry 應該是「區域備援」 Container Registry 可以設定為「區域備援」。 當 Container Registry 的 zoneRedundancy 屬性設定為 'Disabled' 時,表示登錄不是「區域備援」。 強制執行此原則有助於確保您的 Container Registry 已適當地設定為區域復原,降低區域中斷期間停機的風險。 Audit, Deny, Disabled 1.0.0-preview
[預覽]:Container Registry 應使用虛擬網路服務端點 此原則會稽核任何未設定為使用虛擬網路服務端點的 Container Registry。 Audit, Disabled 1.0.0-preview
Azure 登錄容器映像應已解決弱點 (由 Microsoft Defender 弱點管理提供支援) 容器映像弱點評量會掃描登錄中的常見已知弱點 (CVE),並提供每個映像的詳細弱點報告。 解決弱點可大幅改善您的安全性態勢,確保映像可安全使用再進行部署。 AuditIfNotExists, Disabled 1.0.1
設定容器登錄來停用匿名驗證。 停用登錄的匿名提取,讓未經驗證的使用者無法存取資料。 停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication 修改、停用 1.0.0
設定容器登錄以停用 ARM 對象權杖驗證。 停用以 Azure Active Directory ARM 對象權杖向登錄進行驗證的功能。 只有 Azure Container Registry (ACR) 對象權杖才會用於驗證。 這可確保只有預定要在登錄上使用的權杖,才可用於驗證。 停用 ARM 對象權杖並不會影響管理使用者或限定範圍存取權杖的驗證。 深入了解:https://aka.ms/acr/authentication 修改、停用 1.0.0
設定容器登錄來停用本機系統管理員帳戶。 停用登錄的系統管理員帳戶,讓本機系統管理員無法存取。停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication 修改、停用 1.0.1
設定容器登錄以停用公用網路存取 停用 Azure Container Registry 資源的公用網路存取,使其無法經由公用網際網路存取。 這可降低資料洩漏風險。 若要深入了解,請參閱 https://aka.ms/acr/portal/public-networkhttps://aka.ms/acr/private-link 修改、停用 1.0.0
設定容器登錄以停用存放庫範圍存取權杖。 停用登錄的存放庫範圍存取權杖,讓權杖無法存取存放庫。 停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication 修改、停用 1.0.0
使用私人端點設定容器登錄 私人端點會將您的虛擬網路連線到 Azure 服務,而不需要來源或目的地上的公用 IP 位址。 您可將私人端點對應至進階容器登錄資源,以便降低資料外洩風險。 深入了解:https://aka.ms/privateendpointshttps://aka.ms/acr/private-link DeployIfNotExists, Disabled 1.0.0
容器登錄應使用客戶自控金鑰加密 使用客戶自控金鑰來管理登錄內容的待用加密。 根據預設,資料會使用服務管理的金鑰進行待用加密,但通常需要有客戶自控金鑰才能符合法規合規性標準。 客戶自控金鑰可讓您使用由您建立及擁有的 Azure Key Vault 金鑰來加密資料。 您對金鑰生命週期擁有完全的控制權和責任,包括輪替和管理。 深入了解:https://aka.ms/acr/CMK Audit, Deny, Disabled 1.1.2
容器登錄應停用匿名驗證。 停用登錄的匿名提取,讓未經驗證的使用者無法存取資料。 停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication Audit, Deny, Disabled 1.0.0
容器登錄應停用 ARM 對象權杖驗證。 停用以 Azure Active Directory ARM 對象權杖向登錄進行驗證的功能。 只有 Azure Container Registry (ACR) 對象權杖才會用於驗證。 這可確保只有預定要在登錄上使用的權杖,才可用於驗證。 停用 ARM 對象權杖並不會影響管理使用者或限定範圍存取權杖的驗證。 深入了解:https://aka.ms/acr/authentication Audit, Deny, Disabled 1.0.0
容器登錄應停用匯出 停用匯出可確保登錄中的資料只能透過資料平面存取 ('docker pull')。進而改善安全性。 資料無法透過 'acr import' 或 'acr transfer' 從登錄移出。 若要停用匯出,必須停用公用網路存取。 深入了解:https://aka.ms/acr/export-policy Audit, Deny, Disabled 1.0.0
容器登錄應停用本機系統管理員帳戶。 停用登錄的系統管理員帳戶,讓本機系統管理員無法存取。停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication Audit, Deny, Disabled 1.0.1
容器登錄應已停用存放庫範圍存取權杖。 停用登錄的存放庫範圍存取權杖,讓權杖無法存取存放庫。 停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 Azure Active Directory 身分識別進行驗證,進而改善安全性。 深入了解:https://aka.ms/acr/authentication Audit, Deny, Disabled 1.0.0
容器登錄應具有支援私人連結的 SKU Azure Private Link 可讓您將虛擬網路連線到 Azure 服務,而不需要來源或目的地上的公用 IP 位址。 Private Link 平台會透過 Azure 骨幹網路處理取用者與服務之間的連線。 只要將私人端點對應到您的容器登錄,而不是整個服務,資料外洩風險就會降低。 深入了解:https://aka.ms/acr/private-link Audit, Deny, Disabled 1.0.0
不應允許不受限制的網路存取 根據預設,Azure 容器登錄會接受任何網路上的主機透過網際網路的連線。 為了保護登錄不受潛在威脅的影響,請只允許來自特定私人端點、公用 IP 位址或位址範圍的存取。 如果登錄沒有已設定的網路規則,則會出現在狀況不良的資源中。 在這裡深入了解 Azure Container Registry 網路規則:https://aka.ms/acr/privatelink、 https://aka.ms/acr/portal/public-networkhttps://aka.ms/acr/vnet Audit, Deny, Disabled 2.0.0
容器登錄應該防止快取規則建立 停用 Azure Container Registry 的快取規則建立,以防止透過快取提取進行提取。 深入了解:https://aka.ms/acr/cache Audit, Deny, Disabled 1.0.0
容器登錄應使用私人連結 Azure Private Link 可讓您將虛擬網路連線到 Azure 服務,而不需要來源或目的地上的公用 IP 位址。 Private Link 平台會透過 Azure 骨幹網路處理取用者與服務之間的連線。藉由將私人端點對應至容器登錄而非整個服務,您也會受到保護,而免於遭受資料洩漏風險。 深入了解:https://aka.ms/acr/private-link Audit, Disabled 1.0.1
針對容器登錄 (microsoft.containerregistry/registries) 啟用依類別群組記錄至事件中樞 應啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。 此原則會使用類別群組部署診斷設定,針對容器登錄 (microsoft.containerregistry/registries) 將記錄路由傳送至事件中樞。 DeployIfNotExists、AuditIfNotExists、Disabled 1.2.0
針對容器登錄 (microsoft.containerregistry/registries) 啟用依類別群組記錄至 Log Analytics 應啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。 此原則會使用類別群組部署診斷設定,針對容器登錄 (microsoft.containerregistry/registries) 將記錄路由傳送至 Log Analytics 工作區。 DeployIfNotExists、AuditIfNotExists、Disabled 1.1.0
針對容器登錄 (microsoft.containerregistry/registries) 啟用依類別群組記錄至儲存體 應啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。 此原則會使用類別群組部署診斷設定,針對容器登錄 (microsoft.containerregistry/registries) 將記錄路由傳送至儲存體帳戶。 DeployIfNotExists、AuditIfNotExists、Disabled 1.1.0
容器登錄應停用公用網路存取 停用公用網路存取可確保容器登錄不會在公用網際網路上公開,進而改善安全性。 建立私人端點可能會限制容器登錄資源的曝光狀況。 深入了解:https://aka.ms/acr/portal/public-networkhttps://aka.ms/acr/private-link Audit, Deny, Disabled 1.0.0

建立原則指派

注意

建立或更新原則指派之後,指派需要一些時間才能評估定義範圍內的資源。 請參閱原則評估觸發程序的相關資訊。

檢閱原則合規性

使用 Azure 入口網站、Azure 命令列工具或 Azure 原則 SDK,存取原則指派所產生的合規性資訊。 如需詳細資訊,請參閱取得 Azure 資源的合規性資料

如果資源不符合規範,有許多可能的原因。 若要判斷原因,或是找出導致此情況的變更,請參閱判斷不符合規範的原因

入口網站中的原則合規性:

  1. 選取 [所有服務],然後搜尋 [原則]

  2. 選取 [合規性]

  3. 使用篩選條件來限制合規性狀態或搜尋原則。

    入口網站中的原則合規性

  4. 選取原則以檢閱彙總合規性詳細資料和事件。 如有需要,請選取資源合規性的特定登錄。

Azure CLI 中的原則合規性

您也可以使用 Azure CLI 來取得合規性資料。 例如,在 CLI 中使用 az policy assignment list 命令來取得套用的 Azure Container Registry 原則所擁有的原則識別碼:

az policy assignment list --query "[?contains(displayName,'Container Registries')].{name:displayName, ID:id}" --output table

範例輸出:

Name                                                                                   ID
-------------------------------------------------------------------------------------  --------------------------------------------------------------------------------------------------------------------------------
Container Registries should not allow unrestricted network access           /subscriptions/<subscriptionID>/providers/Microsoft.Authorization/policyAssignments/b4faf132dc344b84ba68a441
Container Registries should be encrypted with a Customer-Managed Key (CMK)  /subscriptions/<subscriptionID>/providers/Microsoft.Authorization/policyAssignments/cce1ed4f38a147ad994ab60a

然後執行 az policy state list,以傳回特定原則識別碼下所有資源的 JSON 格式合規性狀態:

az policy state list \
  --resource <policyID>

或執行 az policy state list 以傳回特定登錄資源的 JSON 格式合規性狀態,例如 myregistry

az policy state list \
 --resource myregistry \
 --namespace Microsoft.ContainerRegistry \
 --resource-type registries \
 --resource-group myresourcegroup

下一步