[]{class="badge informative"}
Définir des zones de sécurité (On-Premise) defining-security-zones
Chaque opérateur ou opératrice doit être associé(e) à une zone pour se connecter à une instance et l’adresse IP de l’opérateur ou de l’opératrice doit faire partie des adresses ou des plages d’adresses définies dans la zone de sécurité.La configuration de la zone de sécurité est effectuée dans le fichier de configuration du serveur Adobe Campaign.
Un opérateur est lié à une zone de sécurité à partir de son profil dans la console, accessible dans le nœud Administration > Gestion des accès > Opérateurs. En savoir plus.
Création de zones de sécurité creating-security-zones
Une zone est définie par :
- une ou plusieurs plages d’adresses IP (IPv4 et IPv6)
- un nom technique associé à chaque plage d’adresses IP
Les zones de sécurité sont imbriquées. Chaque définition d’une nouvelle zone à l’intérieur d’une autre réduit donc le nombre d’opérateurs pouvant s’y connecter tout en augmentant les droits attribués à chaque opérateur.
Les zones peuvent être définies lors de la configuration du serveur dans le fichier serverConf.xml. Tous les paramètres disponibles dans serverConf.xml sont répertoriés dans cette section.
Chaque zone définit des droits, comme par exemple :
- Connexion en HTTP plutôt qu’HTTPS
- Affichage des erreurs (pile d’erreurs Java, JavaScript, C++…)
- Prévisualisation des rapports et des webApps
- Authentification par login / password
- Connexion en mode non-sécurisé
Il se peut que l'adresse IP de l'opérateur soit définie dans plusieurs zones. Dans ce cas, l'opérateur reçoit l'union des droits disponibles pour chacune des zones.
Le fichier serverConf.xml livré d’usine contient trois zones : public, vpn et lan.
Exemple d’une définition de zone dans le fichier serverConf.xml :
<securityZone allowDebug="false" allowHTTP="false" label="Public Network" name="public">
<subNetwork label="All addresses" mask="*" name="all"/>
<securityZone allowDebug="true" allowHTTP="false" label="Private Network (VPN)"
name="vpn" showErrors="true">
<securityZone allowDebug="true" allowEmptyPassword="true" allowHTTP="true"
allowUserPassword="false" label="Private Network (LAN)" name="lan"
sessionTokenOnly="true" showErrors="true">
<subNetwork label="Lan 1" mask="192.168.0.0/16" name="lan1"/>
<subNetwork label="Lan 2" mask="172.16.0.0/12" name="lan2"/>
<subNetwork label="Lan 3" mask="10.0.0.0/8" name="lan3"/>
<subNetwork label="Localhost" mask="127.0.0.1/16" name="locahost"/>
<subNetwork label="Lan (IPv6)" mask="fc00::/7" name="lan6"/>
<subNetwork label="Localhost (IPv6)" mask="::1/128" name="localhost6"/>
</securityZone>
</securityZone>
</securityZone>
L’ensemble des droits définissant une zone sont les suivants :
- allowDebug : permet à une webApp d’être exécutée en mode “debug”
- allowEmptyPassword : autorise une connexion à une instance sans mot de passe
- allowHTTP : une session peut être créée sans utiliser le protocole HTTPS
- allowUserPassword : le jeton de session peut être de la forme «
<login>/<password>» - sessionTokenOnly : le jeton de sécurité n’est pas nécessaire dans l’URL de connexion
- showErrors : les erreurs côté serveur sont remontées et affichées
Dans le cas de Message Center, quand il y a plusieurs instances d’exécution, vous devez créer une zone de sécurité supplémentaire avec l’attribut sessionTokenOnly défini sur true, dans laquelle seules les adresses IP nécessaires doivent être ajoutées. Le paramétrage des instances est présenté dans ce document.
Bonnes pratiques pour les zones de sécurité best-practices-for-security-zones
Dans la définition de la zone de sécurité lan, il est possible d’ajouter un masque d’adresse IP définissant un accès technique.Cet ajout permettra d’accéder à toutes les instances hébergées sur le serveur.
<securityZone allowDebug="true" allowEmptyPassword="false" allowHTTP="true"
allowUserPassword="false" label="Private Network (LAN)" name="lan"
sessionTokenOnly="true" showErrors="true">
<subNetwork label="Lan 1" mask="192.168.0.0/16" name="lan1"/>
<subNetwork label="Lan 2" mask="172.16.0.0/12" name="lan2"/>
<subNetwork label="Lan 3" mask="10.0.0.0/8" name="lan3"/>
<subNetwork label="Localhost" mask="127.0.0.1/16" name="locahost"/>
<subNetwork label="Lan (IPv6)" mask="fc00::/7" name="lan6"/>
<subNetwork label="Localhost (IPv6)" mask="::1/128" name="localhost6"/>
<!-- Customer internal IPs -->
<subNetwork id="internalNetwork" mask="a.b.c.d/xx"/>
</securityZone>
Il est recommandé de définir des plages d’adresses IP directement dans le fichier de configuration dédié à l’instance pour les opérateurs accédant uniquement à une instance particulière.
Dans le fichier config-<instance>.xml :
<securityZone name="public">
...
<securityZone name="vpn">
<subNetwork id="cus1" mask="a.b.c.d/xx"/>
Sous-réseaux et proxys dans une zone de sécurité sub-networks-and-proxies-in-a-security-zone
Le paramètre proxy peut être utilisé dans un élément subNetwork afin de définir l’utilisation d’un proxy dans une zone de sécurité.
Lorsqu’un proxy est référencé et qu’une connexion entre via ce proxy (visible via l’en-tête HTTP X-Forwarded-For), la zone vérifiée est celle des clients du proxy et non celle du proxy.
<subnetwork label="Lan 1" mask="192.168.0.0/16" name="lan1" proxy="127.0.0.1,10.100.2.135" />".Plusieurs cas peuvent exister :
-
Un sous-réseau est directement référencé dans la zone de sécurité et aucun proxy n’est configuré : les utilisateurs du sous-réseau peuvent se connecter directement au serveur Adobe Campaign.
-
Un proxy est défini pour un sous-réseau dans la zone de sécurité : les utilisateurs provenant de ce sous-réseau peuvent accéder au serveur Adobe Campaign en passant par ce proxy.
-
Un proxy est inclus dans un sous-réseau de la zone de sécurité : les utilisateurs passant par ce proxy, indépendamment de leur provenance, peuvent accéder au serveur Adobe Campaign.
Les adresses IP des serveurs proxy susceptibles d’accéder au serveur Adobe Campaign doivent être saisies dans le sous-réseau <subnetwork> concerné et le sous-réseau de premier niveau <subnetwork name="all"/>. Par exemple, ici, pour un proxy dont l’adresse IP est 10.131.146.102 :
<securityZone allowDebug="false" allowHTTP="false" label="Public Network"
name="public">
<subNetwork label="All addresses" mask="*" name="all"
proxy="10.131.146.102,127.0.0.1, ::1"/>
<securityZone allowDebug="true" allowHTTP="false" label="Private Network (VPN)"
name="vpn" showErrors="true">
<securityZone allowDebug="true" allowEmptyPassword="false" allowHTTP="true"
allowUserPassword="false" label="Private Network (LAN)"
name="lan" sessionTokenOnly="true" showErrors="true">
<subNetwork label="Lan proxy" mask="10.131.193.182" name="lan3"
proxy="10.131.146.102,127.0.0.1, ::1"/>
<subNetwork label="Lan 1" mask="192.168.0.0/16" name="lan1"
proxy="127.0.0.1, ::1"/>
</securityZone>
</securityZone>
</securityZone>
Liaison d’une zone de sécurité à un opérateur linking-a-security-zone-to-an-operator
Une fois les zones définies, chaque opérateur doit être associé à l’une d’entre elles pour pouvoir se connecter à une instance et l’adresse IP de l’opérateur doit faire partie des adresses ou des plages d’adresses référencées dans la zone.
La configuration technique des zones est effectuée dans le fichier de configuration du serveur Campaign : serverConf.xml.
Au préalable, vous devez configurer l’énumération d’usine Zone de sécurité pour associer un libellé au nom interne de la zone défini dans le fichier serverConf.xml.
Ce paramétrage est effectué dans l’explorateur Campaign :
-
Cliquez sur le nœud Administration > Plateforme > Énumérations.
-
Sélectionnez l’énumération système Zone de sécurité (securityZone).
-
Pour chaque zone de sécurité définie dans le fichier de configuration du serveur, cliquez sur le bouton Ajouter.
-
Dans le champ Nom interne, saisissez le nom de la zone définie dans le fichier serverConf.xml. Il correspond à l’attribut @name de l’élément
<securityzone>. Dans le champ Libellé, rentrez le libellé associé au nom interne.
-
Cliquez sur OK et enregistrez les modifications.
Une fois les zones définies et l’énumération Zone de sécurité configurée, vous devez associer chaque opérateur à une zone :
-
Cliquez sur le nœud Administration > Gestion des accès > Opérateurs.
-
Sélectionnez l’opérateur auquel vous voulez associer une zone de sécurité et cliquez sur l’onglet Edition.
-
Dans l’onglet Droits d’accès, cliquez sur le lien Editer les paramètres d’accès….
-
Sélectionnez une zone dans la liste déroulante Zone autorisée pour la connexion
-
Cliquez sur OK et enregistrez les modifications pour appliquer ces modifications.
Recommandations
-
Assurez-vous que le proxy inverse n’est pas autorisé dans subNetwork. Si c’est le cas, l’ensemble du trafic est détecté comme provenant de cette adresse IP locale et est donc considéré comme digne de confiance.
-
Limitez l’utilisation de sessionTokenOnly=“true” :
- Avertissement : si cet attribut est défini sur true, l’opérateur peut être exposé à une attaque CRSF.
- De plus, le cookie sessionToken n’étant pas défini avec un flag httpOnly, certains codes JavaScript côté client peuvent le lire.
- L’utilisation de Message Center avec plusieurs instances d’exécution requiert toutefois l’activation de l’option sessionTokenOnly : créez une nouvelle zone de sécurité avec l’option sessionTokenOnly définie sur « true » et ajoutez uniquement les adresses IP nécessaires à cette zone.
-
Si possible, définissez les attributs allowHTTP et showErrors sur la valeur false (pas pour localhost) et vérifiez-les.
- allowHTTP = “false” : force les opérateurs à utiliser le protocole HTTPS.
- showErrors = “false” : masque les erreurs techniques (y compris les erreurs SQL).Il empêche l’affichage d’un trop grand nombre d’informations, mais il limite la possibilité pour les spécialistes marketing de corriger les erreurs (sans demander d’informations supplémentaires à un administrateur ou une administratrice).
-
Définissez allowDebug sur true uniquement sur les adresses IP utilisées par les utilisateurs et utilisatrices et les administrateurs et administratrices marketing qui doivent créer (ou plutôt prévisualiser) des questionnaires, des webApps et des rapports.Cet indicateur permet à ces adresses IP d’afficher les règles de relais et de les déboguer.
-
Lorsque allowDebug est défini sur false, la sortie est la suivante :
code language-none <redir status='OK' date='...' sourceIP='...'/> -
Lorsque allowDebug est défini sur true, la sortie est la suivante :
code language-none <redir status='OK' date='...' build='...' OR version='...' sha1='...' instance='...' sourceIP='...' host='...' localHost='...'/>
-
-
Ne définissez jamais allowEmptyPassword, allowUserPassword et allowSQLInjection sur true.
-
allowEmptyPassword permet aux opérateurs et opératrices d’avoir un mot de passe vide.Si c’est votre cas, demandez à tous les opérateurs et opératrices de définir un mot de passe avec une échéance.Une fois ce délai passé, définissez cet attribut sur la valeur false.
-
allowUserPassword permet aux opérateurs et opératrices d’envoyer leurs informations d’identification sous forme de paramètres (afin qu’elles soient consignées par apache/IIS/proxy).Cette fonctionnalité était utilisée dans le passé pour simplifier l’utilisation de l’API.Vous pouvez vérifier dans votre livre de cookies (ou dans la spécification) si certaines applications tierces l’utilisent.Si c’est le cas, vous devez les informer de modifier leur façon d’utiliser notre API et de supprimer cette fonctionnalité dès que possible.
-
L’attribut allowSQLInjection permet à l’utilisateur d’effectuer des injections SQL en utilisant une ancienne syntaxe. Cet attribut doit être défini sur false. Vous pouvez utiliser /nl/jsp/ping.jsp?zones=true pour vérifier la configuration de votre zone de sécurité.Cette page affiche le statut actif des mesures de sécurité (calculé avec ces indicateurs de sécurité) pour l’adresse IP actuelle.
-
-
Cookie HttpOnly/useSecurityToken : reportez-vous au flag sessionTokenOnly.
-
Limitez le nombre d’adresses IP ajoutées à la liste autorisée : dans les zones de sécurité, nous avons ajouté les 3 plages pour les réseaux privés dans la configuration d’usine. Il est peu probable que vous utilisiez toutes ces adresses IP. Ne gardez par conséquent que celles qui vous sont nécessaires.
-
Mettez à jour l’opérateur interne/webApp pour qu’il soit accessible uniquement dans localhost.