Security governance and compliance for Citrix on Azure
Citrix DaaS deployments on Azure require proper security governance and compliance. To achieve operational excellence and success, design your Citrix DaaS environment with appropriate policies.
Design considerations and recommendations
Azure Policy is an important tool for Citrix on Azure deployments. Policies can help you adhere to security standards that your cloud platform team sets. To support continuous regulatory compliance, policies can automatically enforce regulations and provide reports.
Review your policy baseline with your platform team in accordance with the Azure governance guidelines. Apply policy definitions at the top-level root management group so you can assign definitions at inherited scopes.
This article focuses on identity, networking, and antivirus recommendations.
The identity sections describe Citrix DaaS service identity and its requirements.
The networking section describes network security group (NSG) requirements.
The antivirus section provides a link to best practices to configure antivirus protection in a DaaS environment.
Service principal roles and identity
The following sections describe the creation, roles, and requirements of Citrix DaaS service principals.
App registration
App registration is the process of creating a one-way trust relationship between a Citrix Cloud account and Azure so that Citrix Cloud trusts Azure. The app registration process creates an Azure service principal account that Citrix Cloud can use for all Azure actions through the hosting connection. The hosting connection that's set up in the Citrix Cloud console links Citrix Cloud through the cloud connectors to resource locations in Azure.
You must grant the service principal access to the resource groups that contain Citrix resources. Depending on your organization's security posture, you can either provide subscription access at the Contributor level or create a custom role for the service principal.
When you create the service principal in Microsoft Entra ID, set the following values:
Add a Redirect URI and set it to Web with a value of
https://citrix.cloud.com
.For API Permissions, add the Azure Services Management API from the APIs my organization uses tab, and select the user_impersonation delegated permission.
For Certificates & secrets, create a New client secret that has a recommended expiration period of one year. You must regularly update this secret as part of your security key rotation schedule.
You need both the Application (client) ID and the client secret Value from the app registration to configure the hosting connection setup within Citrix Cloud.
Enterprise applications
Depending on your Citrix Cloud and Microsoft Entra configuration, you can add one or more Citrix Cloud enterprise applications to your Microsoft Entra tenant. These applications grant Citrix Cloud access to data that's stored in the Microsoft Entra tenant. The following table lists the application IDs and functions of Citrix Cloud enterprise applications in Microsoft Entra ID.
Enterprise application ID | Purpose |
---|---|
f9c0e999-22e7-409f-bb5e-956986abdf02 | The default connection between Microsoft Entra ID and Citrix Cloud |
1b32f261-b20c-4399-8368-c8f0092b4470 | Administrator invitations and sign-ins |
e95c4605-aeab-48d9-9c36-1a262ef8048e | The Workspace subscriber sign-in |
5c913119-2257-4316-9994-5e8f3832265b | The default connection between Microsoft Entra ID and Citrix Cloud with Citrix Endpoint Management |
e067934c-b52d-4e92-b1ca-70700bd1124e | The legacy connection between Microsoft Entra ID and Citrix Cloud with Citrix Endpoint Management |
Each enterprise application grants Citrix Cloud specific permissions to either the Microsoft Graph API or the Microsoft Entra API. For example, the Workspace subscriber sign-in application grants User.Read permissions to both APIs so that users can sign in and read their profiles. For more information, see Microsoft Entra permissions for Citrix Cloud.
Built-in roles
After you create the service principal, grant it the Contributor role at the subscription level. To grant Contributor permissions at the subscription level, you need at least the Azure Role Based Access Control Administrator role. Azure prompts for the required permissions during the initial connection from Citrix Cloud to Microsoft Entra ID.
Any accounts that you use for authentication when you create the host connection must also be at least a Contributor on the subscription. This level of permissions allows Citrix Cloud to create necessary objects without restriction. Typically, you use this approach when the entire subscription only has Citrix resources.
Some environments don't allow service principals to have Contributor permissions at a subscription level. Citrix provides an alternative solution called a narrow-scope service principal. For a narrow-scope service principal, a Cloud Application Administrator completes an application registration manually, and then a subscription administrator manually grants the service principal account the appropriate permissions.
Narrow-scope service principals don't have Contributor permissions to the entire subscription. They only have permissions to the resource groups, networks, and images that they need to create and manage machine catalogs. Narrow-scope service principals require the following roles:
Precreated resource groups require a Virtual Machine Contributor, Storage Account Contributor, and Disk Snapshot Contributor.
Virtual networks require a Virtual Machine Contributor.
Storage accounts require a Virtual Machine Contributor.
Custom roles
Narrow-scope service principals have broad Contributor permissions, which might not suit security-sensitive environments. To provide a more granular approach, you can use two custom roles to provide the service principals with necessary permissions. The Citrix_Hosting_Connection role grants access to create a hosting connection, and the Citrix_Machine_Catalog role grants access to create Citrix workloads.
Citrix_Hosting_Connection role
The following JSON description of the Citrix_Hosting_Connection role has the minimum permissions that you need to create a hosting connection. If you use only snapshots or only disks for machine catalog golden images, you can remove the unused permission from the actions
list.
{
"id": "",
"properties": {
"roleName": "Citrix_Hosting_Connection",
"description": "Minimum permissions to create a hosting connection. Assign to resource groups that contain Citrix infrastructure such as cloud connectors, golden images, or virtual network resources.",
"assignableScopes": [
"/"
],
"permissions": [
{
"actions": [
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/disks/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
Assign the Citrix_Hosting_Connection custom role to the Citrix_Infrastructure resource groups that have cloud connector, golden image, or virtual network resources in them. You can copy and paste this JSON role description directly into your custom Microsoft Entra role definition.
Citrix_Machine_Catalog role
The following JSON description of the Citrix_Machine_Catalog role has the minimum permissions that you need for the Citrix Machine Catalog Wizard to create the required resources within Azure.
{
"id": "",
"properties": {
"roleName": "Citrix_Machine_Catalog",
"description": "The minimum permissions to create a machine catalog. Assign to resource groups that contain Citrix workload servers that run the Virtual Delivery Agent.",
"assignableScopes": [
"/"
],
"permissions": [
{
"actions": [
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Storage/storageAccounts/listkeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/powerOff/action",
"Microsoft.Compute/virtualMachines/performMaintenance/action",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/convertToManagedDisks/action",
"Microsoft.Compute/virtualMachines/capture/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/write",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Storage/storageAccounts/listServiceSas/action",
"Microsoft.Storage/storageAccounts/listAccountSas/action",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/networkSecurityGroups/join/action"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
Assign the Citrix_Machine_Catalog custom role to the Citrix_MachineCatalog resource groups that hold the Citrix Virtual Delivery Agent (VDA) virtual machines (VMs). You can copy and paste this JSON role description directly into your custom Microsoft Entra role definition.
Networking
The NSGs are stateful, so they allow return traffic that can apply to a VM, a subnet, or both. When both subnet and VM NSGs exist, the subnet NSGs apply first for inbound traffic, and the VM NSGs apply first for outbound traffic. By default, a virtual network allows all traffic between hosts and all inbound traffic from a load balancer. By default, a virtual network allows only outbound internet traffic and denies all other outbound traffic.
To limit potential attack vectors and increase deployment security, use NSGs to allow only the expected traffic in the Citrix Cloud environment. The following table lists the required networking ports and protocols that a Citrix deployment must allow. This list includes only the ports that the Citrix infrastructure uses and doesn't include the ports that your applications use. In the NSG that protects the VMs, be sure to define all ports.
Source | Destination | Protocol | Port | Purpose |
---|---|---|---|---|
Cloud connectors | *.digicert.com |
HTTP | 80 | Certificate revocation check |
Cloud connectors | *.digicert.com |
HTTPS | 443 | Certificate revocation check |
Cloud connectors | dl.cacerts.digicert.com/DigiCertAssuredIDRootCA.crt |
HTTPS | 443 | Certificate revocation check |
Cloud connectors | dl.cacerts.digicert.com/DigiCertSHA2AssuredIDCodeSigningCA.crt |
HTTPS | 443 | Certificate revocation check |
Cloud connectors | Cloud connectors | Transmission Control Protocol (TCP) | 80 | Communication between controllers |
Cloud connectors | Cloud connectors | TCP | 89 | Local host cache |
Cloud connectors | Cloud connectors | TCP | 9095 | Orchestration service |
Cloud connectors | VDA | TCP, User Datagram Protocol (UDP) | 1494 | ICA/HDX protocol Enlightened Data Transport (EDT) requires UDP |
Cloud connectors | VDA | TCP, UDP | 2598 | Session reliability EDT requires UDP |
Cloud connector | VDA | TCP | 80 (bidirect) | Application and performance discovery |
VDA | Gateway service | TCP | 443 | Rendezvous Protocol |
VDA | Gateway service | UDP | 443 | EDT and UDP over 443 to Gateway service |
VDA | *.nssvc.net *.c.nssv.net *.g.nssv.net |
TCP, UDP | 443 | Gateway service domains and subdomains |
Citrix Provisioning Services | Cloud connectors | HTTPS | 443 | Citrix Cloud Studio integration |
Citrix License Server | Citrix Cloud | HTTPS | 443 | Citrix Cloud Licensing integration |
CVAD Remote PowerShell SDK | Citrix Cloud | HTTPS | 443 | Any system that runs remote PowerShell scripts via the SDK |
Workspace Environment Management (WEM) agent | WEM service | HTTPS | 443 | Agent to service communication |
WEM agent | Cloud connectors | TCP | 443 | Registration traffic |
For information about network and port requirements for Citrix Application Delivery Management, see System requirements.
Antivirus
Antivirus software is a crucial element for user environment protection. To ensure a smooth operation, configure antivirus appropriately in a Citrix DaaS environment. Incorrect antivirus configuration can result in performance problems, degraded customer experiences, or timeouts and failures of various components. For more information about how to configure antivirus in your Citrix DaaS environment, see Endpoint security, antivirus, and antimalware best practices.
Next step
Review the critical design considerations and recommendations for business continuity and disaster recovery that's specific to the deployment of Citrix on Azure.