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

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

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

使用 Azure 原則完全免費。

內建原則定義

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

名稱
(Azure 入口網站)
描述 效果 版本
(GitHub)
[預覽]:[預覽]:Container Registry 應該使用虛擬網路服務端點 此原則會稽核任何未設定為使用虛擬網路服務端點的 Container Registry。 Audit, Disabled 1.0.0-preview
設定容器登錄來停用匿名驗證。 停用登錄的匿名提取,讓未經驗證的使用者無法存取資料。 停用本機驗證方法 (例如管理員使用者、存放庫範圍存取權杖和匿名提取) 可確保容器登錄僅可要求 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 Private Link 可讓您將虛擬網路連線到 Azure 服務,而不需要來源或目的地上的公用 IP 位址。 Private Link 平台會透過 Azure 骨幹網路處理取用者與服務之間的連線。藉由將私人端點對應至容器登錄而非整個服務,您也會受到保護,而免於遭受資料洩漏風險。 深入了解:https://aka.ms/acr/private-link Audit, Disabled 1.0.1
容器登錄映像應已解決弱點結果 容器映像弱點評定會掃描您的登錄,以判斷是否有安全性弱點,並公開每個映像的詳細結果。 解決這些弱點可以大幅改善容器的安全性狀態,並保護容器免於遭受攻擊。 AuditIfNotExists, Disabled 2.0.1
容器登錄應停用公用網路存取 停用公用網路存取可確保容器登錄不會在公用網際網路上公開,進而改善安全性。 建立私人端點可能會限制容器登錄資源的曝光狀況。 深入了解: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

下一步