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

配置 Azure 应用程序一致性快照工具的存储

本文将指导你如何将 Azure 存储配置为与 Azure 应用程序一致性快照工具 (AzAcSnap) 一起使用。

选择用于 AzAcSnap 的存储。

设置系统托管标识(推荐)或生成服务主体的身份验证文件。

验证与 Azure NetApp 文件的通信时,通信可能会失败或超时。检查防火墙规则没有阻止从运行 AzAcSnap 的系统到以下地址和 TCP/IP 端口的出站流量:

  • (https://)management.azure.com:443
  • (https://)login.microsoftonline.com:443

启用与存储的通信

本节介绍如何启用与存储的通信。 使用以下选项卡正确选择你要使用的存储后端。

有两种方法可以使用系统管理标识或服务主体文件对 Azure 资源管理器进行身份验证。 此处介绍了这些选项。

Azure 系统托管标识

从 AzAcSnap 9 开始,可以使用系统托管标识代替服务主体进行操作。 使用此功能可避免需要在虚拟机 (VM) 上存储服务主体凭据。 要使用 Azure Cloud Shell 设置 Azure 托管标识,请执行以下步骤:

  1. 在与 Bash 的 Cloud Shell 会话中,使用以下示例适当设置 shell 变量,并将其应用于要在其中创建 Azure 托管标识的订阅。 将 SUBSCRIPTIONVM_NAMERESOURCE_GROUP 设置为特定于站点的值。

    export SUBSCRIPTION="99z999zz-99z9-99zz-99zz-9z9zz999zz99"
    export VM_NAME="MyVM"
    export RESOURCE_GROUP="MyResourceGroup"
    export ROLE="Contributor"
    export SCOPE="/subscriptions/${SUBSCRIPTION}/resourceGroups/${RESOURCE_GROUP}"
    
  2. 将 Cloud Shell 设置为正确的订阅:

    az account set -s "${SUBSCRIPTION}"
    
  3. 为虚拟机创建托管标识。 以下命令设置(或显示是否已设置)AzAcSnap VM 的托管标识:

    az vm identity assign --name "${VM_NAME}" --resource-group "${RESOURCE_GROUP}"
    
  4. 获取用于分配角色的主体 ID:

    PRINCIPAL_ID=$(az resource list -n ${VM_NAME} --query [*].identity.principalId --out tsv)
    
  5. 为主体 ID 分配“参与者”角色:

    az role assignment create --assignee "${PRINCIPAL_ID}" --role "${ROLE}" --scope "${SCOPE}"
    

可选 RBAC

可以在基于角色的访问控制 (RBAC) 中使用自定义角色定义来限制托管标识的权限。 为虚拟机创建合适的角色定义,以便能够管理快照。 可以在使用 Azure 应用程序一致性快照工具的提示和技巧中找到示例权限设置。

然后,将角色分配给 Azure VM 主体 ID(也显示为 SystemAssignedIdentity):

az role assignment create --assignee ${PRINCIPAL_ID} --role "AzAcSnap on ANF" --scope "${SCOPE}"

生成服务主体文件

  1. 在 Cloud Shell 会话中,请确保你已登录到要在默认情况下与服务主体关联的订阅:

    az account show
    
  2. 如果订阅不正确,请使用 az account set 命令:

    az account set -s <subscription name or id>
    
  3. 使用 Azure CLI 创建服务主体,如以下示例所示:

    az ad sp create-for-rbac --name "AzAcSnap" --role Contributor --scopes /subscriptions/{subscription-id} --sdk-auth
    

    此命令应生成如下示例的输出:

    {
      "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "clientSecret": "Dd4Ee~5Ff6.-Gg7Hh8Ii9Jj0Kk1Ll2_Mm3Nn4Oo5",
      "subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
      "resourceManagerEndpointUrl": "https://management.azure.com/",
      "activeDirectoryGraphResourceId": "https://graph.windows.net/",
      "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
      "galleryEndpointUrl": "https://gallery.azure.com/",
      "managementEndpointUrl": "https://management.core.windows.net/"
    }
    

    此命令会自动将 RBAC“参与者”角色分配给订阅级别的服务主体。 可以将此范围缩小到测试将创建资源的特定资源组。

  4. 将输出内容剪切并粘贴到与 azacsnap 命令存储在同一系统上的名为 azureauth.json 的文件中。 使用适当的系统权限保护文件。

    请确保 JSON 文件的格式与上一步中所述的格式完全相同,URL 用双引号 (") 括起来。

后续步骤