Déployer des ressources d’enregistrement de session vers un abonnement cloud
Cet article fournit des informations sur le déploiement des ressources d’enregistrement de session vers un abonnement Azure.
Vous pouvez déployer les ressources d’enregistrement de session suivantes vers un abonnement Azure à partir du service d’enregistrement de session :
- Serveurs d’enregistrement de session
- Bases de données
- Stockage
- Équilibreur de charge
Il existe deux façons de déployer des ressources d’enregistrement de session vers un abonnement Azure :
-
Utilisez une connexion d’hôte qui se connecte à l’abonnement Azure. La création d’une connexion d’hôte vous oblige à fournir les informations de votre abonnement. Pour plus d’informations, consultez Créer et déployer un site via une connexion d’hôte plus loin dans cet article.
-
Si vous ne souhaitez pas fournir les informations de votre abonnement, créez un modèle Azure Resource Manager (modèle ARM) qui contient la manière et les ressources que vous souhaitez déployer. Pour plus d’informations, consultez Créer et déployer un site via un modèle ARM plus loin dans cet article.
Créer et déployer un site via une connexion d’hôte
Cette section vous guide à travers la procédure de création et de déploiement d’un site via une connexion d’hôte et les opérations suivantes pouvant être effectuées sur un site déployé de cette manière :
- Ajouter des ressources à un site existant déployé sur Azure
- Modifier les adresses IP autorisées à accéder à l’équilibreur de charge
- Afficher les coûts réels d’utilisation d’Azure
Créer et déployer un site via une connexion d’hôte
-
Sélectionnez Configuration > Gestion des serveurs dans la navigation de gauche du service d’enregistrement de session.

-
Sur la page Gestion des serveurs, cliquez sur Créer un site. La page Créer un site s’affiche.

-
Sélectionnez Créer et déployer un site via une connexion d’hôte. Les étapes principales sont répertoriées dans la navigation de gauche.

-
Saisissez un nom et une description de site, sélectionnez une connexion d’hôte qui se connecte à votre abonnement Azure et spécifiez une région.
-
Si vous n’avez pas de connexion d’hôte en place, ajoutez-en une en vous référant à Ajouter une connexion d’hôte plus loin dans cet article.
-
Les régions Azure Government ne sont pas prises en charge.
-
-
Après avoir renseigné les informations du site, cliquez sur Suivant pour continuer.
-
(Facultatif) Pour obtenir des recommandations pour les configurations de VM et de stockage, fournissez des informations sur vos besoins d’enregistrement.
Vous pouvez ignorer cette étape en cliquant sur C’est bon, ignorer cette étape ou en cliquant sur Suivant sans rien sélectionner.

Lorsque vous sélectionnez une option dans la liste déroulante, une recommandation est présentée en fonction de votre sélection. Un bouton Réinitialiser est disponible à côté de la recommandation. Il vous permet d’effacer vos sélections et la recommandation correspondante dans cette section.
-
Accédez au portail Azure et créez un nouveau réseau virtuel dans la région que vous avez sélectionnée, puis configurez l’appairage de réseaux virtuels entre le nouveau réseau virtuel et celui auquel vos VDA sont connectés. Ensuite, ajoutez un sous-réseau dans le nouveau réseau virtuel. Recherchez et saisissez l’ID du sous-réseau ci-dessous.

Pour maintenir les connexions entre les ressources au sein du réseau privé, cochez la case Créer des points de terminaison privés pour le stockage et les bases de données.
Après avoir coché la case Créer des points de terminaison privés pour le stockage et les bases de données, décidez si vous souhaitez saisir un autre ID de sous-réseau en tenant compte des éléments suivants :
- Si vous ne prévoyez pas de joindre vos serveurs Session Recording à un domaine Active Directory, le sous-réseau n’est pas nécessaire et vous devez donc laisser le champ ID du sous-réseau vide.
- Si vous laissez le champ ID du sous-réseau vide, vous joignez vos serveurs Session Recording à un domaine Azure Active Directory.

-
Créez des machines virtuelles (VM) en tant que serveurs Session Recording.

Remarque :
- Le champ Nombre de machines virtuelles est prérempli avec le nombre recommandé s’il y en a un. Modifiez le nombre si nécessaire.
- Les coûts estimés sont basés sur les tarifs standard et ne tiennent pas compte des remises. Vous pouvez vous attendre à des coûts réels inférieurs aux estimations.
-
Joignez les serveurs Session Recording au même domaine que vos VDA et spécifiez un certificat pour les serveurs Session Recording.
-
Si vos VDA se connectent à un domaine Active Directory, cochez la case Joindre les serveurs à un domaine Active Directory et saisissez les informations pertinentes. En cochant la case Joindre les serveurs à un domaine Active Directory, vous configurez le déploiement pour un scénario hybride, intégrant Active Directory sur site à Azure AD.
-
Si vos VDA se connectent à un domaine Azure Active Directory (Azure AD), décochez la case Joindre les serveurs à un domaine Active Directory. Une fois la création du site actuel terminée, assurez-vous de joindre manuellement les serveurs Session Recording au même domaine Azure AD. Notez que le déploiement Azure AD pur n’est disponible qu’à partir de Session Recording 2402.


Remarque :
Depuis juillet 2023, Microsoft a renommé Azure Active Directory (Azure AD) en Microsoft Entra ID. Dans ce document, toute référence à Azure Active Directory, Azure AD ou AAD fait désormais référence à Microsoft Entra ID.
-
-
Configurez un compte de stockage Azure et des partages de fichiers pour stocker vos fichiers d’enregistrement. Pour plus d’informations sur les tarifs, consultez Tarification d’Azure Files.

-
Créez deux bases de données SQL dans Azure. L’une est utilisée comme base de données d’enregistrement de session (nommée sessionrecording) et l’autre comme base de données de journalisation de l’administrateur (nommée sessionrecordinglogging).

Remarque :
Lorsque vous ajoutez des ressources, en particulier des serveurs d’enregistrement de session, à un site existant déployé via une connexion d’hôte, vous devez fournir le mot de passe de l’administrateur de la base de données défini lors de la création du site.
-
Créez un équilibreur de charge pour distribuer la charge de travail entre les serveurs d’enregistrement de session. Saisissez les adresses IP ou les plages de vos VDA et séparez-les par une virgule (,) dans le champ Restreindre l’accès de l’équilibreur de charge aux seules adresses suivantes. Pour plus d’informations sur les tarifs, consultez Tarification de l’équilibreur de charge.

-
(Facultatif) Appliquez des balises aux ressources Azure à créer.

-
Créez un client sécurisé pour intégrer les serveurs d’enregistrement de session au service d’enregistrement de session.
Cliquez sur Créer un client pour permettre à Citrix de créer un client sécurisé en votre nom. Vous pouvez également créer un client sécurisé via l’onglet Gestion des identités et des accès > Accès API de la console Citrix Cloud™ et ensuite remplir les informations ci-dessous.
Bouton Créer un client(/fr-fr/session-recording/service/media/create-client-button.png)
-
Affichez le résumé du site à créer. Cliquez sur l’icône en forme de crayon pour modifier vos paramètres si nécessaire ou cliquez sur le bouton pour démarrer le déploiement.
Résumé du site à créer(/fr-fr/session-recording/service/media/summary-about-the-site-to-be-created.png)
Voici des exemples du processus de déploiement :
Déploiement en cours :
Déploiement en cours(/fr-fr/session-recording/service/media/deployment-in-progress.png)
Pendant qu’un déploiement de site est en cours, vous pouvez cliquer sur Afficher le statut pour voir la progression.
Déploiement échoué :
Déploiement échoué(/fr-fr/session-recording/service/media/deployment-failed.png)
Si des erreurs surviennent pendant le processus de déploiement, cliquez sur Afficher le statut pour afficher les détails de l’erreur. Voici un exemple des détails de l’erreur :
Détails de l’erreur de déploiement(/fr-fr/session-recording/service/media/deployment-error-details.png)
Vous pouvez cliquer sur Retour à la configuration ou annuler le déploiement. Si vous cliquez sur Retour à la configuration, vous êtes redirigé vers la page Créer un site où vous pouvez modifier vos configurations et réessayer. Si vous êtes sûr de vouloir annuler le déploiement, suivez l’assistant pour supprimer le site et les ressources Azure créées pour le site. Par exemple :
Déploiement annulé(/fr-fr/session-recording/service/media/deployment-cancelled.png)
Déploiement réussi :
Une fois le déploiement d’un site terminé, vous pouvez développer le site et afficher et gérer les ressources créées sous celui-ci. Le bouton Afficher le statut devient Paramètres. Une icône Azure est disponible pour représenter les sites déployés sur Azure. Pour plus d’informations sur les paramètres du site, consultez Paramètres du site et du serveur.

Ajouter des ressources à un site existant déployé sur Azure
Pour un site existant que vous avez déployé sur Azure via une connexion hôte, vous pouvez y ajouter des ressources, y compris des serveurs et du stockage. Pour ce faire, suivez les étapes suivantes :
- Sélectionnez Configuration > Gestion des serveurs dans la navigation de gauche du service d’enregistrement de session.
- Sur la page Gestion des serveurs, localisez et développez le site cible. Une icône Azure est disponible pour représenter les sites déployés sur Azure.
-
Cliquez sur Ajouter des ressources.

-
Sur la page Ajouter des ressources, cliquez sur Ajouter un serveur et Ajouter du stockage selon les besoins.

-
Pour ajouter des serveurs, cliquez sur Ajouter un serveur, puis suivez les étapes suivantes :

- Spécifiez le nombre de serveurs à ajouter.
- Cliquez sur Fournir les informations d’identification dans la section Domaine pour joindre les nouveaux serveurs au même domaine que les serveurs existants.
- Cliquez sur Fournir les informations d’identification dans la section Comptes administrateur pour fournir le mot de passe de l’administrateur de base de données défini lors de la création du site. De plus, vous devez définir un mot de passe pour le compte administrateur sur la ou les machines serveur ajoutées. Nous vous recommandons d’utiliser le même mot de passe que celui défini lors de la création du site.
- Cliquez sur Créer un client pour intégrer les nouveaux serveurs au service d’enregistrement de session.
- Cliquez sur Démarrer le déploiement.
-
Pour ajouter du stockage pour les fichiers d’enregistrement, cliquez sur Ajouter du stockage, puis suivez les étapes suivantes en conséquence :
-
Si votre site a été créé avec un compte de stockage standard, vous êtes invité à spécifier le nombre de partages de fichiers à ajouter. Par exemple :
Partages de fichiers à ajouter pour un compte de stockage standard(/fr-fr/session-recording/service/media/file-shares-to-add-for-a-standard-storage.png)
-
Si votre site a été créé avec un compte de stockage premium, vous pouvez spécifier le nombre de partages de fichiers à ajouter et personnaliser la capacité de chaque partage de fichiers. Par exemple :
Partages de fichiers à ajouter pour un compte de stockage standard(/fr-fr/session-recording/service/media/file-shares-to-add-for-a-premium-storage.png)
-
Cliquez sur Démarrer le déploiement.
Remarque :
- Le bouton Démarrer le déploiement est disponible lorsque l’une des conditions suivantes est remplie :
- Au moins un serveur a été spécifié et le domaine et le client sécurisé ont été configurés.
- Au moins un partage de fichiers a été spécifié.
- Lorsque le déploiement des ressources est en cours, le bouton Paramètres du répartiteur de charge est désactivé.
-
Le déploiement des ressources ajoutées peut échouer et le service d’enregistrement de session pourrait ne pas être en mesure de supprimer ces ressources de votre abonnement. Dans ce cas, une invite similaire à la suivante vous est fournie pour que vous puissiez agir :
Échec du nettoyage des ressources(/fr-fr/session-recording/service/media/failed-to-clean-up-resources.png)
- Le bouton Démarrer le déploiement est disponible lorsque l’une des conditions suivantes est remplie :
-
-
Modifier les adresses IP autorisées à accéder à l’équilibreur de charge
Pour un site existant que vous avez déployé sur Azure via une connexion hôte, vous pouvez modifier les adresses IP autorisées à accéder à l’équilibreur de charge. Pour ce faire, suivez les étapes suivantes :
- Sélectionnez Configuration > Gestion des serveurs dans la navigation de gauche du service d’enregistrement de session.
- Sur la page Gestion des serveurs, localisez et dépliez le site cible. Une icône Azure est disponible pour représenter les sites déployés sur Azure.
-
Cliquez sur le bouton Paramètres dans la section Équilibreur de charge.

-
Sur la page des paramètres de l’équilibreur de charge, entrez les nouvelles adresses IP ou plages de vos VDA et séparez-les par une virgule (,) dans le champ Restreindre l’accès de l’équilibreur de charge aux seules adresses suivantes.

- Cliquez sur Enregistrer.
Afficher les coûts réels d’utilisation d’Azure
Pour un site existant que vous avez déployé sur Azure via une connexion hôte, cliquez sur le montant du coût pour afficher les détails des coûts. Par exemple :


Conseils pour afficher les coûts réels :
- Lorsque vous survolez le graphique de zone du mois en cours, une ligne de référence pour la date et les données de ce jour apparaît en superposition.
- Les coûts historiques des différentes ressources sont représentés par des graphiques linéaires. Les graphiques linéaires sont disponibles lorsqu’il y a au moins deux mois de données. Lorsque vous survolez les graphiques linéaires, une ligne de référence et une ventilation des coûts du mois apparaissent en superposition. Pour afficher le graphique linéaire d’une ressource spécifique uniquement, survolez la ressource.
Ajouter une connexion d’hôte
Pour ajouter une connexion d’hôte, suivez les étapes suivantes :
-
Cliquez sur Ajouter une connexion sur la page Créer un site avec l’option Créer et déployer un site via une connexion d’hôte sélectionnée. Ou, cliquez sur Ajouter une connexion sur la page Connexion d’hôte.
Pour accéder à la page Créer un site, sélectionnez Configuration > Gestion des serveurs dans la navigation de gauche du service d’enregistrement de session, puis cliquez sur Créer un site.

Pour accéder à la page Connexion d’hôte, sélectionnez Configuration > Connexion d’hôte dans la navigation de gauche du service d’enregistrement de session :

-
Sur la page Ajouter une connexion, donnez un nom et une description (facultatif) à la nouvelle connexion d’hôte. Saisissez votre ID d’abonnement Azure et les informations requises suivantes concernant l’enregistrement de votre application :
- ID d’application (client)
- ID d’objet du principal de service (ID de l’objet principal de service associé à l’application)
- ID de répertoire (locataire)
- Secret client
- Date d’expiration du secret

Pour trouver votre ID d’abonnement Azure, procédez comme suit :
- Connectez-vous au portail Azure.
- Sous la section Services Azure, sélectionnez Abonnements.
-
Recherchez votre abonnement dans la liste et copiez l’ID d’abonnement affiché dans la deuxième colonne.

Pour obtenir les informations requises concernant l’enregistrement de votre application, procédez comme suit :
-
(Ignorez cette étape si vous avez déjà une application enregistrée.) Enregistrez une application auprès de votre locataire Azure AD. Une application doit être enregistrée pour déléguer les fonctions de gestion des identités et des accès à Azure AD.
Il existe deux méthodes pour enregistrer une application.
Méthode 1 :
-
Copiez le script fourni par Citrix suivant et nommez-le, par exemple, AppRegistration.ps1 :
<# .SYNOPSIS Copyright (c) Citrix Systems, Inc. All Rights Reserved. .DESCRIPTION Create Azure app registrations and give proper permissions for Citrix Session Recording service deployment .Parameter azureTenantID .Parameter azureSubscriptionID .Parameter appName .Parameter role #> [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [String] $tenantId, [Parameter(Mandatory = $true)] [String] $subscriptionId, [Parameter(Mandatory = $true)] [String] $appName, [Parameter(Mandatory = $true)] [String] $role ) if ($role -ne "Citrix Session Recording service" -and $role -ne "Citrix Session Recording Deployment" -and $role -ne "Contributor") { throw [System.Exception] "Invalid role '$role', only support 'Citrix Session Recording service', 'Citrix Session Recording Deployment', and 'Contributor'." } try { Get-InstalledModule -Name "Az.Accounts" -ErrorAction Stop } catch { Install-Module -Name "Az.Accounts" -Scope CurrentUser -Repository PSGallery -SkipPublisherCheck -Force } try { Get-InstalledModule -Name "Az.Resources" -ErrorAction Stop } catch { Install-Module -Name "Az.Resources" -Scope CurrentUser -Repository PSGallery -SkipPublisherCheck -Force } Connect-AzAccount -TenantId $tenantId -Subscription $subscriptionId try { $azureAdApplication = Get-AzADApplication -DisplayName $appName if ($null -eq $azureAdApplication) { Write-Host "Create a new app registration for Citrix Session Recording" -ForegroundColor Green $azureAdApplication = New-AzADApplication -DisplayName $appName -AvailableToOtherTenants $false } else { Write-Host "App registration '$appName' already exists." -ForegroundColor Yellow } $azureAdApplicationServicePrincipal = Get-AzADServicePrincipal -DisplayName $appName if($null -eq $azureAdApplicationServicePrincipal) { $azureAdApplicationServicePrincipal = New-AzADServicePrincipal -AppId $azureAdApplication.AppId Write-Host "Create a service principal for app registration '$appName'" -ForegroundColor Green }else{ Write-Host "Service principal already exists for app registration '$appName'" -ForegroundColor Yellow } if ($role -eq "Citrix Session Recording service" -or $role -eq "Citrix Session Recording Deployment") { $rootPath = Get-Location $customRolePath = $(Join-Path -Path $rootPath -ChildPath "sessionrecording.json") | Resolve-Path $customRoleJson = Get-Content $customRolePath | ConvertFrom-Json $customRoleJson.AssignableScopes[0] = "/subscriptions/" + $subscriptionId $tmpCustomRolePath = Join-Path -Path $rootPath -ChildPath "sessionrecording_tmp.json" $roleDef = Get-AzRoleDefinition -Name $role if ($null -eq $roleDef) { try { $customRoleJson | ConvertTo-Json -depth 32 | Set-Content $tmpCustomRolePath Write-Host "Create a custom role '$role'" -ForegroundColor Green New-AzRoleDefinition -InputFile $tmpCustomRolePath } catch { Write-Host "Failed to create custom role, error: $_" -ForegroundColor Red throw $_.Exception } } else { try { $customRoleJson | Add-Member -MemberType NoteProperty -Name 'id' -Value $($roleDef.Id) $customRoleJson | ConvertTo-Json -depth 32 | Set-Content $tmpCustomRolePath Write-Host "Upadate the custom role '$role'" -ForegroundColor Green Set-AzRoleDefinition -InputFile $tmpCustomRolePath } catch { Write-Host "Failed to update custom role, error: $_" -ForegroundColor Red throw $_.Exception } } } $roleAssignment = Get-AzRoleAssignment -RoleDefinitionName $role -ObjectId $($azureAdApplicationServicePrincipal.Id) if ($null -eq $roleAssignment) { Write-Host "Assign role '$role' to app '$appName'" -ForegroundColor Green New-AzRoleAssignment -RoleDefinitionName $role -ApplicationId $azureAdApplication.AppId } else { Write-Host "Role '$role' already assigned to app '$appName'" -ForegroundColor Yellow } Write-Host "Tenant ID: $tenantId" -ForegroundColor Green Write-Host "Subscription ID: $subscriptionId" -ForegroundColor Green Write-Host "Application ID: $($azureAdApplication.AppId)" -ForegroundColor Green Write-Host "Service principal object ID: $($azureAdApplicationServicePrincipal.Id)" -ForegroundColor Green } catch { Write-Host "Failed to assign role assignment to this app, error: $_" -ForegroundColor Red Write-Host "Please make sure the current azure admin has permission to assign roles" -ForegroundColor Red } <!--NeedCopy--> -
Copiez le fichier de rôle personnalisé suivant et nommez-le sessionrecording.json. Ce fichier de rôle personnalisé permet d’attribuer les autorisations minimales à l’application à enregistrer.
{ "name": "Citrix Session Recording service", "description": "This role has permissions which allow Citrix Session Recording service to deploy Session Recording resources using a host connection.", "assignableScopes": [ "/subscriptions/*" ], "actions": [ "Microsoft.Compute/availabilitySets/write", "Microsoft.Compute/virtualMachines/delete", "Microsoft.Compute/virtualMachines/extensions/read", "Microsoft.Compute/virtualMachines/extensions/write", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/runCommands/read", "Microsoft.Compute/virtualMachines/runCommands/write", "Microsoft.Compute/virtualMachines/write", "Microsoft.CostManagement/forecast/read", "Microsoft.CostManagement/query/read", "Microsoft.KeyVault/locations/deletedVaults/purge/action", "Microsoft.KeyVault/vaults/PrivateEndpointConnectionsApproval/action", "Microsoft.KeyVault/vaults/read", "Microsoft.KeyVault/vaults/secrets/read", "Microsoft.KeyVault/vaults/secrets/write", "Microsoft.KeyVault/vaults/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.ManagedIdentity/userAssignedIdentities/read", "Microsoft.ManagedIdentity/userAssignedIdentities/write", "Microsoft.Network/dnsForwardingRulesets/forwardingRules/read", "Microsoft.Network/dnsForwardingRulesets/forwardingRules/write", "Microsoft.Network/dnsForwardingRulesets/read", "Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read", "Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/write", "Microsoft.Network/dnsForwardingRulesets/write", "Microsoft.Network/dnsResolvers/outboundEndpoints/join/action", "Microsoft.Network/dnsResolvers/outboundEndpoints/read", "Microsoft.Network/dnsResolvers/outboundEndpoints/write", "Microsoft.Network/dnsResolvers/read", "Microsoft.Network/dnsResolvers/write", "Microsoft.Network/loadBalancers/backendAddressPools/join/action", "Microsoft.Network/loadBalancers/read", "Microsoft.Network/loadBalancers/write", "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/securityRules/read", "Microsoft.Network/networkSecurityGroups/securityRules/write", "Microsoft.Network/networkSecurityGroups/write", "Microsoft.Network/privateDnsZones/join/action", "Microsoft.Network/privateDnsZones/read", "Microsoft.Network/privateDnsZones/virtualNetworkLinks/read", "Microsoft.Network/privateDnsZones/virtualNetworkLinks/write", "Microsoft.Network/privateDnsZones/write", "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/read", "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/write", "Microsoft.Network/privateEndpoints/read", "Microsoft.Network/privateEndpoints/write", "Microsoft.Network/publicIPAddresses/join/action", "Microsoft.Network/publicIPAddresses/read", "Microsoft.Network/publicIPAddresses/write", "Microsoft.Network/virtualNetworks/join/action", "Microsoft.Network/virtualNetworks/read", "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Network/virtualNetworks/subnets/read", "Microsoft.Resources/deployments/operationstatuses/read", "Microsoft.Resources/deployments/read", "Microsoft.Resources/deployments/write", "Microsoft.Resources/subscriptions/resourceGroups/delete", "Microsoft.Resources/subscriptions/resourceGroups/read", "Microsoft.Resources/subscriptions/resourceGroups/write", "Microsoft.Sql/servers/auditingSettings/write", "Microsoft.Sql/servers/databases/write", "Microsoft.Sql/servers/firewallRules/write", "Microsoft.Sql/servers/privateEndpointConnectionsApproval/action", "Microsoft.Sql/servers/read", "Microsoft.Sql/servers/write", "Microsoft.Storage/storageAccounts/PrivateEndpointConnectionsApproval/action", "Microsoft.Storage/storageAccounts/fileServices/shares/delete", "Microsoft.Storage/storageAccounts/fileServices/shares/read", "Microsoft.Storage/storageAccounts/fileServices/shares/write", "Microsoft.Storage/storageAccounts/listkeys/action", "Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/write" ], "NotActions": [], "DataActions": [], "NotDataActions": [] } <!--NeedCopy--> - Placez AppRegistration.ps1 et sessionrecording.json dans le même dossier.
- Exécutez l’une des commandes suivantes selon vos besoins.
Pour créer une application et lui attribuer les autorisations minimales avec le fichier de rôle personnalisé précédent (sessionrecording.json), exécutez :
``` .\AppRegistration.ps1 -tenantId <tenant ID> -subscriptionId <subscription ID> -appName <application name> -role "Citrix Session Recording service" <!--NeedCopy--> ``` To create an application and assign it the Azure built-in **Contributor** role, run: ``` .\AppRegistration.ps1 -tenantId <tenant ID> -subscriptionId <subscription ID> -appName <application name> -role "Contributor" <!--NeedCopy--> ```Méthode 2 :
Accédez au portail Azure et enregistrez une application vous-même. Accordez les autorisations appropriées à l’application. Pour connaître les autorisations minimales requises, consultez le fichier sessionrecording.json dans la Méthode 1.
-
-
Cliquez sur le nom d’affichage de votre application.

-
Sur la page de présentation, recherchez l’ID d’application (client) et l’ID de répertoire (locataire). Cliquez sur le lien à côté de Managed application in local directory pour trouver l’ID de l’objet principal de service associé à l’application. Cliquez sur le lien à côté de Client credentials pour trouver l’ID du secret client et sa date d’expiration.

Par exemple, l’ID de l’objet principal de service associé à l’application :

Par exemple, l’ID du secret client et sa date d’expiration :

-
Cliquez sur Save pour vérifier si la connexion hôte que vous spécifiez est disponible.
Si la connexion hôte que vous spécifiez est disponible, vous êtes redirigé vers la page Host Connection et un message vous informe que la connexion hôte a été ajoutée avec succès.
Le service Session Recording vous avertit des secrets clients expirés et en cours d’expiration à l’aide d’icônes d’erreur et d’avertissement, respectivement. Vous pouvez cliquer sur la connexion hôte correspondante et cliquer sur Change secret sur la page Connection details pour mettre à jour le secret client et sa date d’expiration.

Créer et déployer un site via un modèle ARM
Vous pouvez créer un modèle Azure Resource Manager (modèle ARM) pour déployer des ressources Session Recording dans Azure. Voici les principales étapes pour atteindre cet objectif :
- Créez un modèle ARM dans le service d’enregistrement de session. Le modèle ARM est un fichier JSON (JavaScript Object Notation) qui contient la manière et les ressources que vous souhaitez déployer.
- Téléchargez et décompressez le modèle ARM. Exécutez le script de déploiement dans le dossier du modèle décompressé pour commencer à déployer les ressources spécifiées dans le modèle vers Azure.
- Vérifiez la progression du déploiement dans Azure. Une fois le déploiement terminé, configurez l’enregistrement de session pour le rendre opérationnel. Pour configurer l’enregistrement de session, vous devez spécifier la version du serveur d’enregistrement de session à installer et télécharger le fichier resourceInfo.json.
Les étapes spécifiques sont les suivantes :
-
Sélectionnez Configuration > Gestion des serveurs dans la navigation de gauche du service d’enregistrement de session.

-
Sur la page Gestion des serveurs, cliquez sur Créer un site. La page Créer un site apparaît.

-
Sélectionnez Créer et déployer un site via un modèle ARM. Les étapes principales sont répertoriées dans la navigation de gauche.

-
Saisissez un nom de site et une description, puis cliquez sur Suivant.
-
(Facultatif) Pour obtenir des recommandations pour les configurations de VM et de stockage, fournissez des informations sur vos besoins d’enregistrement.
Vous pouvez ignorer cette étape en cliquant sur Je suis prêt, ignorer cette étape ou en cliquant sur Suivant sans rien sélectionner.

Lorsque vous sélectionnez une option dans la liste déroulante, une recommandation est présentée en fonction de votre sélection. Un bouton Réinitialiser est disponible à côté de la recommandation. Il vous permet d’effacer vos sélections et la recommandation correspondante dans cette section.
-
Accédez au portail Azure et créez un nouveau réseau virtuel dans la région que vous avez sélectionnée, puis configurez l’appairage de réseaux virtuels entre le nouveau réseau virtuel et celui auquel vos VDA sont connectés. Ensuite, ajoutez un sous-réseau dans le nouveau réseau virtuel. Recherchez et saisissez l’ID du sous-réseau ci-dessous.

Pour maintenir les connexions entre les ressources au sein du réseau privé, cochez la case Créer des points de terminaison privés pour le stockage et les bases de données.
Après avoir coché la case Créer des points de terminaison privés pour le stockage et les bases de données, décidez si vous souhaitez saisir un autre ID de sous-réseau en tenant compte des éléments suivants :
- Si vous ne prévoyez pas de joindre vos serveurs d’enregistrement de session à un domaine Active Directory, le sous-réseau n’est pas nécessaire et laissez donc le champ ID du sous-réseau vide.
- Si vous laissez le champ ID du sous-réseau vide, vous joignez vos serveurs d’enregistrement de session à un domaine Azure Active Directory.

-
(Ignorez cette étape si vous avez déjà une application enregistrée.) Enregistrez une application auprès de votre locataire Azure AD. Une application doit être enregistrée pour déléguer les fonctions de gestion des identités et des accès à Azure AD.
Il existe deux méthodes pour enregistrer une application.
Méthode 1 :
-
Copiez le script suivant fourni par Citrix et nommez-le, par exemple, AppRegistration.ps1 :
<# .SYNOPSIS Copyright (c) Citrix Systems, Inc. All Rights Reserved. .DESCRIPTION Create Azure app registrations and give proper permissions for Citrix Session Recording service deployment .Parameter azureTenantID .Parameter azureSubscriptionID .Parameter appName .Parameter role #> [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [String] $tenantId, [Parameter(Mandatory = $true)] [String] $subscriptionId, [Parameter(Mandatory = $true)] [String] $appName, [Parameter(Mandatory = $true)] [String] $role ) if ($role -ne "Citrix Session Recording service" -and $role -ne "Citrix Session Recording Deployment" -and $role -ne "Contributor") { throw [System.Exception] "Invalid role '$role', only support 'Citrix Session Recording service', 'Citrix Session Recording Deployment', and 'Contributor'." } try { Get-InstalledModule -Name "Az.Accounts" -ErrorAction Stop } catch { Install-Module -Name "Az.Accounts" -Scope CurrentUser -Repository PSGallery -SkipPublisherCheck -Force } try { Get-InstalledModule -Name "Az.Resources" -ErrorAction Stop } catch { Install-Module -Name "Az.Resources" -Scope CurrentUser -Repository PSGallery -SkipPublisherCheck -Force } Connect-AzAccount -TenantId $tenantId -Subscription $subscriptionId try { $azureAdApplication = Get-AzADApplication -DisplayName $appName if ($null -eq $azureAdApplication) { Write-Host "Create a new app registration for Citrix Session Recording" -ForegroundColor Green $azureAdApplication = New-AzADApplication -DisplayName $appName -AvailableToOtherTenants $false } else { Write-Host "App registration '$appName' already exists." -ForegroundColor Yellow } $azureAdApplicationServicePrincipal = Get-AzADServicePrincipal -DisplayName $appName if($null -eq $azureAdApplicationServicePrincipal) { $azureAdApplicationServicePrincipal = New-AzADServicePrincipal -AppId $azureAdApplication.AppId Write-Host "Create a service principal for app registration '$appName'" -ForegroundColor Green }else{ Write-Host "Service principal already exists for app registration '$appName'" -ForegroundColor Yellow } if ($role -eq "Citrix Session Recording service" -or $role -eq "Citrix Session Recording Deployment") { $rootPath = Get-Location $customRolePath = $(Join-Path -Path $rootPath -ChildPath "sessionrecordingdeployment.json") | Resolve-Path $customRoleJson = Get-Content $customRolePath | ConvertFrom-Json $customRoleJson.AssignableScopes[0] = "/subscriptions/" + $subscriptionId $tmpCustomRolePath = Join-Path -Path $rootPath -ChildPath "sessionrecording_tmp.json" $roleDef = Get-AzRoleDefinition -Name $role if ($null -eq $roleDef) { try { $customRoleJson | ConvertTo-Json -depth 32 | Set-Content $tmpCustomRolePath Write-Host "Create a custom role '$role'" -ForegroundColor Green New-AzRoleDefinition -InputFile $tmpCustomRolePath } catch { Write-Host "Failed to create custom role, error: $_" -ForegroundColor Red throw $_.Exception } } else { try { $customRoleJson | Add-Member -MemberType NoteProperty -Name 'id' -Value $($roleDef.Id) $customRoleJson | ConvertTo-Json -depth 32 | Set-Content $tmpCustomRolePath Write-Host "Upadate the custom role '$role'" -ForegroundColor Green Set-AzRoleDefinition -InputFile $tmpCustomRolePath } catch { Write-Host "Failed to update custom role, error: $_" -ForegroundColor Red throw $_.Exception } } } $roleAssignment = Get-AzRoleAssignment -RoleDefinitionName $role -ObjectId $($azureAdApplicationServicePrincipal.Id) if ($null -eq $roleAssignment) { Write-Host "Assign role '$role' to app '$appName'" -ForegroundColor Green New-AzRoleAssignment -RoleDefinitionName $role -ApplicationId $azureAdApplication.AppId } else { Write-Host "Role '$role' already assigned to app '$appName'" -ForegroundColor Yellow } Write-Host "Tenant ID: $tenantId" -ForegroundColor Green Write-Host "Subscription ID: $subscriptionId" -ForegroundColor Green Write-Host "Application ID: $($azureAdApplication.AppId)" -ForegroundColor Green Write-Host "Service principal object ID: $($azureAdApplicationServicePrincipal.Id)" -ForegroundColor Green } catch { Write-Host "Failed to assign role assignment to this app, error: $_" -ForegroundColor Red Write-Host "Please make sure the current azure admin has permission to assign roles" -ForegroundColor Red } <!--NeedCopy--> -
Copiez le fichier de rôle personnalisé suivant et nommez-le sessionrecordingdeployment.json. Ce fichier de rôle personnalisé permet d’attribuer les autorisations minimales à l’application à enregistrer.
{ "name": "Citrix Session Recording Deployment", "description": "This role has permissions which allow users to deploy Session Recording resources using an Azure Resource Manager template (ARM template). ", "assignableScopes": [ "/subscriptions/*" ], "actions": [ "Microsoft.Compute/availabilitySets/write", "Microsoft.Compute/virtualMachines/extensions/read", "Microsoft.Compute/virtualMachines/extensions/write", "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/runCommands/read", "Microsoft.Compute/virtualMachines/runCommands/write", "Microsoft.Compute/virtualMachines/write", "Microsoft.ContainerInstance/containerGroups/read", "Microsoft.ContainerInstance/containerGroups/write", "Microsoft.KeyVault/vaults/PrivateEndpointConnectionsApproval/action", "Microsoft.KeyVault/vaults/read", "Microsoft.KeyVault/vaults/secrets/read", "Microsoft.KeyVault/vaults/secrets/write", "Microsoft.KeyVault/vaults/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.ManagedIdentity/userAssignedIdentities/read", "Microsoft.ManagedIdentity/userAssignedIdentities/write", "Microsoft.Network/dnsForwardingRulesets/forwardingRules/read", "Microsoft.Network/dnsForwardingRulesets/forwardingRules/write", "Microsoft.Network/dnsForwardingRulesets/read", "Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/read", "Microsoft.Network/dnsForwardingRulesets/virtualNetworkLinks/write", "Microsoft.Network/dnsForwardingRulesets/write", "Microsoft.Network/dnsResolvers/outboundEndpoints/join/action", "Microsoft.Network/dnsResolvers/outboundEndpoints/read", "Microsoft.Network/dnsResolvers/outboundEndpoints/write", "Microsoft.Network/dnsResolvers/read", "Microsoft.Network/dnsResolvers/write", "Microsoft.Network/loadBalancers/backendAddressPools/join/action", "Microsoft.Network/loadBalancers/write", "Microsoft.Network/networkInterfaces/join/action", "Microsoft.Network/networkInterfaces/read", "Microsoft.Network/networkInterfaces/write", "Microsoft.Network/networkSecurityGroups/join/action", "Microsoft.Network/networkSecurityGroups/read", "Microsoft.Network/networkSecurityGroups/securityRules/read", "Microsoft.Network/networkSecurityGroups/securityRules/write", "Microsoft.Network/networkSecurityGroups/write", "Microsoft.Network/privateDnsZones/join/action", "Microsoft.Network/privateDnsZones/read", "Microsoft.Network/privateDnsZones/virtualNetworkLinks/read", "Microsoft.Network/privateDnsZones/virtualNetworkLinks/write", "Microsoft.Network/privateDnsZones/write", "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/read", "Microsoft.Network/privateEndpoints/privateDnsZoneGroups/write", "Microsoft.Network/privateEndpoints/read", "Microsoft.Network/privateEndpoints/write", "Microsoft.Network/publicIPAddresses/join/action", "Microsoft.Network/publicIPAddresses/read", "Microsoft.Network/publicIPAddresses/write", "Microsoft.Network/virtualNetworks/join/action", "Microsoft.Network/virtualNetworks/read", "Microsoft.Network/virtualNetworks/subnets/join/action", "Microsoft.Network/virtualNetworks/subnets/read", "Microsoft.Resources/deploymentScripts/read", "Microsoft.Resources/deploymentScripts/write", "Microsoft.Resources/deployments/operationstatuses/read", "Microsoft.Resources/deployments/read", "Microsoft.Resources/deployments/validate/action", "Microsoft.Resources/deployments/write", "Microsoft.Resources/subscriptions/resourceGroups/read", "Microsoft.Resources/subscriptions/resourceGroups/write", "Microsoft.Resources/templateSpecs/read", "Microsoft.Resources/templateSpecs/versions/read", "Microsoft.Resources/templateSpecs/versions/write", "Microsoft.Resources/templateSpecs/write", "Microsoft.Sql/servers/auditingSettings/write", "Microsoft.Sql/servers/databases/write", "Microsoft.Sql/servers/firewallRules/write", "Microsoft.Sql/servers/privateEndpointConnectionsApproval/action", "Microsoft.Sql/servers/read", "Microsoft.Sql/servers/write", "Microsoft.Storage/storageAccounts/PrivateEndpointConnectionsApproval/action", "Microsoft.Storage/storageAccounts/blobServices/containers/read", "Microsoft.Storage/storageAccounts/blobServices/containers/write", "Microsoft.Storage/storageAccounts/fileServices/shares/write", "Microsoft.Storage/storageAccounts/listkeys/action", "Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/write" ], "notActions": [], "dataActions": [], "notDataActions": [] } <!--NeedCopy--> - Placez AppRegistration.ps1 et sessionrecordingdeployment.json dans le même dossier.
-
Exécutez l’une des commandes suivantes selon les besoins.
Pour créer une application et lui attribuer les autorisations minimales avec le fichier de rôle personnalisé précédent (sessionrecordingdeployment.json), exécutez :
.\AppRegistration.ps1 -tenantId <tenant ID> -subscriptionId <subscription ID> -appName <application name> -role "Citrix Session Recording Deployment" <!--NeedCopy-->Pour créer une application et lui attribuer le rôle intégré Azure de Contributeur, exécutez :
.\AppRegistration.ps1 -tenantId <tenant ID> -subscriptionId <subscription ID> -appName <application name> -role "Contributor" <!--NeedCopy-->
Méthode 2 :
Accédez au portail Azure et enregistrez une application vous-même. Accordez les autorisations appropriées à l’application. Pour connaître les autorisations minimales requises, consultez le fichier sessionrecordingdeployment.json dans la Méthode 1.
-
-
Spécifiez les configurations pour vos serveurs d’enregistrement de session à installer ultérieurement.

Remarque :
- Le champ Nombre de machines virtuelles est prérempli avec le nombre recommandé s’il y en a un. Modifiez le nombre si nécessaire.
- Les coûts estimés sont basés sur les tarifs standard et ne tiennent pas compte des remises. Vous pouvez vous attendre à des coûts réels inférieurs à ceux estimés.
-
Joignez les serveurs d’enregistrement de session au même domaine que vos VDA et spécifiez un certificat pour les serveurs d’enregistrement de session.
-
Si vos VDA se connectent à un domaine Active Directory, cochez la case Joindre les serveurs à un domaine Active Directory et saisissez les informations pertinentes.
-
Si vos VDA se connectent à un domaine Azure Active Directory (Azure AD), décochez la case Joindre les serveurs à un domaine Active Directory. Une fois la création du site actuel terminée, assurez-vous de joindre manuellement les serveurs d’enregistrement de session au même domaine Azure AD. Notez que le déploiement Azure AD pur n’est disponible qu’à partir de Session Recording 2402.


-
-
Configurez un compte de stockage Azure et des partages de fichiers pour stocker vos fichiers d’enregistrement. Pour plus d’informations sur les tarifs, consultez Tarification d’Azure Files.

-
Créer deux bases de données SQL dans Azure. L’une est utilisée comme base de données d’enregistrement de session (nommée sessionrecording) et l’autre comme base de données de journalisation de l’administrateur (nommée sessionrecordinglogging).

-
Créer un équilibreur de charge pour distribuer la charge de travail entre les serveurs d’enregistrement de session. Saisissez les adresses IP ou les plages de vos VDA et séparez-les par une virgule (,) dans le champ Restreindre l’accès de l’équilibreur de charge aux seules adresses suivantes. Pour plus d’informations sur les tarifs, consultez Tarifs de l’équilibreur de charge.

-
(Facultatif) Appliquer des balises aux ressources Azure à créer.

-
Créer un client sécurisé pour intégrer les serveurs d’enregistrement de session au service d’enregistrement de session.
Cliquez sur Créer un client pour que Citrix crée un client sécurisé en votre nom. Vous pouvez également créer un client sécurisé via l’onglet Gestion des identités et des accès > Accès API de la console Citrix Cloud, puis renseigner les informations ci-dessous.

-
Affichez le résumé des ressources à créer et cliquez sur l’icône en forme de crayon pour modifier vos paramètres si nécessaire. Ensuite, cliquez sur Télécharger le modèle. Un modèle AEM contenant la manière et les ressources que vous souhaitez déployer est alors téléchargé dans le dossier Téléchargements de votre machine. Vous pouvez également voir le site nouvellement créé sur la page Gestion des serveurs.

-
Accédez au dossier Téléchargements et décompressez le modèle ARM. Ouvrez le dossier de fichiers décompressés, tapez PowerShell dans la barre d’adresse et appuyez sur Entrée. Attendez qu’une fenêtre PowerShell s’ouvre dans ce dossier.
-
Exécutez le script JavaScript Object Notation (JSON) nommé DeploySessionRecording.ps1. Fournissez des valeurs pour les paramètres demandés. Les paramètres réels varient en fonction des paramètres que vous avez spécifiés lors de la création du modèle. Par exemple :


-
Accédez au portail Azure, localisez le groupe de ressources qui contient votre déploiement, puis vérifiez la progression du déploiement. Attendez que l’ensemble du déploiement affiche Réussi.

-
Retournez à la page Gestion des serveurs du service d’enregistrement de session. Recherchez le site nouvellement créé, et vous verrez un bouton Configurer disponible. Cliquez sur Configurer pour configurer l’enregistrement de session afin de le rendre opérationnel.


Pour configurer l’enregistrement de session, vous devez spécifier la version du serveur d’enregistrement de session à installer et télécharger le fichier resourceInfo.json.


Saisissez les informations d’identification de vos bases de données.

Cliquez sur Démarrer le démarrage. Vous pouvez ensuite vérifier la progression de la configuration sur la page Gestion des serveurs.


Vous pouvez afficher la progression de l’installation des serveurs individuels dans la liste des serveurs.

Lorsque tous les serveurs d’enregistrement de session apparaissent disponibles dans la liste, la création de votre site est terminée et les ressources spécifiées sont déployées sur Azure.
