Citrix DaaS
感谢您提供反馈

这篇文章已经过机器翻译.放弃

已加入 Azure Active Directory 的计算机身份的身份池

本文介绍如何使用 Citrix DaaS 创建已加入 Azure Active Directory 的计算机身份的身份池。

注意:

自 2023 年 7 月起,Microsoft 已将 Azure Active Directory (Azure AD) 重命名为 Microsoft Entra ID。 在本文档中,任何提及 Azure Active Directory、Azure AD 或 AAD 的内容现在均指 Microsoft Entra ID。

有关要求、限制和注意事项的信息,请参阅 已加入 Azure Active Directory.

在创建计算机目录之前,您需要满足以下条件:

  1. 新资源位置
    • 导航到 Citrix Cloud 管理员 UI > 左上方的汉堡菜单 > 资源位置.
    • 点击 + 资源位置.
    • 输入新资源位置的名称,然后单击 .
  2. 创建托管连接。 看 创建和管理连接 部分了解详细信息。 在 Azure 上部署计算机时,请参阅 连接到 Azure 资源管理器.

您可以使用 Studio 或 PowerShell 创建已加入 Azure AD 的目录。

使用 Studio

以下信息用于补充创建计算机目录中的指导信息。 要创建已加入 Azure AD 的目录,请按照该文章中的一般指导进行操作,并注意特定于已加入 Azure AD 的目录的详细信息。

在目录创建向导中执行以下操作:

  1. 图像 页:
    • 选择 2106 或更高版本作为功能级别。
    • 选择 使用计算机配置文件 ,然后从列表中选择相应的计算机。
  2. 计算机标识 页:

    • 选择 已加入 Azure Active Directory. 创建的计算机归组织所有,并使用属于该组织的 Azure AD 帐户登录。 它们只存在于云中。

      注意:

      • 已加入 Azure Active Directory 身份类型需要版本 2106 或更高版本作为目录的最低功能级别。
      • 计算机将加入与托管连接绑定到的租户关联的 Azure AD 域。
    • Click Select service account and select an available service account from the list. If a suitable service account is not available for the Azure AD tenant that the machine identities will join to, you can create a service account. For information on service account, see Azure AD service accounts.

      > **注意:**
      >
      > 由于各种原因,您选择的服务账户可能处于运行状况不佳。   You can go to **Administrators > Service Accounts** to [view details](/zh-cn/citrix-daas/install-configure/manage-service-accounts#view-service-account-details) and fix the issues according to the recommendations.   Alternatively, you can proceed with the machine catalog operation and fix the issues later.   If you do not fix the issue, stale Azure AD joined or Microsoft Intune enrolled devices are generated that can block Azure AD join of the machines.
      
  3. 必须在 Azure 中向用户授予显式访问权限,才能使用其 AAD 凭据登录计算机。 看 已加入 Azure Active Directory 部分了解更多详情。

修改服务账户关联

要更改关联的服务帐户或添加与现有 MCS 计算机目录的关联,请使用 编辑计算机目录 页。

  • 要添加服务账户,请单击 选择服务帐户服务帐户 页。
  • 要更改服务帐户关联,请单击 服务帐户 页。

使用 PowerShell

以下是 PowerShell 步骤等同于 Studio 中的操作。

已加入本地 AD 的目录与已加入 Azure AD 的目录之间的区别在于身份池的创建和供应方案。

您必须将 Azure AD 服务帐户与身份池关联,然后创建计算机目录。 您可以创建新的身份池或更新现有身份池以将其与服务账户关联。

例如:要创建新的身份池并将其与服务账户关联,请运行以下命令:

New-AcctIdentityPool -IdentityType AzureAD -IdentityPoolName MyPool -NamingScheme Acc#### -NamingSchemeType Numeric -ServiceAccountUid $serviceAccountUid

例如:要更新现有身份池以将其与服务账户关联,请运行以下命令:

$identityPoolUid = (Get-ProvScheme -ProvisioningSchemeName "MyProvScheme").IdentityPoolUid Set-AcctIdentityPool -IdentityPoolUid $identityPoolUid -ServiceAccountUid $serviceAccountUid

注意:

$serviceAccountUid 必须是 Azure AD 服务帐户的有效 UID。

要为 Azure AD 联接目录创建配置方案, New-ProvScheme中需要 MachineProfile 参数。 例如:

New-ProvScheme -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"StandardSSD_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Server`" /></CustomProperties>" -HostingUnitName "AzureResource" -IdentityPoolName "AzureADJoinedCatalog" -InitialBatchSizeHint 1 -MachineProfile "XDHyp:\HostingUnits\AzureResource\image.folder\azuread-rg.resourcegroup\MasterVDA.vm" -MasterImageVM "XDHyp:\HostingUnits\AzureResource\image.folder\azuread-rg.resourcegroup\azuread-small_OsDisk_1_5fb42fadf7ff460bb301ee0d56ea30da.manageddisk" -NetworkMapping @{"0"="XDHyp:\HostingUnits\AzureResource\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\azuread-rg.resourcegroup\azuread-vnet.virtualprivatecloud\Test_VNET.network"} -ProvisioningSchemeName "AzureADJoinedCatalog" -RunAsynchronously -Scope @() -SecurityGroup @() -ServiceOffering "XDHyp:\HostingUnits\AzureResource\serviceoffering.folder\Standard_DS1_v2.serviceoffering"

使用准备好的图像创建 Azure AD 目录。 例如:

New-ProvScheme -ProvisioningSchemeName <name> -ImageVersionSpecUid <preparedVersionSpecUid> -HostingUnitUid <hostingUnitUid> -IdentityPoolUid <IdentityPoolUid> [-CleanOnBoot] -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hostingunitName>\<region>.region\virtualprivatecloud.folder\<resourcegroupName>.resourcegroup\<vnetName>.virtualprivatecloud\<sunNetName>.network"} -ServiceOffering <serviceofferingPath> [-MachineProfile <machineProfilePath>] [-CustomProperties <>]

查看 Azure AD 加入过程的状态

在 Studio 中,当交付组中已加入 Azure AD 的计算机处于开机状态时,可以看到 Azure AD 加入过程的状态。 要查看状态,请使用 搜索 识别这些计算机,然后针对每项检查 机器身份 选项卡。 以下信息可以显示在 机器身份:

  • 已加入 Azure AD
  • 尚未加入 Azure AD

注意:

如果计算机无法处于已加入 Azure AD 的状态,则它们不会向 Delivery Controller 注册。 他们的注册状态显示为 初始化。

此外,使用 Studio,您可以了解计算机不可用的原因。 为此,请单击 搜索 节点中,选中 注册 选项卡,然后阅读工具提示以了解更多信息。

交付组

创建交付组 部分了解详细信息。

启用 Rendezvous

创建交付组后,您可以启用 Rendezvous。 看 Rendezvous V2 了解详情。

故障排除

如果计算机无法加入 Azure AD,请执行以下操作:

  • 检查是否为计算机启用了系统分配的托管标识。 MCS 置备的计算机必须自动启用此功能。 如果没有系统分配的托管标识,Azure AD 加入过程将失败。 如果没有为 MCS 置备的计算机启用系统分配的托管身份,可能的原因为:

    • 身份类型 未设置为 AzureAD. 可以通过运行 Get-AcctIdentityPool 来验证这一点。
  • 对于将主映像与 VDA 版本 2206 或更早版本结合使用的目录,请检查 AADLoginForWindows 机器的扩展。 如果 AADLoginForWindows 扩展程序不存在,可能的原因如下:

    • 身份类型 未设置为 AzureAD. 可以通过运行 Get-AcctIdentityPool 来验证这一点。

    • AADLoginForWindows Azure 策略阻止扩展安装。

  • 故障排除 AADLoginForWindows 扩展配置失败,您可以在 C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.ActiveDirectory.AADLoginForWindows 在 MCS 置备的计算机上。

    注意:

    MCS 不依赖于 AADLoginForWindows 扩展,以便在将主映像与 VDA 版本 2209 或更高版本结合使用时将 VM 加入 Azure AD。 在这种情况下, AADLoginForWindows 扩展不会安装在 MCS 置备的计算机上。 因此,无法收集 AADLoginForWindows 扩展程序预配日志。

  • 通过运行 dsregcmd /状态 命令。

  • 检查 Windows 事件日志 应用程序和服务日志 > Microsoft > 窗户 > 用户设备注册.
  • 通过运行 Get-Item -LiteralPath XDHyp:\Connections\${HostingConnectionName}.

    确保以下值:

    • AzureAdDeviceManagement property 中 自定义属性
    • Citrix_MCS_AzureAdDeviceManagement_PermissionGranted metadata 中的 property 是

    如果 Citrix_MCS_AzureAdDeviceManagement_PermissionGranted,则表示 ServicePrincipal 服务 未向托管连接使用的应用程序授予足够的权限来执行 Azure AD 设备管理。 要解决此问题,请分配 ServicePrincipal 服务 使用 云设备管理员 角色。

Azure Active Directory 动态安全组

动态组规则根据计算机目录的命名方案将目录中的 VM 置于动态安全组。

如果计算机目录的命名方案为 Test###(其中,# 表示数字),Citrix 将创建动态成员资格规则 ^测试[0-9]{3}$ 在 Dynamic security group (动态安全组) 中。 现在,如果 Citrix 创建的 VM 的名称介于 Test001 到 Test999 之间,则该 VM 将包含在动态安全组中。

注意:

如果您手动创建的 VM 的名称是从 Test001 到 Test999 之间的任何值,则该 VM 也包含在动态安全组中。 这是动态安全组的限制之一。

当您想通过 Azure Active Directory (Azure AD) 管理 VM 时,动态安全组功能非常有用。 当您想要应用条件访问策略或者通过使用 Azure AD 动态安全组筛选 VM 来分发来自 Intune 的应用程序时,这也非常有用。

您可以使用 PowerShell 命令用于:

  • 使用 Azure AD 动态安全组创建计算机目录
  • 为 Azure AD 目录启用安全组功能
  • 删除具有已加入 Azure AD 的设备安全组的计算机目录

-priority

使用 Azure AD 动态安全组创建计算机目录

  1. 在基于 Web 的控制台的计算机目录设置用户界面中,在 计算机标识 页面上,选择 已加入 Azure Active Directory.
  2. 登录到 Azure AD。
  3. 获取 MS Graph API 的访问令牌。 将此访问令牌用作 $AzureADAccessToken 参数,当您运行 PowerShell 命令。
  4. 运行以下命令以验证租户中是否存在动态安全组名称。

    Get-AcctAzureADSecurityGroup –AccessToken $AzureADAccessToken –Name "SecurityGroupName"
  5. 使用租户 ID、访问令牌和动态安全组创建计算机目录。 运行以下命令以创建 IdentityPool,其中包含 IdentityType=AzureAD 并在 Azure 中创建动态安全组。

    New-AcctIdentityPool -AllowUnicode -IdentityPoolName "SecurityGroupCatalog" -NamingScheme "SG-VM-###" -NamingSchemeType "Numeric" -Scope @() -ZoneUid "81291221-d2f2-49d2-ab12-bae5bbd0df05" -WorkgroupMachine -IdentityType "AzureAD" -DeviceManagementType "None" -AzureADTenantId 620387bb-9167-4bdd-8435-e3dccc58369e -AzureADSecurityGroupName "SecurityGroupName" -AzureADAccessToken $AzureADAccessToken

为 Azure AD 目录启用安全组功能

您可以为在未启用动态安全组功能的情况下创建的 Azure AD 目录启用动态安全功能。 为此,您需要:

  1. 手动创建新的动态安全组。 您还可以重复使用现有的动态安全组。
  2. 登录到 Azure AD,并获取 MS Graph API 的访问令牌。 将此访问令牌用作 $AzureADAccessToken 参数,当您运行 PowerShell 命令。

    注意:

    有关 Azure AD 用户所需权限的信息,请参阅 https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent#prerequisites/.

  3. 运行以下命令,将身份池连接到创建的 Azure AD 动态安全组。

    Set-AcctIdentityPool -IdentityPoolName "SecurityGroupCatalog" -AzureADTenantId 620387bb-9167-4bdd-8435-e3dccc58369e -AzureADSecurityGroupNam "ExistingSecurityGroupName" -AzureADAccessToken $AzureADAccessToken

如果更新命名方案,Citrix 会将命名方案更新为新的成员资格规则。 如果删除目录,则会删除成员身份规则,而不是安全组。

删除具有已加入 Azure AD 的设备安全组的计算机目录

删除计算机目录时,已加入 Azure AD 的设备安全组也会被删除。

若要删除 Azure AD 动态安全组,请执行以下操作:

  1. 登录到 Azure AD。
  2. 获取 MS Graph API 的访问令牌。 使用此访问令牌作为 $AzureADAccessToken 参数,当您运行 PowerShell 命令。
  3. 运行以下命令:

    Remove-AcctIdentityPool -IdentityPoolName "SecurityGroupCatalog" -AzureADAccessToken $AzureADAccessToken

在现有的 Azure AD 分配的安全组下创建 Azure AD 动态安全组

您可以在现有的 Azure AD 分配的安全组下创建 Azure AD 动态安全组。 可执行以下操作:

  • 获取安全组信息。
  • 获取从本地 AD 服务器同步的所有 Azure AD 分配的安全组或可分配 Azure AD 角色的已分配安全组。
  • 获取所有 Azure AD 动态安全组。
  • 将 Azure AD 动态安全组添加为已分配 Azure AD 的组的成员。
  • 删除 Azure AD 动态安全组和计算机目录时,删除 Azure AD 动态安全组与 Azure AD 分配的安全组之间的成员资格。

您还可以在任何操作失败时看到明确的错误消息。

要求:

在运行 PowerShell 命令。

要获取访问令牌,请执行以下操作:

  1. 打开 Microsoft Graph 浏览器 并登录到 Azure AD。
  2. 确保您已同意 组.ReadWrite.AllGroupMember.ReadWrite.All 权限。
  3. 从 Microsoft Graph 浏览器获取访问令牌。 在运行 PowerShell 命令。

要按组 ID 获取安全组信息,请执行以下操作:

  1. 获取 access token。
  2. 从 Azure 门户查找组对象 ID。
  3. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -GroupId <GroupUid>

要按组显示名称获取安全组,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -Name <TargetGroupDisplayName>

要获取显示名称包含子字符串的安全组,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -SearchString <displayNameSubString>

若要获取从本地 AD 服务器同步的所有 Azure AD 分配的安全组,或获取可向其分配 Azure AD 角色的已分配安全组,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -Assigned true

若要获取所有 Azure AD 动态安全组,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -Dynamic true

若要获取 Azure AD 分配的具有最大记录计数的安全组,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroup -AccessToken <token> -Assigned true -MaxRecordCount 10

若要将 Azure AD 动态安全组添加为 Azure AD 分配的安全组的成员,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Add-AcctAzureADSecurityGroupMember -AccessToken <token> -GroupId <ASG-Id> -RefGroupId <DSG-Id>

若要获取 Azure AD 分配的安全组成员,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Get-AcctAzureADSecurityGroupMember -AccessToken <token> -GroupId <ASG-Id>

    注意:

    Get-AcctAzureADSecurityGroupMember 仅在 Azure AD 分配的安全组下提供安全组类型的直接成员。

要在删除 Azure AD 动态安全组和计算机目录时删除 Azure AD 动态安全组和 Azure AD 分配的安全组之间的成员身份,请执行以下操作:

  1. 获取 access token。
  2. 运行以下命令 PowerShell 命令中的 PowerShell 安慰:

    Remove-AcctIdentityPool -IdentityPoolName "SecurityGroupCatalog" -AzureADAccessToken $AzureADAccessToken

修改 Azure AD 动态安全组名称

您可以修改与计算机目录关联的 Azure AD 动态安全组名称。 此修改使存储在 Azure AD 身份池对象中的安全组信息与 Azure 门户中存储的信息一致。

注意:

Azure AD 动态安全组不包括从本地 AD 和其他组类型(如 Office 365 组)同步的安全组。

您可以使用 Studio 和 PowerShell 命令修改 Azure AD 动态安全组名称。

若要使用 PowerShell:

  1. 打开 PowerShell 窗口。
  2. ASNP Citrix * 以加载 Citrix 特定的 PowerShell 模块。
  3. 运行命令 Set-AcctIdentityPool -AzureAdSeurityGroupName [DSG-名称].

如果无法修改 Azure AD 动态安全组名称,则会收到相应的错误消息。

更多信息

本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。