排查客户管理的密钥的问题

本文是由四部分构成的教程系列文章中的第四部分。 第一部分概述了客户管理的密钥、其功能,以及在注册表中启用客户管理的密钥之前的注意事项。 第二部分介绍了如何使用 Azure CLI、Azure 门户或 Azure 资源管理器模板启用客户管理的密钥。 第三部分介绍如何轮换、更新、撤销客户管理的密钥。 本文帮助你排查和解决客户管理的密钥的常见问题。

移除托管标识时出错

如果你尝试移除用户分配的托管标识或系统分配的托管标识(用于为注册表配置加密),则可能会看到错误:

Azure resource '/subscriptions/xxxx/resourcegroups/myGroup/providers/Microsoft.ContainerRegistry/registries/myRegistry' does not have access to identity 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' Try forcibly adding the identity to the registry <registry name>. For more information on bring your own key, please visit 'https://docs.azure.cn/container-registry/container-registry-customer-managed-keys'.

无法更改(轮换)加密密钥。 解决步骤取决于用于加密的标识类型。

移除用户分配的标识

如果尝试移除用户分配的标识时收到错误,请执行以下步骤:

  1. 使用 az acr identity assign 命令重新分配用户分配的标识。

  2. 传递用户分配的标识的资源 ID,或在标识与注册表位于同一资源组中时使用该标识的名称。

    例如:

    az acr identity assign -n myRegistry \
        --identities "/subscriptions/mysubscription/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity"
    
  3. 更改密钥并分配其他标识。

  4. 现在,可以删除原始的用户分配标识。

移除系统分配的标识

如果尝试移除系统分配的标识时收到错误,请创建 Azure 支持票证以帮助还原标识。

启用密钥保管库防火墙后出错

如果在创建加密的注册表后启用密钥保管库防火墙或虚拟网络,则可能会看到“HTTP 403”错误或其他进行映像导入或自动密钥轮换时会发生的错误。 若要解决此问题,请重新配置最初用于加密的托管标识和密钥。 请参阅轮换客户管理的密钥中的步骤。

如果问题持续出现,请联系 Azure 支持部门。

标识过期错误

附加到注册表的标识设置为自动更新以避免过期。 如果取消标识与注册表的关联,则会出现一条错误消息,说明不能删除用于 CMK 的标识。 尝试删除标识会妨碍标识的自动续订。 在标识过期(通常为三个月)前,项目的拉取/推送操作都一直可以正常运行。 标识过期后,你会看到 HTTP 403,以及错误消息“与注册表关联的标识处于非活动状态。 这可能是由于尝试了删除标识。 请手动重新分配标识”。

必须显式将标识重新分配回注册表。

  1. 运行 az acr identity assign 命令以手动重新分配标识。

    • 例如,
    az acr identity assign -n myRegistry \
    --identities "/subscriptions/mysubscription/resourcegroups/myresourcegroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myidentity"
    

意外删除密钥保管库或密钥

删除密钥保管库或密钥(用于通过客户管理的密钥对注册表进行加密)会使注册表的内容无法访问。 如果在密钥保管库中启用了软删除(默认选项),则可以恢复已删除的保管库或密钥保管库对象,继续注册表操作。

后续步骤

有关密钥保管库删除和恢复方案,请参阅使用软删除和清除保护进行 Azure Key Vault 恢复管理