你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Azure Key Vault 重新定位到另一个区域

出于多种原因,你可能希望将现有 Azure 资源从一个区域移到另一个区域。 你可以采取以下建议:

  • 利用新的 Azure 区域。
  • 部署仅在特定区域可用的功能和服务。
  • 满足内部策略和治理要求。
  • 与公司合并和收购保持一致
  • 满足容量计划要求。

Azure Key Vault 不支持将密钥保管库重新定位到另一个区域。

不进行重新定位,你需要:

  • 通过重定位关联的 Azure 服务创建新的密钥保管库。
  • 重新生成任何必需的密钥机密证书。 在某些情况下,可能需要将机密或证书从现有密钥保管库传输到重新定位的密钥保管库。

显示 Azure Key Vault 重定位模式的示意图

先决条件

  • 验证 Azure 订阅是否允许在目标区域中创建密钥保管库。

  • 通过密钥保管库使用的所有 Azure 服务创建依赖项映射。 对于重定位范围内的服务,必须选择适当的重定位策略。

  • 根据密钥保管库设计,可能需要在目标区域中部署和配置虚拟网络

  • 记录并计划在目标区域的密钥保管库中重新配置:

    • 访问策略和网络配置设置。
    • 软删除和清除保护。
    • 自动轮换设置。

停机时间

要了解可能涉及的故障时间,请参阅面向 Azure 的云采用框架:选择重定位方法

服务终结点注意事项

通过 Azure Key Vault 的虚拟网络服务终结点可将访问限制为指定虚拟网络。 此外,还可通过这些终结点将访问限制为一系列 IPv4(Internet 协议版本 4)地址范围。 任何从外部连接到密钥保管库的用户都无法访问这些资源。 如果在密钥保管库资源的源区域中配置了服务终结点,则需要在目标区域中执行相同的操作。

若要成功将密钥保管库重新创建到目标区域,必须事先创建 VNet 和子网。 如果使用 Azure 资源转移器工具执行所有这些资源的移动,则不会自动配置服务终结点。 因此,需要手动配置服务终结点,这可以通过 Azure 门户Azure CLIAzure PowerShell 来完成。

专用终结点注意事项

Azure 专用链接提供从虚拟网络到 Azure 平台即服务 (PaaS)、客户拥有的服务或 Microsoft 合作伙伴服务的专用连接。 专用链接简化了网络体系结构,并通过消除数据在公共 Internet 上的暴露来保护 Azure 中终结点之间的连接。

若要成功在目标区域中重新创建密钥保管库,必须事先创建 VNet 和子网,然后才能进行实际重新创建。

Azure 专用终结点 DNS 集成注意事项

请务必正确配置 DNS 设置,将专用终结点 IP 地址解析为连接字符串的完全限定的域名 (FQDN)。

现有 Microsoft Azure 服务可能已有针对公共终结点的 DNS 配置。 必须替代此配置才能使用专用终结点进行连接。

与专用终结点关联的网络接口包含配置 DNS 所需的信息。 网络接口信息包括专用链接资源的 FQDN 和专用 IP 地址。

可使用以下选项来配置专用终结点的 DNS 设置:

  • 使用主机文件(仅推荐用于测试)。 可以使用虚拟机上的主机文件来替代 DNS。
  • 使用专用 DNS 区域。 你可使用专用 DNS 区域来替代专用终结点的 DNS 解析。 可将专用 DNS 区域链接到你的虚拟网络,以解析特定域。
  • 使用 DNS 转发器(可选)。 你可使用 DNS 转发器来替代专用链接资源的 DNS 解析。 创建 DNS 转发规则,以在虚拟网络中托管的 DNS 服务器上使用专用 DNS 区域。

准备

若要使用 Azure 门户导出模板:

  1. 登录 Azure 门户

  2. 选择“所有资源”,然后选择你的密钥保管库

  3. 选择“自动化”>“导出模板”。>

  4. 选择“导出模板”边栏选项卡中的“下载”。

  5. 找到从门户下载的 .zip 文件,并将该文件解压缩到所选的文件夹。

    此 zip 文件包含构成模板的 .json 文件以及用于部署模板的脚本。

请记住以下概念:

  • 密钥保管库名称具备全局唯一性。 不能重复使用保管库名称。
  • 需要在新的密钥保管库中重新配置访问策略和网络配置设置。
  • 需要在新的密钥保管库中重新配置软删除和清除保护。
  • 备份和还原操作不会保留自动轮换设置。 你可能需要重新配置这些设置。

修改模板

通过更改密钥保管库名称和区域来修改模板。

若要使用 Azure 门户部署模板:

  1. 在 Azure 门户中,选择“创建资源”。

  2. 在“搜索市场”中键入“模板部署”,然后按 ENTER

  3. 选择“模板部署”。

  4. 选择“创建” 。

  5. 选择“在编辑器中生成自己的模板”。

  6. 选择“加载文件”,然后按说明加载在上一部分下载的 template.json 文件。

  7. 在 template.json 文件中,通过设置密钥保管库名称的默认值来命名密钥保管库。 此示例将密钥保管库名称的默认值设置为 mytargetaccount

    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vaults_name": {
            "defaultValue": "key-vault-name",
            "type": "String"
        }
    },
    
  8. template.json 文件中的 location 属性编辑为目标区域。 此示例将目标区域设置为 centralus

    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults",
            "apiVersion": "2023-07-01",
            "name": "[parameters('vaults_name')]",
            "location": "centralus",
            ...
        },
        ...
    ]
    

    若要获取区域位置代码,请参阅 Azure 位置。 区域的代码是不带空格的区域名称,“美国中部” = “centralus”。

  9. 删除模板中类型专用终结点的资源。

    {
    "type": "Microsoft.KeyVault/vaults/privateEndpointConnections",
    ...
    }
    
  10. 如果在密钥保管库中配置了服务终结点,请在 networkAcl 部分的 virtualNetworkRules 下添加目标子网的规则。 确保将 ignoreMissingVnetServiceEndpoint 标志设置为 False,以便在目标区域中未配置服务终结点的情况下,IaC 无法部署密钥保管库

    parameter.json

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "target_vnet_externalid": {
          "value": "virtualnetwork-externalid"
        },
        "target_subnet_name": {
          "value": "subnet-name"
        }
      }
    }
    

    _template.json

        "networkAcls": {
            "bypass": "AzureServices",
            "defaultAction": "Deny",
            "ipRules": [],
            "virtualNetworkRules": [
                {
                    "id": "[concat(parameters('target_vnet_externalid'), concat('/subnets/', parameters('target_subnet_name')]",
                    "ignoreMissingVnetServiceEndpoint": false
                }
            ]
        }
    

重新部署

部署模板以在目标区域中创建新的密钥保管库。

  1. 保存 template.json 文件。

  2. 输入或选择属性值:

    • 订阅:选择 Azure 订阅。

    • 资源组:选择“新建” 并为资源组指定名称。

    • 位置:选择 Azure 位置。

  3. 选择“我同意上述条款和条件”,然后选中“选择购买”。

  4. 需要在新的密钥保管库中重新配置访问策略和网络配置设置(专用终结点)。 需要在新的密钥保管库中重新配置软删除和清除保护并作为自动轮换设置

提示

如果收到一个错误,指出指定的 XML 在语法上无效,请将模板中的 JSON 与 Azure 资源管理器文档中所述的架构进行比较。

通过数据迁移重新部署

重要

如果计划跨区域但在同一地理位置内移动密钥保管库,建议对机密、密钥和证书进行备份和还原

  1. 请遵循重新部署方法中所述的步骤。
  2. 对于机密
    1. 复制并保存源密钥保管库中的机密值。
    2. 在目标密钥保管库中重新创建机密,并将值设置为已保存的机密。
  3. 对于证书
    1. 将证书导出为一个 PFX 文件。
    2. 将 PFX 文件导入目标密钥保管库。 如果无法导出私钥(未设置 exportable),则必须生成新证书并将其导入目标密钥保管库。
  4. 重新定位关联的 Azure 服务后,将重新生成密钥
  5. 确认已为关联的服务生成密钥。

验证

在删除旧密钥保管库之前,请验证新保管库是否包含重新定位关联的 Azure 服务后所需的所有密钥、机密和证书。