Favicon

You are here: Home > Gestión de Dispositivos > Apple > macOS > Gestión de apps > Despliegue de Cortex XDR

Despliegue de Cortex XDR en dispositivos macOS

Despliega Cortex XDR de forma silenciosa en dispositivos macOS usando Applivery MDM — configura perfiles, scripts de activación e instalación silenciosa.

8 min read

TL;DR

Despliega Cortex XDR en macOS de forma silenciosa usando Applivery MDM subiendo el paquete, configurando una política con un script de activación y aplicando un perfil .mobileconfig personalizado.

Cortex XDR de Palo Alto Networks es una plataforma avanzada de protección de endpoints que integra capacidades de detección, prevención y respuesta. Instalar Cortex XDR en dispositivos macOS a través de tu solución MDM permite un despliegue centralizado y garantiza que todos los endpoints estén protegidos sin necesidad de instalación manual.

Requisitos

Antes de desplegar Cortex XDR en dispositivos macOS a través de Applivery, asegúrate de tener lo siguiente:

  • Paquete cliente de Cortex XDR (.pkg).

  • ID de distribución y dirección Cloud ELB (desde tu panel de Cortex XDR).

  • Script de activación (para la licencia del agente).

  • Política de acceso completo al disco (mediante perfil de configuración).

  • Perfil .mobileconfig personalizado de Cortex XDR.

  • 1 licencia de Applivery para Distribución de Apps.

1
Preparar Cortex XDR

Para desplegar Cortex XDR usando Applivery, deberás cargar el paquete de app comprimido (.zip) a tu sección de Gestión de Apps y configurarlo con un script de activación previo a la instalación.

Primero, descarga el instalador .pkg de Cortex XDR desde tu panel de Cortex XDR y asegúrate de copiar tu ID de distribución y dirección Cloud ELB, ya que los necesitarás más adelante para el script de activación.

Una vez descargado, comprime el archivo .pkg haciendo clic derecho sobre él y seleccionando Comprimir, lo que generará un archivo .zip.

A continuación, inicia sesión en el panel de Applivery y navega a la sección Gestión de Apps. Desde allí, sigue los pasos de nuestra documentación:

  1. Crea tu primera app.

  2. Sube tu primera build.

app distribution
2
Configura tu política de Cortex XDR

A continuación, dirígete a la sección Gestión de Dispositivos y selecciona cualquiera de tus Políticas 1 o crea una nueva. En el menú lateral izquierdo, selecciona la sección Apps 2 y haz clic en el botón + Añadir App 3.

add app

En la vista modal, navega a la pestaña Applivery. Configura la plataforma como macOS, elige Tu Workspace como origen de la app y busca la app Cortex XDR que creaste anteriormente. Para la selección de build, elige Último para asegurarte de que siempre se despliega la versión más reciente.

cortex xdr

Continúa al siguiente paso y selecciona tu modo de instalación preferido — Instalación forzosa, Necesario para la instalación o Disponible — según tu estrategia de despliegue.

En la sección Configuración, selecciona Pre-install y pega tu script de activación, asegurándote de reemplazar los valores de marcador de posición con tu ID de distribución y dirección Cloud ELB reales.

cortex pre install
#!/bin/bash
# Get current session user
currentUser=$(scutil <<< "show State:/Users/ConsoleUser" | awk '/Name :/ && ! /loginwindow/ { print $3 }')

#Cortex XDR Distribution ID and Cloud Address <---- MODIFY VARIABLES WITH YOURS
distribution="DISTRIBUTION_ID"
cloud="CLOUD_ADDRESS" # https:// format

# Path where Config.xml will be saved
folderPath="/Users/$currentUser/Library/Application Support/auditApps"
filePath="$folderPath/Config.xml"

# Ensure auditApps folder exists and adjust permissions
sudo mkdir -p "$folderPath"
sudo chown "$currentUser" "$folderPath"
sudo chmod 700 "$folderPath"

# Write content to Config.xml using cat
sudo cat << EOF > "$filePath"

    $distribution
    $cloud
    
EOF

# Adjust file permissions
sudo chown "$currentUser" "$filePath"
sudo chmod 600 "$filePath"

sudo installer -applyChoiceChangesXML "/Users/$currentUser/Library/Application Support/auditApps/Config.xml" -pkg "/Users/$currentUser/Library/Application Support/auditApps/Cortex XDR.pkg" -target /

# Verify if the file was created successfully
if [[ -f "$filePath" ]]; then
    echo "Config.xml created at $filePath"
else
    echo "Error creating Config.xml"
    exit 1
fi
3
.mobileconfig personalizado de Cortex XDR

Para aplicar la configuración personalizada, navega a la política deseada y haz clic en + Añadir configuración en el menú del lado izquierdo. Luego, selecciona el botón + Importar y pega el contenido .xml proporcionado en el editor:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
		<dict>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Privacy Preferences Policy Control</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.TCC.configuration-profile-policy.7388C706-49BA-4067-BADE-8D031B084B69</string>
			<key>PayloadType</key>
			<string>com.apple.TCC.configuration-profile-policy</string>
			<key>PayloadUUID</key>
			<string>7388C706-49BA-4067-BADE-8D031B084B69</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>Services</key>
			<dict>
				<key>Accessibility</key>
				<array>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier "com.paloaltonetworks.cortex.agent" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>com.paloaltonetworks.cortex.agent</string>
						<key>IdentifierType</key>
						<string>bundleID</string>
						<key>StaticCode</key>
						<false/>
					</dict>
				</array>
				<key>SystemPolicyAllFiles</key>
				<array>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier "com.paloaltonetworks.traps.securityextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>com.paloaltonetworks.traps.securityextension</string>
						<key>IdentifierType</key>
						<string>bundleID</string>
						<key>StaticCode</key>
						<false/>
					</dict>
					<dict>
						<key>Allowed</key>
						<true/>
						<key>CodeRequirement</key>
						<string>identifier pmd and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
						<key>Identifier</key>
						<string>/Library/Application Support/PaloAltoNetworks/Traps/bin/pmd</string>
						<key>IdentifierType</key>
						<string>path</string>
						<key>StaticCode</key>
						<false/>
					</dict>
				</array>
			</dict>
		</dict>
		<dict>
			<key>AllowUserOverrides</key>
			<true/>
			<key>AllowedSystemExtensions</key>
			<dict>
				<key>PXPZ95SK77</key>
				<array>
					<string>com.paloaltonetworks.traps.securityextension</string>
					<string>com.paloaltonetworks.traps.networkextension</string>
				</array>
			</dict>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR System Extensions</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.system-extension-policy.93526FBD-2421-4402-9CAF-210780E2D0FF</string>
			<key>PayloadType</key>
			<string>com.apple.system-extension-policy</string>
			<key>PayloadUUID</key>
			<string>93526FBD-2421-4402-9CAF-210780E2D0FF</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
		</dict>
		<dict>
			<key>FilterDataProviderBundleIdentifier</key>
			<string>com.paloaltonetworks.traps.networkextension</string>
			<key>FilterDataProviderDesignatedRequirement</key>
			<string>identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
			<key>FilterGrade</key>
			<string>firewall</string>
			<key>FilterPacketProviderBundleIdentifier</key>
			<string>com.paloaltonetworks.traps.networkextension</string>
			<key>FilterPacketProviderDesignatedRequirement</key>
			<string>identifier "com.paloaltonetworks.traps.networkextension" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = PXPZ95SK77</string>
			<key>FilterPackets</key>
			<false/>
			<key>FilterSockets</key>
			<true/>
			<key>FilterType</key>
			<string>Plugin</string>
			<key>PayloadDescription</key>
			<string>Content Filter for the Cortex XDR agent network extension</string>
			<key>PayloadDisplayName</key>
			<string>Cortex XDR Network Content Filter</string>
			<key>PayloadIdentifier</key>
			<string>com.apple.webcontent-filter.CA9C208A-EC6D-4565-864D-02B30DE9D56A</string>
			<key>PayloadType</key>
			<string>com.apple.webcontent-filter</string>
			<key>PayloadUUID</key>
			<string>CA9C208A-EC6D-4565-864D-02B30DE9D56A</string>
			<key>PayloadVersion</key>
			<integer>1</integer>
			<key>PluginBundleID</key>
			<string>com.paloaltonetworks.cortex.app</string>
			<key>UserDefinedName</key>
			<string>Cortex XDR Network Filter</string>
		</dict>
		<dict>
			<key>NotificationSettings</key>
			<array>
				<dict>
					<key>AlertType</key>
					<integer>1</integer>
					<key>BadgesEnabled</key>
					<true/>
					<key>BundleIdentifier</key>
					<string>com.paloaltonetworks.traps-agent</string>
					<key>CriticalAlertEnabled</key>
					<true/>
					<key>GroupingType</key>
					<integer>0</integer>
					<key>NotificationsEnabled</key>
					<true/>
					<key>PreviewType</key>
					<integer>0</integer>
					<key>ShowInCarPlay</key>
					<true/>
					<key>ShowInLockScreen</key>
					<true/>
					<key>ShowInNotificationCenter</key>
					<true/>
					<key>SoundsEnabled</key>
					<true/>
				</dict>
				<dict>
					<key>AlertType</key>
					<integer>1</integer>
					<

Una vez hecho, asegúrate de Guardar cambios para aplicar la configuración.

Key Takeaways

  • Despliegue centralizado de Cortex XDR en dispositivos macOS mediante Applivery MDM.
  • Proceso de instalación automatizado usando scripts de activación y perfiles de configuración.
  • Postura de seguridad mejorada mediante una configuración de endpoints consistente.
  • Gestión simplificada de Cortex XDR en dispositivos macOS.

Necesitas el paquete cliente de Cortex XDR (.pkg), el ID de distribución, la dirección Cloud ELB, el script de activación, una política de acceso completo al disco, un perfil .mobileconfig personalizado y una licencia de Applivery.

Puedes encontrar tu ID de distribución y dirección Cloud ELB en tu panel de Cortex XDR.

Comprime el archivo .pkg en un .zip y luego súbelo a la sección App Distribution del panel de Applivery.

En la configuración de la política de Applivery, selecciona "Pre-install" y pega tu script de activación, reemplazando los valores de marcador de posición con tu ID de distribución y dirección Cloud ELB.

Puedes elegir entre los modos de instalación "Instalación forzada", "Requerida para la configuración" o "Disponible" en Applivery, según tu estrategia de despliegue.

En la política de Applivery deseada, añade una nueva configuración e importa el contenido .xml proporcionado para el perfil .mobileconfig personalizado de Cortex XDR.

El perfil .mobileconfig personalizado es necesario para configurar el acceso completo al disco y las extensiones del sistema para Cortex XDR en dispositivos macOS.

Last updated: March 26, 2026