轮换并撤销客户管理的密钥

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

轮换客户管理的密钥

要轮换密钥,可以更新 Azure Key Vault 中的密钥版本或新建密钥。 在轮换密钥时,可以指定用于创建注册表的同一标识。

(可选)可以:

  • 配置新的用户分配的标识以访问密钥。
  • 启用并指定注册表的系统分配的标识。

注意

若要在门户中启用注册表的系统分配的标识,请选择“设置”>“标识”,并将系统分配的标识的状态设置为“启用”。

确保针对为进行密钥访问而配置的标识设置了所需的密钥保管库访问权限

使用 Azure CLI 创建或更新密钥版本

若要创建新的密钥版本,请运行 az keyvault key create 命令:

# Create new version of existing key
az keyvault key create \
  --name <key-name> \
  --vault-name <key-vault-name>

如果将注册表配置为检测密钥版本更新,则客户管理的密钥会在一小时内自动更新。

如果将注册表配置为在发布新密钥版本后手动更新,请运行 az-acr-encryption-rotate-key 命令。 传递新密钥 ID 以及要配置的标识。

提示

运行 az-acr-encryption-rotate-key 时,可以传递带版本的密钥 ID 或不带版本的密钥 ID。 如果使用不带版本的密钥 ID,则会将注册表配置为自动检测以后的密钥版本更新。

若要手动更新客户管理的密钥版本,可采用三种做法:

  • 轮换密钥并使用托管标识的客户端 ID。

    如果使用来自不同密钥保管库的密钥,请验证 identity 是否对该密钥保管库具有 getwrapunwrap 权限。

    az acr encryption rotate-key \
      --name <registry-name> \
      --key-encryption-key <new-key-id> \
      --identity <client ID of a managed identity>
    
  • 轮换密钥并使用用户分配的标识。

    在使用用户分配的标识之前,请验证是否为它分配了 getwrapunwrap 权限。

    az acr encryption rotate-key \
      --name <registry-name> \
      --key-encryption-key <new-key-id> \
      --identity <id of user assigned identity>
    
  • 轮换密钥并使用系统旋转分配的标识。

    在使用系统分配的标识之前,请验证是否为它分配了 getwrapunwrap 权限。

    az acr encryption rotate-key \
      --name <registry-name> \
      --key-encryption-key <new-key-id> \
      --identity [system]
    

使用 Azure 门户创建或更新密钥版本

使用注册表的“加密”设置来更新客户管理的密钥的密钥保管库、密钥或标识设置。

例如,若要配置新密钥,请执行以下操作:

  1. 在门户中转到你的注册表。

  2. 在“设置”下,选择“加密”>“更改密钥”。

    Azure 门户中的加密密钥选项的屏幕截图。

  3. 在“加密”中,选择以下选项之一:

    • 选择“从密钥保管库中选择”,然后选择现有的密钥保管库和密钥,或选择“新建”。 你选择的密钥不带版本,可启用自动密钥轮换。
    • 选择“输入密钥 URI”,并直接提供密钥标识符。 可以提供带版本的密钥 URI(适用于必须手动轮换的密钥)或不带版本的密钥 URI(用于启用自动密钥轮换)。
  4. 完成密钥选择,然后选择“保存”。

撤销客户管理的密钥

可以撤销客户管理的加密密钥,方法是更改访问策略,或更改针对密钥保管库的权限,或者删除该密钥。

若要更改注册表使用的托管标识的访问策略,请运行 az-keyvault-delete-policy 命令:

az keyvault delete-policy \
  --resource-group <resource-group-name> \
  --name <key-vault-name> \
  --object-id <key-vault-key-id>

若要删除密钥的单个版本,请运行 az-keyvault-key-delete 命令。 此操作需要 keys/delete 权限。

az keyvault key delete  \
  --name <key-vault-name> \
  -- 
  --object-id $identityPrincipalID \                     

注意

撤销客户管理的密钥将阻止对所有注册表数据的访问。 如果你启用访问密钥或还原已删除密钥的权限,注册表将选取该密钥,然后你可以重新获取对已加密注册表数据的访问控制权。

后续步骤

请继续阅读下一篇文章了解如何排查常见问题,例如删除托管标识时发生的错误、403 错误和意外删除密钥的问题。