紧急 VM 访问 (EVA)

使用紧急 VM 访问服务 (EVA),用户可以在自己被锁定在虚拟机之外且无法通过网络使用重新部署操作恢复访问权限的情况下向操作员请求帮助。

注意

EVA 从 Azure Stack Hub 2301 开始正式发布。

正常情况下,必须按订阅启用此功能,并且操作员需要启用远程桌面访问,以便 cloudadmin 用户访问紧急恢复控制台 VM (ERCS)。

用户的第一步是通过 PowerShell 请求 VM 控制台访问权限。 用户发出该请求即表明用户同意并允许操作员使用额外的信息通过控制台连接到虚拟机。 控制台访问不依赖于网络连接,使用虚拟机监控程序的数据通道。

在凭据为已知凭据的情况下,操作员只能向 VM 中运行的操作系统进行身份验证。 此时操作员也可以与用户共享屏幕,一起解决问题以恢复网络连接。

重要

对于运行 Windows Server 的 VM,EVA 功能仅限于通过图形用户界面 (GUI) 运行的计算机。 对于 Windows Server,核心操作系统不支持屏幕键盘功能。 由于无法将 Ctrl+Alt+Del 键组合作为输入发送,因此即使可以连接到核心服务器的控制台,也无法登录到核心服务器。 如果需要解决 Windows 核心 OS 的问题,请与 Microsoft 支持人员联系,让其从解锁的 PEP 提供控制台访问权限。

操作员允许某个用户订阅进行 EVA

在这种情况下,操作员可以决定哪个订阅可以使用紧急 VM 访问功能。

首先,运行以下 PowerShell 脚本。 若要运行此脚本,必须安装 Azure Stack Hub PowerShell。 请遵循 Azure Stack Hub PowerShell 安装指南。 请将变量占位符替换为正确的值:

# Replace strings with your values before running the script
$FQDN = "External FQDN"
$RegionName = "Azure Stack Region Name"
# The value for "TenantID" should always be the tenant ID of home directory as it's only used for connecting to the admin resource manager endpoint.
$TenantID = "TenantID"
$TenantSubscriptionId = "Tenant Subscription ID"

$tenantSubscriptionSettings = @{
    TenantSubscriptionId = [string]$tenantSubscriptionId
}

# Add environment & authenticate
Add-AzureRmEnvironment -Name AzureStackAdmin -ARMEndpoint https://adminmanagement.$RegionName.$FQDN
Login-AzureRmAccount -Environment AzureStackAdmin -TenantId $TenantID

Invoke-AzureRmResourceAction `
    -ResourceName "$($RegionName)/Microsoft.Compute.EmergencyVMAccess" `
    -ResourceType "Microsoft.Compute.Admin/locations/features" `
    -Action "enableTenantSubscriptionFeature" `
    -Parameters $tenantSubscriptionSettings `
    -ApiVersion "2020-11-01" `
    -ErrorAction Stop `
    -Force

用户请求 VM 控制台访问权限

你作为用户同意操作员为特定 VM 创建控制台访问权限。

  1. 请以用户身份打开 PowerShell,登录到订阅,并按此处所述连接到 Azure Stack Hub

  2. 运行以下脚本。 必须替换订阅 ID、资源组和 VM 名称才能构造 VMResourceID:

    $SubscriptionID = "your Azure subscription ID" 
    $ResourceGroup = "your resource group name" 
    $VMName = "your VM name" 
    $vmResourceId = "/subscriptions/$SubscriptionID/resourceGroups/$ResourceGroup/providers/Microsoft.Compute/virtualMachines/$VMName" 
    
    $enableVMAccessResponse = Invoke-AzureRMResourceAction `
        -ResourceId $vmResourceId `
        -Action "enableVmAccess" `
        -ApiVersion "2020-06-01" `
        -ErrorAction Stop `
        -Force
    
    Write-Host "Please provide the following output to operator`n" -ForegroundColor Yellow
    Write-Host "ERCS Name:`t$(($enableVMAccessResponse).ERCSName)" -ForegroundColor Cyan
    Write-Host "ConnectTo-TenantVm -ResourceID $($vmResourceId)" -ForegroundColor Green
    Write-Host "Delete-TenantVMSession -ResourceID $($vmResourceId)" -ForegroundColor Green
    

  1. 此脚本会返回紧急恢复控制台名称 (ERCS),该名称(以及 VMResourceID)由租户提供给操作员。

操作员启用对 ERCS VM 的远程桌面访问

Azure Stack Hub 操作员的下个步骤是启用对托管特权终结点的紧急恢复控制台 VM (ERCS) 的远程桌面访问。

在用于连接到 ERCS 的操作员工作站的特权终结点 (PEP) 中,运行以下命令。 该命令将工作站的 IP 添加到网络安全列表。 按照有关如何连接到 PEP 的指导进行操作。 操作员可以是 cloudadmin 用户组的成员,也可以是 cloudadmin 自己:

Grant-RdpAccessToErcsVM

若要禁用对紧急恢复控制台 VM (ERCS) 的远程桌面访问,请在特权终结点 (PEP) 中运行以下命令:

Revoke-RdpAccessToErcsVM

注意

将为任何一个 ERCS Vm 分配租户用户的访问请求。 作为操作员,你只能创建从租户接收的 ERCS VM($enableVMAccessResponse 的输出)的 PEP 会话。

  1. 操作员使用 ERCS 名称通过远程桌面客户端 (RDP) 连接到它,例如从操作员访问工作站 (OAW) 这样做。

    注意

    操作员使用与执行 RdpAccessToErcsVM相同的云管理员帐户进行身份验证。

  2. 通过 RDP 连接到 ERCS VM 后,启动 PowerShell。

  3. 使用以下命令连接到租户虚拟机的控制台:

    ConnectTo-TenantVm -ResourceID
    
  4. 操作员现在连接到租户虚拟机的控制台屏幕,需要再次使用 cloudadmin 凭据向其进行身份验证。 操作员没有任何用于登录来宾操作系统的凭据。

    注意

    在登录屏幕中,按 Windows + U 键将启动屏幕键盘,这允许发送 CTRL + ALT + Delete。 必须处于全屏 RDP 模式才能使用 Windows + U 键组合。

  5. 操作员现在可以与租户进行屏幕共享,以调试阻止通过网络连接到 VM 的任何问题。

  6. 完成后,操作员可以运行以下命令来删除用户同意:

    Delete-TenantVMSession -ResourceID
    

    注意

    用户同意在 8 小时后自动过期,将会撤销操作员的所有访问权限。