Citrix Virtual Apps and Desktops

Conexión a Microsoft Azure

Crear y administrar conexiones y recursos describe los asistentes que crean una conexión. La siguiente información cubre los detalles específicos de los entornos de nube de Azure Resource Manager.

Nota:

Antes de crear una conexión a Microsoft Azure, debes terminar de configurar tu cuenta de Azure como una ubicación de recursos. Consulta Entornos de nube de Azure Resource Manager de Microsoft.

Crear entidades de servicio y conexiones

Antes de crear conexiones, debes configurar las entidades de servicio que las conexiones usan para acceder a los recursos de Azure. Puedes crear una conexión de dos maneras:

  • Crea una entidad de servicio y una conexión juntas mediante Web Studio
  • Crea una conexión mediante una entidad de servicio creada anteriormente

Esta sección te muestra cómo completar estas tareas:

Consideraciones

  • Citrix® recomienda usar una entidad de servicio con el rol de colaborador. Sin embargo, consulta la sección Permisos mínimos para obtener la lista de permisos mínimos.
  • Al crear la primera conexión, Azure te pide que le concedas los permisos necesarios. Para futuras conexiones, aún debes autenticarte, pero Azure recuerda tu consentimiento anterior y no vuelve a mostrar la solicitud.
  • Las cuentas usadas para la autenticación deben tener permisos para asignar roles en la suscripción mediante Azure RBAC. Por ejemplo, Propietario, Administrador de control de acceso basado en roles o Administrador de acceso de usuario de la suscripción.
  • La cuenta usada para la autenticación debe ser miembro del directorio de la suscripción. Hay dos tipos de cuentas que debes tener en cuenta: “Trabajo o escuela” y “cuenta personal de Microsoft”. Consulta CTX219211 para obtener más detalles.
  • Aunque puedes usar una cuenta de Microsoft existente agregándola como miembro del directorio de la suscripción, puede haber complicaciones si al usuario se le concedió previamente acceso de invitado a uno de los recursos del directorio. En este caso, es posible que tengan una entrada de marcador de posición en el directorio que no les conceda los permisos necesarios y se devuelva un error.

    Rectifica esto quitando los recursos del directorio y volviéndolos a agregar explícitamente. Sin embargo, ejerce esta opción con cuidado, ya que tiene efectos no deseados en otros recursos a los que la cuenta puede acceder.

  • Existe un problema conocido por el que ciertas cuentas se detectan como invitados del directorio cuando en realidad son miembros. Configuraciones como esta suelen ocurrir con cuentas de directorio más antiguas y establecidas. Solución alternativa: agrega una cuenta al directorio, que toma el valor de membresía adecuado.
  • Los grupos de recursos son simplemente contenedores de recursos y pueden contener recursos de regiones distintas a la suya propia. Esto puede ser confuso si esperas que los recursos mostrados en la región de un grupo de recursos estén disponibles.
  • Asegúrate de que tu red y subred sean lo suficientemente grandes como para alojar la cantidad de máquinas que necesitas. Esto requiere cierta previsión, pero Microsoft te ayuda a especificar los valores correctos, con orientación sobre la capacidad del espacio de direcciones.

Crear una entidad de servicio y una conexión mediante Web Studio

Importante:

Esta característica aún no está disponible para las suscripciones de Azure China.

Con Web Studio, puedes crear una entidad de servicio y una conexión en un único flujo de trabajo. Las entidades de servicio dan a las conexiones acceso a los recursos de Azure. Cuando te autenticas en Azure para crear una entidad de servicio, se registra una aplicación en Azure. Se crea una clave secreta (llamada secreto de cliente o secreto de aplicación) para la aplicación registrada. La aplicación registrada (una conexión en este caso) usa el secreto de cliente para autenticarse en Microsoft Entra ID.

Antes de empezar, asegúrate de haber cumplido estos requisitos previos:

  • Tienes una cuenta de usuario en el inquilino de Microsoft Entra de tu suscripción.
  • Las cuentas usadas para la autenticación deben tener permisos para asignar roles en la suscripción mediante Azure RBAC. Por ejemplo, Propietario, Administrador de control de acceso basado en roles o Administrador de acceso de usuario de la suscripción.
  • Tienes permisos de administrador global, administrador de aplicaciones o desarrollador de aplicaciones para la autenticación. Estos permisos se pueden revocar después de crear la conexión de host. Para obtener más información sobre los roles, consulta Roles integrados de Microsoft Entra.

Usa el asistente Agregar conexión y recursos para crear una entidad de servicio y una conexión juntas:

  1. En la página Conexión, selecciona Crear una nueva conexión, el tipo de conexión Microsoft Azure y tu entorno de Azure.
  2. Selecciona qué herramientas usar para crear las máquinas virtuales y, a continuación, selecciona Siguiente.
  3. En la página Detalles de conexión, introduce tu ID de suscripción de Azure y un nombre para la conexión. Después de introducir el ID de suscripción, el botón Crear nuevo se habilita.

    Nota:

    El nombre de la conexión puede contener entre 1 y 64 caracteres, y no puede contener solo espacios en blanco ni los caracteres \\/;:#.*?=<>|[]{}"'()'.

  4. Selecciona Crear nuevo y, a continuación, introduce el nombre de usuario y la contraseña de la cuenta de Microsoft Entra.
  5. Selecciona Iniciar sesión.
  6. Selecciona Aceptar para dar a Citrix Virtual Apps and Desktops™ los permisos indicados. Citrix Virtual Apps and Desktops crea una entidad de servicio que le permite administrar recursos de Azure en nombre del usuario especificado.
  7. Después de seleccionar Aceptar, vuelves a la página Conexión del asistente.

    Nota:

    Después de autenticarte correctamente en Azure, los botones Crear nuevo y Usar existente desaparecen. Aparece el texto Conexión correcta, con una marca de verificación verde, lo que indica la conexión correcta a tu suscripción de Azure.

  8. En la página Detalles de conexión, selecciona Siguiente.

    Nota:

    No puedes pasar a la página siguiente hasta que te autentiques correctamente en Azure y consientas en dar los permisos necesarios.

  9. Configura los recursos para la conexión. Los recursos comprenden la región y la red.

    • En la página Región, selecciona una región.
    • En la página Red, haz lo siguiente:
      • Escribe un nombre de recurso de entre 1 y 64 caracteres para ayudar a identificar la combinación de región y red. Un nombre de recurso no puede contener solo espacios en blanco ni los caracteres \\/;:#.*?=<>|[]{}"'()'.
      • Selecciona un par de red virtual/grupo de recursos. (Si tienes más de una red virtual con el mismo nombre, emparejar el nombre de la red con el grupo de recursos proporciona combinaciones únicas). Si la región que seleccionaste en la página anterior no tiene ninguna red virtual, vuelve a esa página y selecciona una región que tenga redes virtuales.
  10. En la página Resumen, consulta un resumen de la configuración y selecciona Finalizar para completar la configuración.

Ver el ID de la aplicación

Después de crear una conexión, puedes ver el ID de la aplicación que la conexión usa para acceder a los recursos de Azure.

En la lista Agregar conexión y recursos, selecciona la conexión para ver los detalles. La ficha Detalles muestra el ID de la aplicación.

Crear una entidad de servicio mediante PowerShell

Para crear una entidad de servicio mediante PowerShell, conéctate a tu suscripción de Azure Resource Manager y usa los cmdlets de PowerShell proporcionados en las siguientes secciones.

Asegúrate de tener estos elementos listos:

  • SubscriptionId: Azure Resource Manager SubscriptionID para la suscripción donde quieres aprovisionar VDAs.
  • ActiveDirectoryID: Tenant ID de la aplicación que registraste con Microsoft Entra ID.
  • ApplicationName: Nombre de la aplicación que se va a crear en Microsoft Entra ID.

Los pasos detallados son los siguientes:

  1. Conéctate a tu suscripción de Azure Resource Manager.

    Connect-AzAccount

  2. Selecciona la suscripción de Azure Resource Manager donde quieres crear la entidad de servicio.

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. Crea la aplicación en tu inquilino de AD.

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. Crea una entidad de servicio.

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. Asigna un rol a la entidad de servicio.

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. Desde la ventana de salida de la consola de PowerShell, anota el ApplicationId. Proporcionarás ese ID al crear la conexión de host.

Obtener el secreto de la aplicación en Azure

Para crear una conexión mediante una entidad de servicio existente, primero debes obtener el ID de la aplicación y el secreto de la entidad de servicio en el portal de Azure.

Los pasos detallados son los siguientes:

  1. Obtén el ID de la aplicación desde Web Studio o mediante PowerShell.
  2. Inicia sesión en el portal de Azure.
  3. En Azure, selecciona Microsoft Entra ID.
  4. Desde Registros de aplicaciones en Microsoft Entra ID, selecciona tu aplicación.
  5. Ve a Certificados y secretos.
  6. Haz clic en Secretos de cliente.

Crear una conexión mediante una entidad de servicio existente

Si ya tienes una entidad de servicio, puedes usarla para crear una conexión mediante Web Studio.

Asegúrate de tener estos elementos listos:

  • SubscriptionId
  • ActiveDirectoryID (ID de inquilino)
  • ID de la aplicación
  • Secreto de la aplicación Para obtener más información, consulta Obtener el secreto de la aplicación.
  • Fecha de caducidad del secreto

Los pasos detallados son los siguientes:

En el asistente Agregar conexión y recursos:

  1. En la página Conexión, selecciona Crear una nueva conexión, el tipo de conexión Microsoft Azure y tu entorno de Azure.

  2. Selecciona qué herramientas usar para crear las máquinas virtuales y, a continuación, selecciona Siguiente.

  3. En la página Detalles de conexión, introduce tu ID de suscripción de Azure y un nombre para la conexión.

    Nota:

    El nombre de la conexión puede contener entre 1 y 64 caracteres, y no puede contener solo espacios en blanco ni los caracteres \\/;:#.*?=<>|[]{}"'()'.

  4. Selecciona Usar existente. En la ventana Detalles de la entidad de servicio existente, introduce la siguiente configuración para la entidad de servicio existente. Después de introducir los detalles, el botón Guardar se habilita. Selecciona Guardar. No puedes avanzar más allá de esta página hasta que proporciones detalles válidos.

    • ID de suscripción. Introduce tu ID de suscripción de Azure. Para obtener tu ID de suscripción, inicia sesión en el portal de Azure y navega a Suscripciones > Información general.
    • ID de Active Directory (ID de inquilino). Introduce el ID de directorio (inquilino) de la aplicación que registraste con Azure AD.
    • ID de la aplicación. Introduce el ID de aplicación (cliente) de la aplicación que registraste con Azure AD.
    • Secreto de la aplicación. Crea una clave secreta (secreto de cliente). La aplicación registrada usa la clave para autenticarse en Azure AD. Te recomendamos que cambies las claves regularmente por motivos de seguridad. Asegúrate de guardar la clave porque no podrás recuperarla más tarde.
    • Fecha de caducidad del secreto. Introduce la fecha después de la cual caduca el secreto de la aplicación. Verás un icono de advertencia en la conexión de host específica en el nodo Alojamiento a partir de 14 días antes de que caduque la clave secreta. Sin embargo, si la clave secreta caduca, recibirás errores.

      Nota:

      Por motivos de seguridad, el período de caducidad no puede ser superior a dos años a partir de ahora.

    • URL de autenticación. Este campo se rellena automáticamente y no es editable.
    • URL de administración. Este campo se rellena automáticamente y no es editable.
    • Sufijo de almacenamiento. Este campo se rellena automáticamente y no es editable.
    • Punto de conexión de Azure Blob Storage para cargar o descargar discos o instantáneas. Este campo se rellena automáticamente y no es editable.
    • Servicio Key Vault. Este campo se rellena automáticamente y no es editable.
    • Sufijo de Service Bus. Este campo se rellena automáticamente y no es editable.

      El acceso a los siguientes puntos de conexión es necesario para crear un catálogo de MCS en Azure. El acceso a estos puntos de conexión optimiza la conectividad entre tu red y el portal de Azure y sus servicios.

      • URL de autenticación: https://login.microsoftonline.com
      • URL de administración: https://management.azure.com. Esta es una URL de solicitud para las API del proveedor de Azure Resource Manager. El punto de conexión para la administración depende del entorno. Por ejemplo, para Azure Global, es https://management.azure.com, y para Azure US Government, es https://management.usgovcloudapi.net.
      • Sufijo de almacenamiento: https://*.core.windows.net. Este (*) es un carácter comodín para el sufijo de almacenamiento. Por ejemplo, https://demo.table.core.windows.net.
      • Punto de conexión de Azure Blob Storage para cargar o descargar discos o instantáneas: https://*.storage.azure.net. Este (*) es un carácter comodín para las operaciones de importación y exportación de Blob Storage. Por ejemplo, https://md-impexp-xxxxx.z[00-50].blob.storage.azure.net.
      • Servicio Key Vault: https://*.vault.azure.net. Este (*) es un carácter comodín para el nombre del almacén de claves. Por ejemplo, https://<your-key-vault-name>.vault.azure.net.
      • Sufijo de Service Bus: https://*.servicebus.windows.net. Este (*) es un carácter comodín para los espacios de nombres creados en la nube global de Azure. Por ejemplo, https://{serviceNamespace}.servicebus.windows.net/{path}.
  5. Después de seleccionar Guardar, vuelves a la página Detalles de la conexión. Selecciona Siguiente para continuar con la página siguiente.
  6. Configura los recursos para la conexión. Los recursos comprenden la región y la red.

    • En la página Región, selecciona una región.
    • En la página Red, haz lo siguiente:
      • Escribe un nombre de recurso de 1–64 caracteres para ayudar a identificar la combinación de región y red. Un nombre de recurso no puede contener solo espacios en blanco ni los caracteres \/;:#.*?=<>|[]{}"'()'.
      • Selecciona un par de red virtual/grupo de recursos. (Si tienes más de una red virtual con el mismo nombre, emparejar el nombre de la red con el grupo de recursos proporciona combinaciones únicas). Si la región que seleccionaste en la página anterior no tiene ninguna red virtual, vuelve a esa página y selecciona una región que tenga redes virtuales.
  7. En la página Resumen, consulta un resumen de la configuración y selecciona Finalizar para completar tu configuración.

Administrar entidades de servicio y conexiones

Esta sección detalla cómo puedes administrar entidades de servicio y conexiones:

Configurar los ajustes de limitación de Azure

Azure Resource Manager limita las solicitudes de suscripciones e inquilinos, enrutando el tráfico según límites definidos y adaptados a las necesidades específicas del proveedor. Consulta Limitación de solicitudes de Resource Manager en el sitio de Microsoft para obtener más información. Existen límites para suscripciones e inquilinos, donde la administración de muchas máquinas puede volverse problemática. Por ejemplo, una suscripción que contenga muchas máquinas podría experimentar problemas de rendimiento relacionados con las operaciones de energía.

Consejo:

Para obtener más información, consulta Mejorar el rendimiento de Azure con Machine Creation Services.

Para ayudar a mitigar estos problemas, puedes quitar la limitación interna de MCS para usar más de la cuota de solicitudes disponible de Azure.

Te recomendamos la siguiente configuración óptima al encender o apagar máquinas virtuales en suscripciones grandes, por ejemplo, las que contienen 1000 máquinas virtuales:

  • Operaciones simultáneas absolutas: 500
  • Máximo de operaciones nuevas por minuto: 2000
  • Concurrencia máxima de operaciones: 500

Usa Web Studio para configurar las operaciones de Azure para una conexión de Azure determinada:

  1. En Web Studio, selecciona Alojamiento en el panel izquierdo.
  2. Selecciona la conexión.
  3. En el asistente Modificar conexión, selecciona Avanzado.
  4. En la página Avanzado, usa las opciones de configuración para especificar el número de acciones simultáneas y el máximo de acciones nuevas por minuto, así como cualquier opción de conexión adicional.

Limitación de Azure

MCS admite un máximo de 500 operaciones simultáneas de forma predeterminada. Alternativamente, puedes usar el SDK de PowerShell remoto para establecer el número máximo de operaciones simultáneas.

Usa la propiedad de PowerShell, MaximumConcurrentProvisioningOperations, para especificar el número máximo de operaciones de aprovisionamiento simultáneas de Azure. Al usar esta propiedad, ten en cuenta lo siguiente:

  • El valor predeterminado de MaximumConcurrentProvisioningOperations es 500.
  • Configura el parámetro MaximumConcurrentProvisioningOperations mediante el comando de PowerShell Set-item.

Habilitar el uso compartido de imágenes en Azure

Al crear o actualizar catálogos de máquinas, puedes seleccionar imágenes compartidas de diferentes inquilinos y suscripciones de Azure (compartidas a través de Azure Compute Gallery). Para habilitar el uso compartido de imágenes dentro o entre inquilinos, debes realizar la configuración necesaria en Azure:

Compartir imágenes dentro de un inquilino (entre suscripciones)

Para seleccionar una imagen en Azure Compute Gallery que pertenezca a una suscripción diferente, la imagen debe compartirse con la entidad de servicio (SPN) de esa suscripción.

Por ejemplo, si hay una entidad de servicio (SPN 1), que está configurada en Studio como:

Entidad de servicio: SPN 1

Suscripción: suscripción 1

Inquilino: inquilino 1

La imagen está en una suscripción diferente, que está configurada en Studio como:

Suscripción: suscripción 2

Inquilino: inquilino 1

Si quieres compartir la imagen de la suscripción 2 con la suscripción 1 (SPN 1), ve a la suscripción 2 y comparte el grupo de recursos con SPN1.

La imagen debe compartirse con otra SPN mediante el control de acceso basado en roles (RBAC) de Azure. Azure RBAC es el sistema de autorización que se usa para administrar el acceso a los recursos de Azure. Para obtener más información sobre Azure RBAC, consulta el documento de Microsoft ¿Qué es el control de acceso basado en roles (RBAC) de Azure?. Para conceder acceso, asignas roles a las entidades de servicio en el ámbito del grupo de recursos con el rol Colaborador. Para asignar roles de Azure, debes tener el permiso Microsoft.Authorization/roleAssignments/write, como Administrador de acceso de usuario o Propietario. Para obtener más información sobre cómo compartir imágenes con otra SPN, consulta el documento de Microsoft Asignar roles de Azure mediante Azure Portal.

Para obtener información sobre cómo seleccionar una imagen de una suscripción diferente mediante comandos de PowerShell, consulta Seleccionar una imagen de una suscripción diferente.

Compartir imágenes entre inquilinos

Para compartir imágenes entre inquilinos con Azure Compute Gallery, crea un registro de aplicación.

Por ejemplo, si hay dos inquilinos (Inquilino 1 e Inquilino 2) y quieres compartir tu galería de imágenes con el Inquilino 1, entonces:

  1. Crea un registro de aplicación para el Inquilino 1. Para obtener más información, consulta Crear el registro de la aplicación.

  2. Concede acceso al Inquilino 2 a la aplicación solicitando un inicio de sesión mediante un explorador. Reemplaza Tenant2 ID por el ID de inquilino del Inquilino 1. Reemplaza Application (client) ID por el ID de aplicación del registro de aplicación que creaste. Cuando hayas terminado de realizar los reemplazos, pega la URL en un explorador y sigue las indicaciones de inicio de sesión para iniciar sesión en el Inquilino 2. Por ejemplo:

    https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F
    <!--NeedCopy-->
    

    Para obtener más información, consulta Conceder acceso al Inquilino 2.

  3. Concede acceso a la aplicación al grupo de recursos del Inquilino 2. Inicia sesión como Inquilino 2 y concede acceso al registro de la aplicación al grupo de recursos que tiene la imagen de la galería. Para obtener más información, consulta Autenticar solicitudes entre inquilinos.

Para crear un catálogo usando una imagen de un inquilino diferente mediante comandos de PowerShell:

  1. Actualizar las propiedades personalizadas de la conexión de alojamiento con los ID de inquilino compartidos.
  2. Seleccionar una imagen de un inquilino diferente.

Agregar inquilinos compartidos a una conexión mediante Web Studio

Al crear o actualizar catálogos de máquinas en Web Studio, puedes seleccionar imágenes compartidas de diferentes inquilinos y suscripciones de Azure (compartidas a través de Azure Compute Gallery). La función requiere que proporciones información de inquilino y suscripción compartidos para las conexiones de host asociadas.

Nota:

Asegúrate de haber configurado los ajustes necesarios en Azure para habilitar el uso compartido de imágenes entre inquilinos. Para obtener más información, consulta Compartir imágenes entre inquilinos.

Completa los siguientes pasos para una conexión:

  1. En Web Studio, selecciona Alojamiento en el panel izquierdo.
  2. Selecciona la conexión y, a continuación, selecciona Modificar conexión en la barra de acciones.

    Inquilinos compartidos

  3. En Inquilinos compartidos, haz lo siguiente:

    • Proporciona el ID de aplicación y el secreto de aplicación asociados a la suscripción de la conexión. Citrix Virtual Apps™ and Desktops usa esta información para autenticarse en Microsoft Entra ID.
    • Agrega inquilinos y suscripciones que compartan Azure Compute Gallery con la suscripción de la conexión. Puedes agregar hasta 8 inquilinos compartidos y 8 suscripciones por cada inquilino.
  4. Cuando hayas terminado, selecciona Aplicar para aplicar los cambios que realizaste y mantener la ventana abierta, o selecciona Aceptar para aplicar los cambios y cerrar la ventana.

Implementar el uso compartido de imágenes mediante PowerShell

Esta sección te guía a través de los procesos de uso compartido de imágenes mediante PowerShell:

Seleccionar una imagen de una suscripción diferente

Puedes seleccionar una imagen en Azure Compute Gallery que pertenezca a una suscripción compartida diferente en el mismo inquilino de Azure para crear y actualizar catálogos de MCS mediante comandos de PowerShell.

  1. En la carpeta raíz de la unidad de alojamiento, Citrix crea una nueva carpeta de suscripción compartida llamada sharedsubscription.
  2. Enumera todas las suscripciones compartidas en un inquilino.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"
    <!--NeedCopy-->
    
  3. Selecciona una suscripción compartida y, a continuación, enumera todos los grupos de recursos compartidos de esa suscripción compartida.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription"
    <!--NeedCopy-->
    
  4. Selecciona un grupo de recursos y, a continuación, enumera todas las galerías de ese grupo de recursos.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup"
    <!--NeedCopy-->
    
  5. Selecciona una galería y, a continuación, enumera todas las definiciones de imagen de esa galería.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery"
    <!--NeedCopy-->
    
  6. Selecciona una definición de imagen y, a continuación, enumera todas las versiones de imagen de esa definición de imagen.

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
    <!--NeedCopy-->
    
  7. Crea y actualiza un catálogo de MCS con los siguientes elementos:

    • Grupo de recursos
    • Galería
    • Definición de imagen de galería
    • Versión de imagen de galería

    Para obtener información sobre cómo crear un catálogo mediante el SDK de PowerShell remoto, consulta https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/.

Actualizar las propiedades personalizadas de la conexión de alojamiento con los ID de inquilino compartidos

Usa Set-Item para actualizar las propiedades personalizadas de la conexión de alojamiento con los ID de inquilino compartidos y los ID de suscripción. Agrega una propiedad SharedTenants en CustomProperties. El formato de Shared Tenants es:

[{"Tenant":"94367291-119e-457c-bc10-25337231f7bd","Subscriptions":["7bb42f40-8d7f-4230-a920-be2781f6d5d9"]},{"Tenant":"50e83564-c4e5-4209-b43d-815c45659564","Subscriptions":["06ab8944-6a88-47ee-a975-43dd491a37d0"]}]
<!--NeedCopy-->

Por ejemplo:

Set-Item -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"123`" />
<Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
<Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"123abc`" />
<Property xsi:type=`"StringProperty`" Name=`"SharedTenants`" Value=`"`[ { 'Tenant':'123abc', 'Subscriptions':['345', '567'] } ]`"` />
</CustomProperties>"
-LiteralPath @("XDHyp:\Connections\aazure") -PassThru -UserName "advc345" -SecurePassword
$psd
<!--NeedCopy-->

Nota:

Puedes agregar más de un inquilino. Cada inquilino puede tener más de una suscripción.

Seleccionar una imagen de un inquilino diferente

Puedes seleccionar una imagen en Azure Compute Gallery que pertenezca a un inquilino de Azure diferente para crear y actualizar catálogos de MCS mediante comandos de PowerShell.

  1. En la carpeta raíz de la unidad de alojamiento, Citrix crea una nueva carpeta de suscripción compartida llamada sharedsubscription.
  2. Enumera todas las suscripciones compartidas.

    Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder
    <!--NeedCopy-->
    
  3. Selecciona una suscripción compartida y, a continuación, enumera todos los grupos de recursos compartidos de esa suscripción compartida.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription
    <!--NeedCopy-->
    
  4. Selecciona un grupo de recursos y, a continuación, enumera todas las galerías de ese grupo de recursos.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup
    <!--NeedCopy-->
    
  5. Selecciona una galería y, a continuación, enumera todas las definiciones de imagen de esa galería.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery
    <!--NeedCopy-->
    
  6. Selecciona una definición de imagen y, a continuación, enumera todas las versiones de imagen de esa definición de imagen.

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition
    <!--NeedCopy-->
    
  7. Crea y actualiza un catálogo de MCS con los siguientes elementos:

    • Grupo de recursos
    • Galería
    • Definición de imagen de galería
    • Versión de imagen de galería

    Para obtener información sobre cómo crear un catálogo mediante el SDK de PowerShell remoto, consulta https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/.

Administrar el secreto de la aplicación y la fecha de caducidad del secreto

Asegúrate de cambiar el secreto de la aplicación para una conexión antes de que caduque. Verás un icono de advertencia en la conexión de host específica en el nodo Alojamiento a partir de 14 días antes de que caduque la clave secreta. Sin embargo, si la clave secreta caduca, recibirás errores.

Crear un secreto de aplicación en Azure

Puedes crear un secreto de aplicación para una conexión a través del portal de Azure.

  1. Selecciona Microsoft Entra ID.
  2. En Registros de aplicaciones de Microsoft Entra ID, selecciona tu aplicación.
  3. Ve a Certificados y secretos.
  4. Haz clic en Secretos de cliente > Nuevo secreto de cliente.
  5. Proporciona una descripción del secreto y especifica una duración. Cuando hayas terminado, selecciona Agregar.

    Nota:

    Asegúrate de guardar el secreto de cliente porque no podrás recuperarlo más tarde.

  6. Copia el valor del secreto de cliente y la fecha de caducidad.
  7. En Web Studio, modifica la conexión correspondiente y reemplaza el contenido de los campos Secreto de aplicación y Fecha de caducidad del secreto con los valores que copiaste.

Cambiar la fecha de caducidad del secreto

Puedes usar Web Studio para agregar o modificar la fecha de caducidad del secreto de aplicación en uso.

Nota:

Verás un icono de advertencia en la conexión de host específica en el nodo Alojamiento a partir de 14 días antes de que caduque la clave secreta.

  1. En el asistente Agregar conexión y recursos, haz clic con el botón derecho en una conexión y haz clic en Modificar conexión.
  2. En la página Propiedades de conexión, haz clic en Fecha de caducidad del secreto para agregar o modificar la fecha de caducidad del secreto de aplicación en uso.

Usar un grupo de seguridad de red precreado

Crea un grupo de seguridad de red Denegar todo para la preparación de imágenes en lugar de solicitar a Citrix que cree y modifique el NSG. Modifica las propiedades personalizadas de la unidad de alojamiento mediante un comando de PowerShell Set-Item para incluir el parámetro NsgForPreparation y proporcionar el grupo de seguridad de red Denegar todo.

Requisitos previos

Configura los siguientes permisos necesarios para una entidad de servicio:

  • Microsoft.Network/networkSecurityGroups/join/action: Asociar un grupo de seguridad de red a una subred o interfaz de red
  • Microsoft.Network/networkSecurityGroups/read: Obtiene el grupo de seguridad de red
  • Microsoft.Network/networkSecurityGroups/securityRules/read: Obtiene la regla

Agregar el grupo de seguridad de red Denegar todo precreado

Para agregar el grupo de seguridad de red Denegar todo precreado, configura las propiedades personalizadas de la siguiente manera en la unidad de alojamiento:

  1. Abre una ventana de PowerShell mediante el SDK de PowerShell remoto.
  2. Ejecuta los siguientes comandos:

    Add-PSSnapin citrix*.
    cd XDHyp:\HostingUnits\
    Dir
    <!--NeedCopy-->
    
  3. Selecciona una unidad de alojamiento para recuperar los detalles:

    Get-Item "XDHyp:\HostingUnits\<hostingunitname>"
    <!--NeedCopy-->
    
  4. Copia las CustomProperties en un bloc de notas y anexa la configuración de propiedad <Property xsi:type="StringProperty” Name="NsgForPreparation” Value="{ResourceGroupName}/{NetworkSecurityGroupName}"/>. Por ejemplo:

    <CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`"{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>
    <!--NeedCopy-->
    
  5. En la ventana de PowerShell, asigna una variable a las propiedades personalizadas modificadas. Por ejemplo:

    $customProperty = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`"{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>"
    <!--NeedCopy-->
    
  6. Ejecuta $cred = Get-Credential. Si se te solicita, proporciona las credenciales de conexión. Las credenciales son el ID de aplicación de Azure y el secreto.
  7. Ejecuta el siguiente comando.

    Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password
    <!--NeedCopy-->
    

    Importante:

    Si recibes un mensaje que indica que falta SubscriptionId, reemplaza todas las comillas dobles (“) por una tilde invertida seguida de comillas dobles () en la propiedad personalizada.

  8. Ejecuta dir para verificar la configuración actualizada de CustomProperties.

Nota:

Las actualizaciones tardan más de un minuto en reflejarse.

Recuperar detalles del grupo de seguridad de red

Para recuperar los detalles del grupo de seguridad de red, primero recupera los grupos de recursos que contienen el grupo de seguridad de red y, a continuación, recupera el grupo de seguridad de red basándote en el nombre del grupo de recursos.

  1. Recupera los grupos de recursos que contienen el grupo de seguridad de red. Por ejemplo:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}'
    <!--NeedCopy-->
    
  2. Recupera el grupo de seguridad de red basándote en el nombre del grupo de recursos. Por ejemplo:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType securitygroup -MaxRecords 5 -AdditionalDataFilter '{"location": ["eastus", "westus"], "resourcegroup":["resourcegroupname"]}'
    <!--NeedCopy-->
    

Filtrar grupos de recursos vacíos

Usa el comando de PowerShell Get-HypInventoryItem para filtrar grupos de recursos vacíos al seleccionar una imagen maestra, un perfil de máquina o una imagen preparada durante la creación del catálogo de máquinas.

Ejemplos:

  • Recupera el número máximo de registros en una página:

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • Recupera el número máximo de registros en una página y filtra para encontrar contenedores de recursos que tengan recursos específicos.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • Recupera con omisión para indicar directamente la página y filtra para encontrar contenedores de recursos que tengan recursos específicos.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -skip 20 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • Usa un token para recuperar la página siguiente y filtra para encontrar contenedores de recursos que tengan recursos específicos.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' -ContinuationToken 'ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDUsDQogICJSb3dzVG9Ta2lwIjogMjUsDQogICJLdXN0b0NsdXN0ZXJVcmwiOiAiaHR0cHM6Ly9hcmctbmV1LTEzLXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=='
     <!--NeedCopy-->
    
  • Recupera todos los grupos de recursos con la etiqueta interna de Citrix y limita el número máximo de registros con MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • Filtra por perfil de máquina (imagen maestra) con la etiqueta interna de Citrix y limita el número máximo de registros con MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Filtra por imagen preparada con la etiqueta interna de Citrix y limita el número máximo de registros con MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion"]}'
     <!--NeedCopy-->
    
  • Filtra por perfil de máquina (imagen preparada) con la etiqueta interna de Citrix y limita el número máximo de registros con MaxRecords.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Filtra por imagen con la etiqueta interna de Citrix y limita el número máximo de registros con MaxRecords y la ubicación.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"], "location": ["eastus", "westus"]}'
     <!--NeedCopy-->
    
  • Recupera todos los grupos de recursos sin considerar las etiquetas CitrixResource.

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $true
     <!--NeedCopy-->
    

Conectarse al entorno de nube Azure Sovereign Airgap

El entorno de nube Azure Sovereign Airgap es adecuado para cargas de trabajo de alto secreto que deben estar en dominios de red segregados. Puedes conectarte al entorno de nube Azure Sovereign Airgap usando una propiedad personalizada DisableInstanceDiscovery al crear una conexión de host.

<Property xsi:type="StringProperty" Name="DisableInstanceDiscovery" Value="true" />
<!--NeedCopy-->

Consulta Create-HostingConnection.ps1 para obtener más información sobre cómo crear una conexión de host de Azure.

Permisos de Azure necesarios

Esta sección contiene los permisos mínimos y generales necesarios para Azure.

Permisos mínimos

Los permisos mínimos ofrecen un mejor control de seguridad. Sin embargo, las nuevas funciones que requieren permisos adicionales fallan debido al uso de solo permisos mínimos.

Creación de una conexión de host

Agrega una nueva conexión de host usando la información obtenida de Azure.

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/tenants/read",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read"
<!--NeedCopy-->

Administración de energía de las máquinas virtuales

Enciende o apaga las instancias de máquina.

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
<!--NeedCopy-->

Creación, actualización o eliminación de máquinas virtuales

Crea un catálogo de máquinas, luego agrega, elimina, actualiza máquinas y elimina el catálogo de máquinas.

A continuación, se muestra la lista de permisos mínimos necesarios cuando la imagen maestra es un disco administrado o las instantáneas se encuentran en la misma región que la conexión de host.

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Features/providers/features/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"

<!--NeedCopy-->

Necesitas los siguientes permisos adicionales basados en los permisos mínimos para las siguientes funciones:

  • Si la imagen maestra es un VHD en una cuenta de almacenamiento ubicada en la misma región que la conexión de host:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • Si la imagen maestra es una ImageVersion de la Galería de imágenes compartidas:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • Si la imagen maestra es un disco administrado, entonces las instantáneas o el VHD se encuentran en una región diferente a la de la conexión de host:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     "Microsoft.Storage/checknameavailability/read",
     "Microsoft.Storage/locations/usages/read",
     "Microsoft.Storage/skus/read",
     <!--NeedCopy-->
    
  • Si usas un grupo de recursos administrado por Citrix:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • Si colocas la imagen maestra en Azure Compute Gallery (anteriormente Shared Image Gallery) en un inquilino o suscripción compartidos:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     "Microsoft.Resources/subscriptions/read",
     <!--NeedCopy-->
    
  • Si usas la compatibilidad con host dedicado de Azure:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • Si usas el cifrado del lado del servidor (SSE) con claves administradas por el cliente (CMK):

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • Si implementas máquinas virtuales usando plantillas ARM (perfil de máquina):

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     "Microsoft.Insights/DataCollectionRuleAssociations/Read",
     "Microsoft.Insights/dataCollectionRules/read",
     <!--NeedCopy-->
    
  • Si usas la especificación de plantilla de Azure como perfil de máquina:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

Crear, actualizar y eliminar máquinas con disco no administrado

A continuación, se muestra la lista de permisos mínimos necesarios cuando la imagen maestra es VHD y se usa un grupo de recursos proporcionado por el administrador:

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",

<!--NeedCopy-->

Administración de costes

A continuación, se muestra el permiso mínimo necesario para recuperar los precios de las VM:

"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->

A continuación, se muestra el permiso mínimo necesario para recuperar el coste de las VM:

"Microsoft.CostManagement/query/read"
<!--NeedCopy-->

Nota:

Para ver la ficha Cost Insights de un catálogo de máquinas de Azure, debes tener el permiso Cost Management > Manage > Read cost (predeterminado para los Administradores de la nube). Para obtener información sobre la ficha Cost Insights, consulta Ver los detalles del catálogo.

Permiso general

El rol de Colaborador tiene acceso completo para administrar todos los recursos. Este conjunto de permisos no te impide obtener nuevas funciones.

El siguiente conjunto de permisos proporciona la mejor compatibilidad en el futuro, aunque incluye más permisos de los necesarios con el conjunto de funciones actual:

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tenants/read",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Insights/DataCollectionRuleAssociations/Read",
"Microsoft.Insights/dataCollectionRules/read",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"

<!--NeedCopy-->

Validar la conexión de host en un entorno no secreto de Azure

Puedes validar los permisos en una conexión de host para realizar tareas relacionadas con la creación y administración de catálogos de máquinas de MCS. Esta implementación te ayuda a averiguar con antelación los permisos que faltan necesarios para diferentes escenarios, como la creación, eliminación y actualización de VM, la administración de energía de las VM, para que puedas evitar bloqueos en momentos críticos.

Puedes validar los permisos en una conexión de host mediante el comando de PowerShell Test-HypHypervisorConnection. El resultado del comando se captura como una lista donde cada elemento de la lista se divide en tres secciones.

  • Categoría: La acción o tarea que un usuario puede realizar para crear y administrar un catálogo de máquinas de MCS.
  • Acción correctiva: El paso que un administrador debe realizar para resolver una discrepancia de permisos que faltan a los usuarios.
  • Permiso que falta: La lista de permisos que faltan para una categoría.

Para validar los permisos, haz lo siguiente:

  1. Crea una conexión de host a Azure.
  2. Abre una ventana de PowerShell desde el host de Delivery Controller™.
  3. Ejecuta asnp citrix* para cargar los módulos de PowerShell específicos de Citrix.
  4. Ejecuta el siguiente comando para verificar si tienes los permisos necesarios para probar una conexión.

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon"
    <!--NeedCopy-->
    

    Permiso a nivel de rol necesario para el SPN:

    • Microsoft.Authorization/roleDefinitions/read (a nivel de suscripción o a nivel de grupo de recursos si se proporciona el grupo de recursos)
    • Microsoft.Authorization/roleAssignments/read (a nivel de suscripción o a nivel de grupo de recursos si se proporciona el grupo de recursos)

    Permisos a nivel de API necesarios para el SPN:

    • Microsoft.Graph:
    • Application.Read.All
    • Directory.Read.All
    • ServicePrincipalEndpoint.Read.All
  5. Después de agregar los permisos que faltan necesarios para buscar tus permisos, ejecuta el siguiente comando para verificar si tienes permisos en las distintas categorías.

    Ejemplo:

    Para probar una conexión a nivel de suscripción con un nivel superior de autorización requerido:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\ AzureCon -SecurePassword $password -UserName 922e65d5-38ae-4cf5-xxxx-xxxxxxxxx
    <!--NeedCopy-->
    

    Ejemplo:

    Para probar una conexión a nivel de grupo de recursos sin un alto nivel de autorización:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties $customProperties | Format-List
    <!--NeedCopy-->
    

    Nota:

    El parámetro CustomProperties se utiliza para proporcionar el nivel de grupo de recursos porque el grupo de recursos es información específica de la conexión.

    Ejemplo:

    Para probar una conexión con el nivel superior de autorización a nivel de grupo de recursos:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -SecurePassword $password -UserName 922e65d5-38ae-4cf5-832b-54122196b7dd -CustomProperties $customProperties
    <!--NeedCopy-->
    

Para obtener información sobre los permisos, consulta Permisos de Azure necesarios.

Validar la conexión de host en un entorno secreto de Azure

Puedes validar si una conexión de host tiene los permisos necesarios en un entorno secreto de Azure mediante un comando de PowerShell Test-HypHypervisorConnection.

Sin embargo, para obtener correctamente el resultado de la validación, crea o actualiza una conexión de host existente para que tenga una propiedad personalizada AuthenticationObjectId. Esta propiedad almacena el ID de objeto de la entidad de servicio vinculada a la conexión de alojamiento.

Nota:

Obtén el ID de objeto de la entidad de servicio desde el portal de Azure. No uses el ID de la aplicación.

Crear o actualizar una conexión de host para incluir AuthenticationObjectId

Usa New-Item para crear una conexión de host y agrega AuthenticationObjectId como una propiedad personalizada. Ejemplo:

New-Item -ConnectionType 'Azure' -HypervisorAddress @('http://hypervisorhost1.example.com','http://hypervisorhost2.example.com')`
    -LoggingId $loggingId -Path @('XDHyp:\\Connections\\Example') -Persist -Scope @() `
    -Password 'Password' -UserName 'root' -CustomProperties <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>
<!--NeedCopy-->

Usa Set-Item para actualizar una conexión de host existente y agregar AuthenticationObjectId como una propiedad personalizada. Los pasos para hacerlo son:

  1. Abre una ventana de PowerShell usando el SDK de PowerShell remoto.
  2. Ejecuta los siguientes comandos:

    Add-PSSnapin citrix*.
    cd XDHyp:\Connections\
    dir
    <!--NeedCopy-->
    
  3. Copia las CustomProperties de la conexión a un bloc de notas y anexa la configuración de propiedad <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/> a las CustomProperties.
  4. En la ventana de PowerShell, asigna una variable a las propiedades personalizadas modificadas.
  5. Ejecuta $cred = Get-Credential. Si se te solicita, proporciona las credenciales de conexión. Las credenciales son el ID de aplicación de Azure y el secreto.
  6. Ejecuta Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password.
  7. Ejecuta dir para verificar la configuración actualizada de CustomProperties.

Validar la conexión de host para los permisos

Para validar las conexiones de host para los roles y permisos requeridos, ejecuta los siguientes comandos:

  • Si tienes roles y permisos asignados a nivel de suscripción:

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>
     <!--NeedCopy-->
    
  • Si tienes roles y permisos asignados a nivel de grupo de recursos:

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>  -CustomProperties $CustomProperties
        
     $CustomProperties = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">'`
     + '<Property xsi:type="StringProperty" Name="ResourceGroups" Value="ExampleResourceGroup" />'`
     + '</CustomProperties>'
     <!--NeedCopy-->
    

Pasos siguientes

Más información