Iru était autrefois connue sous le nom de Kandji.
Cet article illustre la procédure de déploiement Netskope Client sur un périphérique macOS exécutant Big Sur ou une version ultérieure en utilisant Kandji MDM comme fournisseur d'identité. Ce processus permet de réduire l'interaction de l'utilisateur lors du déploiement des certificats de locataire, des extensions système et réseau.
Conditions préalables au déploiement
- Téléchargez les certificats racine et intermédiaire de Netskope.
- Téléchargez le script de l'application VPN Proxy depuis le portail d'assistance Netskope. Ceci est requis pour les appareils macOS exécutant Big Sur ou une version ultérieure.
- Accès administrateur à Kandji.
- Accès administrateur à Netskope.
- Configuration de l'IdP avec Netskope (pour les inscriptions initiées par l'IdP).
- Configuration de l'intégration de l'utilisateur IdP avec Kandji (pour l'inscription attribuée à l'utilisateur par Kandji).
- Configurez l’authentification SAML entre Netskope et votre IDP.
Avant de commencer
Avant de commencer le déploiement, effectuez les étapes suivantes pour télécharger les certificats et les fichiers de configuration requis dans Kandji afin d'installer et d'activer le Client avec succès :
Télécharger les certificats Netskope
-
Connectez-vous à Netskope WebUI avec l’accès administrateur et allez sur Settings > Manage > Certificates.
-
Cliquez sur l'onglet Signing CA et téléchargez les certificats Netskope Root et Netskope Intermediate.

-
Convertissez les certificats téléchargés en .cer en renommant le fichier .pem en .cer.
Télécharger les certificats Netskope vers Kandji
Pour télécharger les certificats dans Kandji :
Important
Il est obligatoire de télécharger le certificat racine Netskope et le certificat intermédiaire Netskope.
- Connectez-vous à Kandji et allez sur Library > Add New.

- Select Profiles dans le menu déroulant.
- Cliquez sur Certificate > Add and Configure

- Upload Netskope Root Certificate (.cer format).
- Enter a name for this certificate, for example: Netskope Root Certificate
- Select Certificate Type comme PKCS#1-formatted certificate.
- Faites glisser et déposez le fichier .cer dans la boîte de téléchargement.

- Répétez cette étape pour télécharger le certificat de locataire Netskope. Lors du téléchargement, donnez un nom, par exemple : Certificat de locataire Netskope.
Télécharger la configuration VPN vers Kandji
- Allez sur Library > Add New > Profil personnalisé.
- Cliquez sur Add and Configure.
- Indiquez un nom.
- Téléchargez le script proxy AppVPN depuis le support Netskope.
- Extrayez le fichier zip et téléchargez le fichier .mobileconfig fichier.

Ajouter un profil d'extension du système
- Allez sur Library, sélectionnez Profiles dans le menu déroulant.
- Select System Extension et cliquez sur Add and Configure.

- Spécifiez les éléments suivants pour l'extension du système
- Dans Général, sélectionnez la case à cocher pour activer Allow Users to approve system extensions.
- Identifiant de l'équipe : 24W52P9M7W
- Name (optional): Netskope
- Sous System Extension, sélectionnez Allow all system extensions dans le menu déroulant.

Empêcher la désactivation des éléments de démarrage et d'arrière-plan de Netskope
- Allez sur Library > Add New (vous pouvez également ajouter des paramètres Netskope à un élément de connexion préexistant &Background).

- Select Profiles dans le menu déroulant > Login & Background Items > Add & Configure.

- Spécifiez les éléments suivants pour les éléments de connexion et d'arrière-plan :
- Indiquez un nom. Par exemple, connectez-vous à & Background Items.
- Cliquez sur Add Background Item et saisissez les informations suivantes :

- Type d'identifiant : Identificateur d'équipe
- Identifier: 24W52P9M7W
- Commentaire : Netskope Client

- Cliquez sur Save.
Autoriser les paramètres de confidentialité dans Kandji
-
Allez sur Library > Add New (vous pouvez également ajouter des paramètres Netskope à un élément de bibliothèque Privacy préexistant).
-
Select Profiles du menu déroulant > Privacy > Add & Configure
-
Sous APP ACCESS, créez ce qui suit :
Privacy setting #1
-
Identifier Type: ID de l'offre groupée
-
Identifier:
com.netskope.client.Netskope-Client -
Code Requirement:
anchor apple generic and identifier "com.netskope.client.Netskope-Client" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or 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] = "24W52P9M7W")
-
App or Service: Autoriser Accessibility et SystemPolicyAllFiles.

Privacy setting #2
-
Identifier Type: ID de l'offre groupée
-
Identifier:
com.netskope.epdlp.client -
Code Requirement:
anchor apple generic and identifier "com.netskope.epdlp.client" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or 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] = "24W52P9M7W")
-
App or Service: Allow SystemPolicyAllFiles

Pour en savoir plus : Activation du DLP d’endpoint (Prévention des pertes de données) sur les Netskope Client pour macOS.
Paramètre de confidentialité #3
-
Identifier Type: ID de l'offre groupée
-
Identifier:
com.netskope.client.Netskope-Client.NetskopeClientMacAppProxy -
Code Requirement:
anchor apple generic and identifier "com.netskope.client.Netskope-Client.NetskopeClientMacAppProxy" and (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or 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] = "24W52P9M7W")
-
App or Service: Allow SystemPolicyAllFiles

-
Procédure de déploiement
Après avoir ajouté les certificats et les fichiers requis, vous êtes prêt à commencer les scripts de déploiement à l'aide des scripts prédéfinis en suivant les instructions fournies dans cette section.
Kandji prend en charge les types de méthodes de déploiement suivants :
- Déploiement de l'IdP en mode mono-utilisateur.
- Déploiement de l'IdP en mode multi-utilisateurs.
- Déploiement par l'utilisateur désigné dans Kandji.
Netskope fournit de la documentation sur trois méthodes de déploiement. Choisissez la méthode qui convient le mieux à votre organisation et suivez les instructions de cette section. Si aucune de ces méthodes de déploiement ne s'applique à votre organisation, contactez Netskope pour obtenir une assistance supplémentaire.
Option 1 : Utilisation de l'IdP
- Prend en charge les inscriptions au périphérique pour un ou plusieurs utilisateurs.
- Nécessite une configuration existante du proxy de transfert SAML dans votre locataire Netskope pour permettre l'inscription du client.
- Prise en charge de l'authentification multifactorielle (MFA).
Option 2 : Utiliser l'utilisateur assigné de Kandji
- Installe Netskope Client silencieusement sans interaction de l'utilisateur final.
- Prend en charge les inscriptions en mode mono-utilisateur.
- Les administrateurs doivent sourcer les utilisateurs de Kandji depuis l’IdP. Pour en savoir plus, consultez la documentation d’Iru .
- Affectez chaque périphérique aux utilisateurs prévus pour l'inscription.
- Prise en charge de l'affectation automatisée des utilisateurs via l'authentification IdP dans le cadre de déploiements "zero-touch".
Ajouter des scripts de déploiement à Kandji
Une fois que vous avez terminé les étapes de téléchargement des certificats et des fichiers requis, vous pouvez commencer à ajouter les scripts de déploiement dans Kandji. Vous pouvez utiliser les scripts de déploiement prédéfinis de Netskope.
Les scripts de déploiement sont une combinaison de scripts d'audit et de remédiation qui sont nécessaires pour déployer Netskope Client dans le périphérique de l'utilisateur final.
- Le script d'audit vérifie si Netskope Client est installé sur le périphérique de l'utilisateur final.
- Le script de remédiation installe les clients sur les périphériques des utilisateurs finaux qui n'ont pas le client installé.
Les scripts d'audit sont les mêmes pour chaque méthode de déploiement. Vous pouvez commencer par créer l'élément de la bibliothèque Kandji et ajouter le script d'audit.
-
Allez à Library > Add New.

-
Select Custom Script et cliquez sur Add &Configure.

-
Créez un script personnalisé avec les paramètres suivants :
-
Nom : Saisissez un nom quelconque. Par exemple, Netskope Client Install.
-
Fréquence d'exécution : Réglez ce paramètre sur une valeur adaptée à votre environnement. Netskope recommande de régler cette valeur sur Quotidien ou 15 minutes.
-
-
Saisissez le script suivant dans la zone de texte Audit Script:
#!/bin/bash #script for installing NSAgent on OSX machines #will check to see if Netskope is Installed function Test_NSClient(){ xz=$(/usr/bin/mdfind kMDItemFSName == Netskope Client.app -onlyin /Library/Application\ Support/) if [ -e "$xz" ]; then echo "$xz found netskope client is installed" exit 0 else echo "client does not exist" exit 1 fi } Test_NSClient #end script
-
Cliquez sur +Add Remediation script et ajoutez le script suivant :
Le script de remédiation varie en fonction de la méthode d'inscription que vous avez choisie.-
Remediation Script for IdP enrollment
-
Remplacez les valeurs marquées XXXXX par le nom de domaine de votre locataire et YYYYY par le nom du locataire.
-
spDomain= <tenant-domain>Exemple : goskope.com. -
spTenant = <tenant-name>Exemple : si l’URL de votre locataire est example.goskope.com, Puis n’entre que example. -
Si vous préférez une installation normale en mode mono-utilisateur, aucune autre modification n'est nécessaire.
-
Si vous préférez installer en mode multi-utilisateurs, remplacez "perusermode=0" par "perusermode=1"
-
-
Si l'inscription sécurisée est activée, remplacez les jetons d'inscription d'authentification et de chiffrement par les jetons générés dans l'interface web du locataire :
-
enrollencryptiontoken=<encryption token> -
enrollauthtoken=<jeton d'authentification><authentication token>
Si l'enrôlement sécurisé n'est pas activé, les valeurs suivantes sont affichées dans le script :
-
enrollencryptiontoken=0 -
enrollauthtoken=0
-
#!/bin/bash #Script for installing Netskope Client on OSX machines #function will install Netskope Client function Ins_NSClient(){ ag="NSClient.pkg" spDomain="XXXXX" spTenant="YYYYY" perusermode=0 # put 0 for normal installation, put 1 for per user config # Initialize variables for the mandate failclose enforceFailClose=0 # put 1 for enabling enforce enrollemnt steeringProfileID_val="" frequency_val="5" # Set default value host_val="" #addon url token_val="" #org id # end for mandate failclose variables echo "Downloading NsAgent..." curl -o /tmp/$ag https://download.goskope.com/dlr/mac/get echo "will now add config file..." mkdir -p "/Library/Application Support/Netskope/STAgent" NSIDPCONFIG_FILE_PATH="/Library/Application Support/Netskope/STAgent/nsidpconfig.json" NSUSERCONFIG_JSON_FILE="/Library/Application Support/Netskope/STAgent/nsuserconfig.json" echo "{ \"serviceProvider\": { \"domain\": \"$spDomain\", \"tenant\": \"$spTenant\" } }" > "${NSIDPCONFIG_FILE_PATH}" # Determine the string value for enablePerUserConfig based on the perusermode flag. per_user_enabled="false" if [ $perusermode -eq 1 ]; then per_user_enabled="true" fi if [[ $perusermode -eq 1 || $enforceFailClose -eq 1 ]]; then json_config="{\"nsUserConfig\":{\"enablePerUserConfig\": ${per_user_enabled}, \"configLocation\": \"~/Library/Application Support/Netskope/STAgent\"" mkdir -p "/Library/Application Support/Netskope/STAgent" # Conditionally add host and token directly under nsUserConfig json_config="$json_config, \"host\": \"$host_val\"" json_config="$json_config, \"token\": \"$token_val\"" if [ $enforceFailClose -eq 1 ]; then echo "Enforce fail close option is provided" json_config="$json_config, \"enforceEnrollment\": {" json_config="$json_config \"steeringProfileID\": \"$steeringProfileID_val\"" json_config="$json_config, \"frequency\": \"$frequency_val\"" json_config="$json_config }" # Close the nested object fi # Add the remaining static parts and close the main JSON object json_config="$json_config, \"autoupdate\": \"true\"$fail_close_option}}" # Write the final, valid JSON to the file echo "$json_config" > "${NSUSERCONFIG_JSON_FILE}" fi echo "Installing Agent..." installer -dumplog -pkg /tmp/$ag -target / && rm /tmp/$ag } # Function to create JSON file with provided tokens Create_Json() { # Create directory if it doesn't exist mkdir -p $TEMP_BRANDING_DIR # Delete previous enroll.conf if it exists if [[ -f "$TEMP_ENROLLMENT_TOKEN_FILE" ]]; then rm "$TEMP_ENROLLMENT_TOKEN_FILE" fi local a=$1 #auth token local b=$2 #encryption token # Check if parameters are 32 characters hexadecimal if ! [[ "$a" =~ ^[a-fA-F0-9]{32}$ ]] && [[ "$a" != "0" ]]; then echo "Invalid auth token: must be 32 hexadecimal characters" return 1 fi if ! [[ "$b" =~ ^[a-fA-F0-9]{32}$ ]] && [[ "$b" != "0" ]]; then echo "Invalid encryption token: must be 32 hexadecimal characters" return 1 fi # Start the JSON structure echo "{" > $TEMP_ENROLLMENT_TOKEN_FILE #if both token is present if [[ "$a" != "0" && "$b" != "0" ]]; then echo "\"enrollauthtoken\": \"$a\"," >> $TEMP_ENROLLMENT_TOKEN_FILE echo "\"enrollencryptiontoken\": \"$b\"" >> $TEMP_ENROLLMENT_TOKEN_FILE # only encryption token present elif [[ "$a" == "0" && "$b" != "0" ]]; then echo "\"enrollencryptiontoken\": \"$b\"" >> $TEMP_ENROLLMENT_TOKEN_FILE #only authtoken present elif [[ "$b" == "0" && "$a" != "0" ]]; then echo "\"enrollauthtoken\": \"$a\"" >> $TEMP_ENROLLMENT_TOKEN_FILE else echo "Unsupported use case" fi # End the JSON structure echo "}" >> $TEMP_ENROLLMENT_TOKEN_FILE chmod 700 "$TEMP_ENROLLMENT_TOKEN_FILE" echo "enroll.conf created with provided tokens." } # Main script execution #update these tokens to valid tokens enrollencryptiontoken=0 enrollauthtoken=0 TEMP_BRANDING_DIR="/tmp/nsbranding" TEMP_ENROLLMENT_TOKEN_FILE="$TEMP_BRANDING_DIR/enroll.conf" # Check if atleast one of the token is present, then create enroll.conf if [[ "$enrollencryptiontoken" != "0" || "$enrollauthtoken" != "0" ]]; then echo "Using secure enrollment" Create_Json "$enrollauthtoken" "$enrollencryptiontoken" else echo "Not using secure enrollment" # Delete previous enroll.conf if it exists if [[ -f "$TEMP_ENROLLMENT_TOKEN_FILE" ]]; then rm "$TEMP_ENROLLMENT_TOKEN_FILE" fi fi Ins_NSClient #end script -
-
Remediation script for Kandji assigned user
-
Si l'inscription sécurisée est activée, remplacez les jetons d'inscription d'authentification et de chiffrement par les jetons générés dans l'interface web du locataire :
-
enrollencryptiontoken=<encryption token> -
enrollauthtoken=<jeton d'authentification><authentication token>
Si l'enrôlement sécurisé n'est pas activé, les valeurs suivantes sont affichées dans le script :
-
enrollencryptiontoken=0 -
enrollauthtoken=0
-
-
Remplacez les valeurs marquées XXXXX par votre tenantUrl et YYYYY par l'identifiant de votre organisation.
-
tenantUrl= addon-<tenant url>Exemple : si l’URL de votre locataire est example.goskope.com, Alors ce serait addon-example.goskope.com -
orgKey = <Organization ID>Il se trouve dans votre locataire Netskope à cet emplacement : Paramètres > Security Cloud Platform > MDM Distribution > Deployment Resources for iOS > Create VPN Configuration > Organization ID : YYYYY
#!/bin/bash #Script for installing Netskope Client on OSX machines by the Kandji assigned user #function will install Netskope Client function Ins_NSClient(){ ag="NSClient.pkg" tenantUrl="addon-XXXXX" emailAddress="$(/usr/libexec/PlistBuddy -c 'print :EMAIL' /Library/Managed\ Preferences/io.kandji.globalvariables.plist)" orgKey="YYYYY" echo "will now add config file..." mkdir -p "/tmp/nsbranding" NSINSTPARAM_JSON_FILE="/tmp/nsbranding/nsinstparams.json" echo "{\"TenantHostName\":\"$tenantUrl\", \"Email\":\"$emailAddress\", \"OrgKey\":\"$orgKey\"}" > "${NSINSTPARAM_JSON_FILE}" echo "Downloading NsAgent..." curl -o /tmp/$ag https://download.goskope.com/dlr/mac/get echo "Installing Agent..." installer -dumplog -pkg /tmp/$ag -target / && rm /tmp/$ag echo "Cleaning up..." } # Function to create JSON file with provided tokens Create_Json() { # Create directory if it doesn't exist mkdir -p $TEMP_BRANDING_DIR # Delete previous enroll.conf if it exists if [[ -f "$TEMP_ENROLLMENT_TOKEN_FILE" ]]; then rm "$TEMP_ENROLLMENT_TOKEN_FILE" fi local a=$1 #auth token local b=$2 #encryption token # Check if parameters are 32 characters hexadecimal if ! [[ "$a" =~ ^[a-fA-F0-9]{32}$ ]] && [[ "$a" != "0" ]]; then echo "Invalid auth token: must be 32 hexadecimal characters" return 1 fi if ! [[ "$b" =~ ^[a-fA-F0-9]{32}$ ]] && [[ "$b" != "0" ]]; then echo "Invalid encryption token: must be 32 hexadecimal characters" return 1 fi # Start the JSON structure echo "{" > $TEMP_ENROLLMENT_TOKEN_FILE #if both token is present if [[ "$a" != "0" && "$b" != "0" ]]; then echo "\"enrollauthtoken\": \"$a\"," >> $TEMP_ENROLLMENT_TOKEN_FILE echo "\"enrollencryptiontoken\": \"$b\"" >> $TEMP_ENROLLMENT_TOKEN_FILE # only encryption token present elif [[ "$a" == "0" && "$b" != "0" ]]; then echo "\"enrollencryptiontoken\": \"$b\"" >> $TEMP_ENROLLMENT_TOKEN_FILE #only authtoken present elif [[ "$b" == "0" && "$a" != "0" ]]; then echo "\"enrollauthtoken\": \"$a\"" >> $TEMP_ENROLLMENT_TOKEN_FILE else echo "Unsupported use case" fi # End the JSON structure echo "}" >> $TEMP_ENROLLMENT_TOKEN_FILE chmod 700 "$TEMP_ENROLLMENT_TOKEN_FILE" echo "enroll.conf created with provided tokens." } # Main script execution #update these tokens to valid tokens enrollencryptiontoken=0 enrollauthtoken=0 TEMP_BRANDING_DIR="/tmp/nsbranding" TEMP_ENROLLMENT_TOKEN_FILE="$TEMP_BRANDING_DIR/enroll.conf" # Check if atleast one of the token is present, then create enroll.conf if [[ "$enrollencryptiontoken" != "0" || "$enrollauthtoken" != "0" ]]; then echo "Using secure enrollment" Create_Json "$enrollauthtoken" "$enrollencryptiontoken" else echo "Not using secure enrollment" # Delete previous enroll.conf if it exists if [[ -f "$TEMP_ENROLLMENT_TOKEN_FILE" ]]; then rm "$TEMP_ENROLLMENT_TOKEN_FILE" fi fi Ins_NSClient #end script -
-
-
-
Cliquez sur Save.
Ajouter un profil personnalisé pour Kandji Global Variables
En premier lieu, vous devez déployer un fichier .plist dans le périphérique local pour exécuter le script de remédiation. Le script utilise le fichier .plist lors de l'installation pour identifier l'utilisateur de tout périphérique.
Note
Téléchargez le fichier Kandji-Global-Variables.mobileconfig depuis le portail de support .
Pour ajouter un profil personnalisé :
- Allez à Library > Add New.

- Select Profiles dans la liste déroulante > Custom Profile.
- Cliquez sur Add & Configure.
- Saisissez un nom pour le profil. Par exemple, Kandji Global Variables.
- Upload the downloaded Kandji-Global-Variables.mobileconfig file.

- Cliquez sur Save.
Appliquer les éléments de la bibliothèque New Kandji à votre BlueprintKandji
Netskope recommande de créer un plan de test pour s'assurer que Netskope Client se déploie comme prévu.
- Accédez à votre plan d'action.
- Décochez la case située à côté de Afficher uniquement les fonctions activées.

- Basculez pour activer les éléments suivants :
- Certificat racine Netskope(Profils / Certificats)
- Netskope Tenant Certificate(Profiles / Certificates)
- Netskope-AppProxyVPN (Profil personnalisé)
- Netskope System Extension(System Extension)
- Login & Background Item(Login & Background Items)
- Installer Netskope Client(Scripts personnalisés)
- Variables globales Kandji (Profil personnalisé) ***** nécessaires uniquement en cas d'inscription par des utilisateurs désignés par Kandji
- Cliquez sur Save.

