diff --git a/Jenkinsfile b/Jenkinsfile index f9348236bff042cb87c1ab42ca913266e5057bd5..80fd33f374500473f7735f03b04809ce8f0841bb 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -155,15 +155,15 @@ try { error('Delivery stage failure.'); } } - build job: 'centreon-license-manager/1.0', wait: false + build job: 'centreon-license-manager/1.1.x', wait: false build job: 'centreon-poller-display/1.6.x', wait: false - build job: 'centreon-pp-manager/2.3', wait: false - build job: 'centreon-bam/3.5.x', wait: false + build job: 'centreon-pp-manager/2.3.x', wait: false + build job: 'centreon-bam/3.6.x', wait: false build job: 'des-mbi-bundle-centos6', wait: false build job: 'des-mbi-bundle-centos7', wait: false } } catch(e) { - if (env.BRANCH_NAME == '2.8.x' && !(${e} =~ /^.+FlowInterruptedException\$/)) { + if (env.BRANCH_NAME == '2.8.x') { slackSend channel: "#monitoring-metrology", color: "#F30031", message: "*FAILURE*: `CENTREON WEB` <${env.BUILD_URL}|build #${env.BUILD_NUMBER}> on branch ${env.BRANCH_NAME}\n" + diff --git a/doc/en/faq/gdpr_compliance.rst b/doc/en/faq/gdpr_compliance.rst new file mode 100644 index 0000000000000000000000000000000000000000..cd351b5b7b7aad94635d521c1bd5b876645d0217 --- /dev/null +++ b/doc/en/faq/gdpr_compliance.rst @@ -0,0 +1,54 @@ +.. _gdpr_compliance: + +=============== +GDPR Compliance +=============== + +Information Centreon customers should know to prepare for their GDPR Compliance +=============================================================================== + +In a Managed Service Provider (MSP) context, the Centreon platform delivers monitoring services to the MSP's customers. + +Storing User Identification information +--------------------------------------- + +For each MSP's customer, the Centreon Central Server stores in its SQL database the identification information of the users that can access the monitoring service: + +* name +* alias (login), password +* email address +* phone number (optional, for notification purpose) + +The Central Server also stores the service parameters of each user: + +* default language, timezone +* notification parameters +* ACL groups + +Information management: + +* Each user can access to his/her own information from the **Administration > Parameters > MyAccount** menu. +* The users can be created, changed or deleted from the **Configuration > Users** menu by any user which ACL grant access to this menu. + +Logging User actions +-------------------- + +If a user is allowed to change the monitoring configuration (as defined by its ACL), a log message with the user alias is stored on the Centreon Central Server SQL database each time a configuration action is performed by this user: + +* These logs can be listed in the **Administration > Logs** menu, filtered by user. +* These logs can only be deleted by accessing the SQL database and deleting any relevant record. + +HTTP Transactions +----------------- + +Centreon recommends securing the monitoring platform by activating the HTTPS mode on the Apache server. A signed official certificate is required to ensure a minimum level of security. + +Authentication +-------------- + +In order to stay consistent with your security policy and to better manage user lifecycle and approvals, Centreon has an option to enable linking to an Active Directory or LDAP directory. Centreon recommends enabling this option and not using a local account. + +Backup +------ + +Centreon provides a Centreon data extraction module to enable the implementation of a supervisory data backup policy. Centreon strongly recommends to set up this module and especially not to leave the data on the supervision platform. diff --git a/doc/en/faq/index.rst b/doc/en/faq/index.rst index 2580896c827c221cd0b7a06fc12510f984cf6c4f..c68b264769edd84b1421654cfb27e2d904ac8047 100644 --- a/doc/en/faq/index.rst +++ b/doc/en/faq/index.rst @@ -7,4 +7,5 @@ FAQ administration performance + gdpr_compliance diff --git a/doc/fr/faq/gdpr_compliance.rst b/doc/fr/faq/gdpr_compliance.rst new file mode 100644 index 0000000000000000000000000000000000000000..98ba1055a0fc19f99e82cbf23fa0573494cea1b2 --- /dev/null +++ b/doc/fr/faq/gdpr_compliance.rst @@ -0,0 +1,54 @@ +.. _gdpr_compliance: + +=============== +Conformité RGPD +=============== + +Information pour les utilisateurs Centreon afin de préparer leur conformité RGPD +================================================================================ + +Dans un contexte de fournisseur de services d'infogérance (MSP), la plate-forme Centreon délivre un service de supervision aux clients du fournisseur. + +Stockage des informations d'identification de l'utilisateur +----------------------------------------------------------- + +Pour chaque client du fournisseur, le serveur Centreon central stocke en base de données les informations d'identification de l'utilisateur afin d'accéder au serveur de supervision : + +* nom (name) +* pseudo (alias/login), mot de passe +* adresse mail +* numéro de téléphone (optionnel, pour notification associée) + +Le serveur central enregistre également des paramètres additionnels pour chaque utilisateur : + +* langue, fuseau horaire +* paramétrage de la notification +* groupes de contrôle d'accès (ACL) + +Gestion de l'information : + +* Chaque utilisateur peut accéder à ses informations via le menu **Administration > Paramètres > Mon compte** +* Les utilisateur peuvent être créés, modifiés et supprimés depuis le menu **Configuration > Utilisateurs** par un utilisateur possédant les droits nécessaires. + +Journalisation des actions utilisateur +-------------------------------------- + +Si un utilisateur possède les droits de configuration de la supervision (défini dans les accès utilisateur), une entrée dans le journal stockée en base de données et liée à son compte utilisateur sera présente pour chaque modification réalisée : + +* L'accès aux journaux est disponible via le menu **Administration > Logs** avec possibilité de filtrer par utilisateur. +* Ces journaux ne peuvent être supprimés qu'en accédant à la base de données SQL et en supprimant tout enregistrement pertinent. + +Transactions HTTP +----------------- + +Centreon recommande de sécuriser l'accès à la plate-forme de surveillance en activant le mode HTTPS sur le serveur Apache. Un certificat officiel signé est requis pour assurer un niveau de sécurité minimum. + +Authentification +---------------- + +Afin de rester cohérent avec votre politique de sécurité et de mieux gérer le cycle de vie et les approbations des utilisateurs, Centreon dispose d'une option pour activer la liaison vers un annuaire Active Directory ou LDAP. Centreon recommande d'activer cette option et de ne pas utiliser un compte local. + +Sauvegarde +---------- + +Centreon fournit un module d'extraction de données Centreon pour permettre la mise en place d'une politique de sauvegarde des données de supervision. Centreon recommande fortement d'activer ce module et surtout d'exporter la sauvegarde sur un serveur tiers. diff --git a/doc/fr/faq/index.rst b/doc/fr/faq/index.rst index ae718ddf17719145d141afccfd15dc659b90d107..7aab8adba99ecb121050c3f8383cfccfa2efddf1 100644 --- a/doc/fr/faq/index.rst +++ b/doc/fr/faq/index.rst @@ -7,3 +7,4 @@ Foire Aux Questions administration performance + gdpr_compliance diff --git a/features/CustomViews.feature b/features/CustomViews.feature index d013414c58d5d9851e4b933627177608d77bfcc8..0e6c3627362b4f7e62cebe0a3be1504647e17f75 100644 --- a/features/CustomViews.feature +++ b/features/CustomViews.feature @@ -7,14 +7,12 @@ Feature: Custom views Given I am logged in a Centreon server with some widgets # public views - @critical Scenario: Share public custom view Given a publicly shared custom view When a user wishes to add a new custom view Then he can add the public view And he cannot modify the content of the shared view - @critical Scenario: Remove public share Given a publicly shared custom view And a user is using the public view @@ -22,7 +20,6 @@ Feature: Custom views Then the view is not visible anymore And the user can use the public view again - @critical Scenario: Remove public share by owner Given a publicly shared custom view And a user is using the public view @@ -30,14 +27,12 @@ Feature: Custom views Then the view is not visible anymore for the user # user shared locke views - @critical Scenario: Share read-only custom view with users Given a custom view shared in read only with a user When the user wishes to add a new custom view Then he can add the shared view And he cannot modify the content of the shared view - @critical Scenario: Remove read-only custom view shared with users Given a custom view shared in read only with a user And the user is using the shared view @@ -45,14 +40,12 @@ Feature: Custom views Then the view is not visible anymore And the user can use the shared view again - @critical Scenario: Update a read only custom view shared with users Given a custom view shared in read only with a user And the user is using the shared view When the owner modifies the custom view Then the changes are reflected on all users displaying the custom view - @critical Scenario: Delete a shared custom view Given a custom view shared in read only with a user And the user is using the shared view @@ -60,13 +53,11 @@ Feature: Custom views Then the view is removed for all users displaying the custom view # user shared not locke views - @critical Scenario: Modify a shared view Given a shared custom view When the user is using the shared view Then he can modify the content of the shared view - @critical Scenario: Remove an unlocked shared view Given a shared custom view And the user is using the shared view @@ -74,7 +65,6 @@ Feature: Custom views Then the view is not visible anymore And the user can use the shared view again - @critical Scenario: Modify an unlocked shared view and applies changes Given a shared custom view And the user is using the shared view @@ -82,7 +72,6 @@ Feature: Custom views Then the changes are reflected on all users displaying the custom view #Then a warning is shown to the user who wants to apply the changes - @critical Scenario: Deletion of an unlocked shared view Given a shared custom view And the user is using the shared view @@ -91,14 +80,12 @@ Feature: Custom views And the view is removed for the owner # contact groups shared locke views - @critical Scenario: Share read-only custom view with groups Given a custom view shared in read only with a group When the user wishes to add a new custom view Then he can add the shared view And he cannot modify the content of the shared view - @critical Scenario: Remove read-only custom view shared with groups Given a custom view shared in read only with a group And the user is using the shared view @@ -106,14 +93,12 @@ Feature: Custom views Then the view is not visible anymore And the user can use the shared view again - @critical Scenario: Update a read only custom view shared with groups Given a custom view shared in read only with a group And the user is using the shared view When the owner modifies the custom view Then the changes are reflected on all users displaying the custom view - @critical Scenario: Delete a shared custom view with groups Given a custom view shared in read only with a group And the user is using the shared view @@ -121,13 +106,11 @@ Feature: Custom views Then the view is removed for all users displaying the custom view # contact groups shared not locke views - @critical Scenario: Modify a shared view with groups Given a shared custom view with a group When the user is using the shared view Then he can modify the content of the shared view - @critical Scenario: Remove an unlocked shared view with groups Given a shared custom view with a group And the user is using the shared view @@ -135,7 +118,6 @@ Feature: Custom views Then the view is not visible anymore And the user can use the shared view again - @critical Scenario: Modify an unlocked shared view with groups and applies changes Given a shared custom view with a group And the user is using the shared view @@ -143,7 +125,6 @@ Feature: Custom views Then the changes are reflected on all users displaying the custom view #Then a warning is shown to the user who wants to apply the changes - @critical Scenario: Deletion of an unlocked shared view with groups Given a shared custom view with a group And the user is using the shared view diff --git a/features/DowntimeDST.feature b/features/DowntimeDST.feature index 560ff1bb0f49811ec299181d32eece37e5dc374b..43676263800d772ae6d7eea3fe8ca43b20032a60 100644 --- a/features/DowntimeDST.feature +++ b/features/DowntimeDST.feature @@ -10,55 +10,46 @@ Feature: Downtime DST # summer changing time - @critical Scenario: realtime downtime starting on summer changing time Given a downtime starting on summer changing time When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime starting on summer changing time Given a downtime starting on summer changing time When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime ending on summer changing time Given a downtime ending on summer changing time When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime ending on summer changing time Given a downtime ending on summer changing time When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime starting and ending on summer changing time Given a downtime starting and ending on summer changing time When recurrent downtime is applied Then the downtime is not scheduled - @critical Scenario: realtime downtime starting and ending on summer changing time Given a downtime starting and ending on summer changing time When realtime downtime is applied Then the downtime is not scheduled - @critical Scenario: recurrent downtime during all day on summer changing date Given a downtime during all day on summer changing date When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime during all day on summer changing date Given a downtime during all day on summer changing date When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime of next day of summer changing date Given a downtime during all day on summer changing date is scheduled And a downtime of next day of summer changing date @@ -69,64 +60,54 @@ Feature: Downtime DST # winter changing time - @critical Scenario: recurrent downtime starting on winter changing time Given a downtime starting on winter changing time When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime starting on winter changing time Given a downtime starting on winter changing time When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime ending on winter changing time Given a downtime ending on winter changing time When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime ending on winter changing time Given a downtime ending on winter changing time When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime starting and ending on winter changing time Given a downtime starting and ending on winter changing time When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime starting and ending on winter changing time Given a downtime starting and ending on winter changing time When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime during all day on winter changing date Given a downtime during all day on winter changing date When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime during all day on winter changing date Given a downtime during all day on winter changing date When realtime downtime is applied Then the downtime is properly scheduled - @critical Scenario: recurrent downtime of next day of winter changing date Given a downtime during all day on winter changing date is scheduled And a downtime of next day of winter changing date When recurrent downtime is applied Then the downtime is properly scheduled - @critical Scenario: realtime downtime of next day of winter changing date Given a downtime during all day on winter changing date is scheduled And a downtime of next day of winter changing date When realtime downtime is applied - Then the downtime is properly scheduled \ No newline at end of file + Then the downtime is properly scheduled diff --git a/features/TestProxyConfiguration.feature b/features/TestProxyConfiguration.feature index 6cdcd442fe422756034257613703cc9ea5e3ec5f..59eb19e3352755be0840c748b92637aa5444a364 100644 --- a/features/TestProxyConfiguration.feature +++ b/features/TestProxyConfiguration.feature @@ -3,14 +3,12 @@ Feature: Testing A Configuration Proxy I want to test my proxy configuration So that to verify it - @critical Scenario: Proxy settings with a correct connection Given I am logged in a Centreon server with a configured proxy When I test the proxy configuration in the interface Then a popin displays a successful connexion - @critical Scenario: Proxy settings with a wrong connection Given I am logged in a Centreon server with a wrongly configured proxy - When I test the proxy configuration in the interface + When I test the proxy configuration in the interface Then a popin displays an error message diff --git a/features/TrapsSNMPConfiguration.feature b/features/TrapsSNMPConfiguration.feature index e9361e42b1be68c7f25edc4740b32d3c939b85b3..95901592eb275ff5f5f22b81faaeff6b97e16248 100644 --- a/features/TrapsSNMPConfiguration.feature +++ b/features/TrapsSNMPConfiguration.feature @@ -2,26 +2,22 @@ Feature: TrapsSNMPConfiguration As an IT supervisor I want to configure SNMP traps To monitore a router - + Background: Given I am logged in a Centreon server - @critical Scenario: Creating SNMP trap with advanced matching rule When I add a new SNMP trap definition with an advanced matching rule Then the trap definition is saved with its properties, especially the content of Regexp field - @critical Scenario: Modify SNMP trap definition When I modify some properties of an existing SNMP trap definition Then all changes are saved - @critical Scenario: Duplicate SNMP trap definition When I have duplicated one existing SNMP trap definition Then all SNMP trap properties are updated - @critical Scenario: Delete SNMP trap definition When I have deleted one existing SNMP trap definition Then this definition disappears from the SNMP trap list diff --git a/features/TrapsSNMPGroupConfiguration.feature b/features/TrapsSNMPGroupConfiguration.feature index 24bc56c95d3dd9322fce56275b35d6694c99f283..327f6706c54aefe4b76640a72389d3fa7b1b17b0 100644 --- a/features/TrapsSNMPGroupConfiguration.feature +++ b/features/TrapsSNMPGroupConfiguration.feature @@ -7,17 +7,14 @@ Feature: Edit a trap group Given I am logged in a Centreon server And a trap group is configured - @critical Scenario: Change the properties of a trap group When I change the properties of a trap group Then the properties are updated - @critical Scenario: Duplicate one existing trap group When I duplicate a trap group Then the new object has the same properties - @critical Scenario: Delete one existing trap group When I delete a trap group Then the deleted object is not displayed in the list diff --git a/www/include/common/javascript/tool.js b/www/include/common/javascript/tool.js index f77300061d47b96a74c6106d3d6c5a2ad6bbb52d..ecaaf625bd4e490880f8a344e7127e1768a6f95f 100644 --- a/www/include/common/javascript/tool.js +++ b/www/include/common/javascript/tool.js @@ -140,13 +140,16 @@ function toggleDisplay(id) function checkUncheckAll(theElement) { jQuery(theElement).parents('tr').nextAll().find('input[type=checkbox]').each(function() { + if (theElement.checked && !jQuery(this).attr('checked')) { - jQuery(this).attr('checked',true); + jQuery(this).attr("checked",true).prop("checked", true); + if (typeof(_selectedElem) != 'undefined') { putInSelectedElem(jQuery(this).attr('id')); } } else if (!theElement.checked && jQuery(this).attr('checked')) { - jQuery(this).attr('checked', false); + jQuery(this).attr("checked", false).prop("checked", false); + if (typeof(_selectedElem) != 'undefined') { removeFromSelectedElem(jQuery(this).attr('id')); } diff --git a/www/include/options/accessLists/actionsACL/formActionsAccess.ihtml b/www/include/options/accessLists/actionsACL/formActionsAccess.ihtml index 586c1c5e500f6dcb5a66798ed37742ad64a90997..412cca2c88b3c225834189e692d1712d9a9c232d 100644 --- a/www/include/options/accessLists/actionsACL/formActionsAccess.ihtml +++ b/www/include/options/accessLists/actionsACL/formActionsAccess.ihtml @@ -142,25 +142,25 @@ jQuery('input[name=all_service]').change(function(){ if (jQuery(this).prop('checked')) { - jQuery('.serviceCheckbox input').attr('checked',true); + jQuery('.serviceCheckbox input').attr('checked', true).prop('checked', true); } else { - jQuery('.serviceCheckbox input').attr('checked',false); + jQuery('.serviceCheckbox input').attr('checked', false).prop('checked', false); } }); jQuery('input[name=all_host]').change(function(){ if (jQuery(this).prop('checked')) { - jQuery('.hostCheckbox input').attr('checked',true); + jQuery('.hostCheckbox input').attr('checked', true).prop('checked', true); } else { - jQuery('.hostCheckbox input').attr('checked',false); + jQuery('.hostCheckbox input').attr('checked', false).prop('checked', false); } }); jQuery('input[name=all_engine]').change(function(){ if (jQuery(this).prop('checked')) { - jQuery('.engineCheckbox input').attr('checked',true); + jQuery('.engineCheckbox input').attr('checked', true).prop('checked', true); } else { - jQuery('.engineCheckbox input').attr('checked',false); + jQuery('.engineCheckbox input').attr('checked', false).prop('checked', false); } }); diff --git a/www/include/options/accessLists/actionsACL/listsActionsAccess.ihtml b/www/include/options/accessLists/actionsACL/listsActionsAccess.ihtml index 3e0147f9dc3623ffe541ffacfb99dbcf317c33c6..ec3b80385ce5c0423dd84a3a36b17c8683bdb270 100644 --- a/www/include/options/accessLists/actionsACL/listsActionsAccess.ihtml +++ b/www/include/options/accessLists/actionsACL/listsActionsAccess.ihtml @@ -1,4 +1,5 @@ <script type="text/javascript" src="./include/common/javascript/tool.js"></script> +<script type="text/javascript" src="./include/common/javascript/resize_td.js"></script> <form name='form' method='POST'> <table class="ajaxOption table"> <tbody> diff --git a/www/include/options/accessLists/groupsACL/listGroupConfig.ihtml b/www/include/options/accessLists/groupsACL/listGroupConfig.ihtml index e952d23ff783590286682a4204dda0e4d8d24b43..fec08607e7c0bdb45200066d9aca2beafaaae94a 100644 --- a/www/include/options/accessLists/groupsACL/listGroupConfig.ihtml +++ b/www/include/options/accessLists/groupsACL/listGroupConfig.ihtml @@ -1,4 +1,5 @@ <script type="text/javascript" src="./include/common/javascript/tool.js"></script> +<script type="text/javascript" src="./include/common/javascript/resize_td.js"></script> <form name='form' method='POST'> <table class="ajaxOption table"> <tbody> diff --git a/www/include/options/accessLists/menusACL/listsMenusAccess.ihtml b/www/include/options/accessLists/menusACL/listsMenusAccess.ihtml index dfe3edd5f019eb00ecb21a98d0b17d97c7c33adf..34668e0f525a1064e292e5d7bef78bf7906c249a 100644 --- a/www/include/options/accessLists/menusACL/listsMenusAccess.ihtml +++ b/www/include/options/accessLists/menusACL/listsMenusAccess.ihtml @@ -1,4 +1,5 @@ <script type="text/javascript" src="./include/common/javascript/tool.js"></script> +<script type="text/javascript" src="./include/common/javascript/resize_td.js"></script> <form name='form' method='POST'> <table class="ajaxOption table"> <tbody> diff --git a/www/include/options/accessLists/resourcesACL/listsResourcesAccess.ihtml b/www/include/options/accessLists/resourcesACL/listsResourcesAccess.ihtml index 522d2776a0766265112ba974da2c758c82b61c55..5edac09afeb87cf8daad02c9750efa1e48840346 100644 --- a/www/include/options/accessLists/resourcesACL/listsResourcesAccess.ihtml +++ b/www/include/options/accessLists/resourcesACL/listsResourcesAccess.ihtml @@ -1,4 +1,5 @@ <script type="text/javascript" src="./include/common/javascript/tool.js"></script> +<script type="text/javascript" src="./include/common/javascript/resize_td.js"></script> <form name='form' method='POST'> <table class="ajaxOption table"> <tbody> @@ -63,4 +64,4 @@ setDisabledRowStyle(); setOverflowDivToTitle(('.resizeTitle')); </script> -{/literal} \ No newline at end of file +{/literal}