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

Azure 原則 是 Azure 中用來建立、指派和管理原則定義的服務。 這些原則定義會對您的資源強制執行不同的規則和效果,因此這些資源會與您的公司標準和服務等級協定保持一致。

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

使用 Azure 原則 不收取任何費用。

內建原則定義

下列內建原則定義專屬於 Azure Container Registry:

名稱
(Azure 入口網站)
描述 效果 版本
(GitHub)
[預覽]: 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
設定容器登錄以停用公用網路存取 停用 Container Registry 資源的公用網路存取,使其無法透過公用因特網存取。 這可降低資料洩漏風險。 在和 https://aka.ms/acr/private-link深入瞭解https://aka.ms/acr/portal/public-network 修改、停用 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 匯入」或「acr 傳輸」從登錄移出。 若要停用導出,必須停用公用網路存取。 深入了解: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
容器登錄應該有支援 Private Link 的 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.1.0
針對容器登錄啟用依類別群組的記錄功能 (microsoft.containerregistry/registries) 到 Log Analytics 應啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。 此原則會使用類別群組來部署診斷設定,以將記錄路由傳送至容器登錄的Log Analytics工作區(microsoft.containerregistry/registries)。 DeployIfNotExists、AuditIfNotExists、Disabled 1.0.0
啟用依類別群組記錄容器登錄 (microsoft.containerregistry/registries) 以 儲存體 應啟用資源記錄以追蹤在資源上發生的活動與事件,並讓您查看和深入解析已發生的任何變更。 此原則會使用類別群組來部署診斷設定,以將記錄路由傳送至容器登錄的 儲存體 帳戶(microsoft.containerregistry/registries)。 DeployIfNotExists、AuditIfNotExists、Disabled 1.0.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

下一步