4.2.5. Paramétrages supplémentaires¶
4.2.5.1. Tuning JVM¶
Prudence
En cas de colocalisation, bien prendre en compte la taille JVM de chaque composant (VITAM : -Xmx512m
par défaut) pour éviter de swapper.
Un tuning fin des paramètres JVM de chaque composant VITAM est possible.
Pour cela, il faut modifier le contenu du fichier deployment/environments/group_vars/all/main/jvm_opts.yml
Pour chaque composant, il est possible de modifier ces 3 variables:
- memory: paramètres Xms et Xmx
- gc: paramètres gc
- java: autres paramètres java
4.2.5.2. Installation des griffins (greffons de préservation)¶
Note
Fonctionnalité disponible partir de la R9 (2.1.1) .
Prudence
Cette version de VITAM ne mettant pas encore en oeuvre de mesure d’isolation particulière des griffins, il est recommandé de veiller à ce que l’usage de chaque griffin soit en conformité avec la politique de sécurité de l’entité. Il est en particulier déconseillé d’utiliser un griffon qui utiliserait un outil externe qui n’est plus maintenu.
Il est possible de choisir les griffins installables sur la plate-forme. Pour cela, il faut éditer le contenu du fichier deployment/environments/group_vars/all/main/main.yml
au niveau de la directive vitam_griffins
. Cette action est à rapprocher de l’incorporation des binaires d’installation : les binaires d’installation des greffons doivent être accessibles par les machines hébergeant le composant worker.
Exemple:
vitam_griffins: ["vitam-imagemagick-griffin", "vitam-jhove-griffin"]
Voici la liste des greffons disponibles au moment de la présente publication :
vitam-imagemagick-griffin
vitam-jhove-griffin
vitam-libreoffice-griffin
vitam-odfvalidator-griffin
vitam-siegfried-griffin
vitam-tesseract-griffin
vitam-verapdf-griffin
vitam-ffmpeg-griffin
Avertissement
Ne pas oublier d’avoir déclaré au préalable sur les machines cibles le dépôt de binaires associé aux griffins.
4.2.5.3. Rétention liée aux logback¶
La solution logicielle VITAM utilise logback pour la rotation des log, ainsi que leur rétention.
Il est possible d’appliquer un paramétrage spécifique pour chaque composant VITAM.
Éditer le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
(et extra_vars.yml
, dans le cas des extra) et appliquer le paramétrage dans le bloc logback_total_size_cap
de chaque composant sur lequel appliquer la modification de paramétrage.
Pour chaque APPENDER, la valeur associée doit être exprimée en taille et unité (exemple : 14GB ; représente 14 gigabytes).
Note
des appenders supplémentaires existent pour le composant storage-engine (appender offersync) et offer (offer_tape et offer_tape_backup).
4.2.5.3.1. Cas des accesslog¶
Il est également possible d’appliquer un paramétrage différent par composant VITAM sur le logback access.
Éditer le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
(et extra_vars.yml
, dans le cas des extra) et appliquer le paramétrage dans les directives access_retention_days
et access_total_size_GB
de chaque composant sur lequel appliquer la modification de paramétrage.
4.2.5.4. Paramétrage de l’antivirus (ingest-external)¶
L’antivirus utilisé par ingest-external est modifiable (par défaut, ClamAV) ; pour cela :
Éditer la variable
vitam.ingestexternal.antivirus
dans le fichierdeployment/environments/group_vars/all/advanced/vitam_vars.yml
pour indiquer le nom de l’antivirus à utiliser.Créer un script shell (dont l’extension doit être
.sh
) sousenvironments/antivirus/
(norme : scan-<vitam.ingestexternal.antivirus>.sh) ; prendre comme modèle le fichierscan-clamav.sh
. Ce script shell doit respecter le contrat suivant :- Argument : chemin absolu du fichier à analyser
- Sémantique des codes de retour
- 0 : Analyse OK - pas de virus
- 1 : Analyse OK - virus trouvé et corrigé
- 2 : Analyse OK - virus trouvé mais non corrigé
- 3 : Analyse NOK
- Contenu à écrire dans stdout / stderr
- stdout : Nom des virus trouvés, un par ligne ; Si échec (code 3) : raison de l’échec
- stderr : Log « brut » de l’antivirus
Prudence
En cas de remplacement de clamAV par un autre antivirus, l’installation de celui-ci devient dès lors un prérequis de l’installation et le script doit être testé.
Avertissement
Il subsiste une limitation avec l’antivirus ClamAV qui n’est actuellement pas capable de scanner des fichiers > 4Go. Ainsi, il n’est pas recommandé de conserver cet antivirus en environnement de production.
Avertissement
Sur plate-forme Debian, ClamAV est installé sans base de données. Pour que l’antivirus soit fonctionnel, il est nécessaire, durant l’installation, de le télécharger ; il est donc nécessaire de renseigner dans l’inventaire la directive http_proxy_environnement
ou de renseigner un miroir local privé).
4.2.5.4.1. Extra: Avast Business Antivirus for Linux¶
Note
Avast étant un logiciel soumis à licence, Vitam ne fournit pas de support ni de licence nécessaire à l’utilisation de Avast Antivirus for Linux.
Vous trouverez plus d’informations sur le site officiel : Avast Business Antivirus for Linux
À la place de clamAV, il est possible de déployer l’antivirus Avast Business Antivirus for Linux.
Pour se faire, il suffit d’éditer la variable vitam.ingestexternal.antivirus: avast
dans le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
.
Il sera nécessaire de fournir le fichier de licence sous deployment/environments/antivirus/license.avastlic
pour pouvoir déployer et utiliser l’antivirus Avast.
De plus, il est possible de paramétrer l’accès aux repositories (Packages & Virus definitions database) dans le fichier deployment/environments/group_vars/all/advanced/cots_vars.yml
.
Si les paramètres ne sont pas définis, les valeurs suivantes sont appliquées par défaut.
## Avast Business Antivirus for Linux
## if undefined, the following default values are applied.
avast:
# logs configuration
logrotate: enabled # or disabled
history_days: 30 # How many days to store logs if logrotate is set to 'enabled'
manage_repository: true
repository:
state: present
# For CentOS
baseurl: http://rpm.avast.com/lin/repo/dists/rhel/release
gpgcheck: no
proxy: _none_
# For Debian
baseurl: 'deb http://deb.avast.com/lin/repo debian-buster release'
vps_repository: http://linux-av.u.avcdn.net/linux-av/avast/x86_64
## List of sha256 hash of excluded files from antivirus. Useful for test environments.
whitelist:
- <EMPTY>
Avertissement
Vitam gère en entrée les SIPs aux formats: ZIP ou TAR (tar, tar.gz ou tar.bz2); cependant et d’après les tests effectués, il est fortement recommandé d’utiliser le format .zip pour bénéficier des meilleures performances d’analyses avec le scan-avast.sh.
De plus, il faudra prendre en compte un dimensionnement supplémentaire sur les ingest-external afin de pouvoir traiter le scan des fichiers >500Mo.
Dans le cas d’un SIP au format .zip ou .tar, les fichiers >500Mo contenus dans le SIP seront décompressés et scannés unitairement. Ainsi la taille utilisée ne dépassera pas la taille d’un fichier.
Dans le cas d’un SIP au format .tar.gz ou .tar.bz2, les SIPs >500Mo seront intégralement décompressés et scannés. Ainsi, la taille utilisée correspondra à la taille du SIP décompressé.
4.2.5.5. Paramétrage des certificats externes (*-externe)¶
Se reporter au chapitre dédié à la gestion des certificats: Gestion des certificats
4.2.5.6. Placer « hors Vitam » le composant ihm-demo¶
Sous deployment/environments/host_vars
, créer ou éditer un fichier nommé par le nom de machine qui héberge le composant ihm-demo et ajouter le contenu ci-dessous :
consul_disabled: true
Il faut également modifier le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
en remplaçant :
- dans le bloc
accessexternal
, la directivehost: "access-external.service.{{ consul_domain }}"
parhost: "<adresse IP de access-external>"
(l’adresse IP peut être une FIP) - dans le bloc
ingestexternal
, la directivehost: "ingest-external.service.{{ consul_domain }}"
parhost: "<adresse IP de ingest-external>"
(l’adresse IP peut être une FIP)
A l’issue, le déploiement n’installera pas l’agent Consul. Le composant ihm-demo appellera, alors, par l’adresse IP de service les composants « access-external » et « ingest-external ».
Il est également fortement recommandé de positionner la valeur de la directive vitam.ihm_demo.metrics_enabled
à false
dans le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
, afin que ce composant ne tente pas d’envoyer des données sur « elasticsearch-log ».
4.2.5.7. Paramétrer le secure_cookie
pour ihm-demo¶
Le composant ihm-demo (ainsi qu’ihm-recette) dispose d’une option supplémentaire, par rapport aux autres composants VITAM, dans le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
: le secure_cookie
qui permet de renforcer ces deux IHM contre certaines attaques assez répandues comme les CSRF (Cross-Site Request Forgery).
Il faut savoir que si cette variable est à true (valeur par défaut), le client doit obligatoirement se connecter en https sur l”IHM, et ce même si un reverse proxy se trouve entre le serveur web et le client.
Cela peut donc obliger le reverse proxy frontal de la chaîne d’accès à écouter en https.
4.2.5.8. Paramétrage de la centralisation des logs VITAM¶
2 cas sont possibles :
- Utiliser le sous-système de gestion des logs fourni par la solution logicielle VITAM ;
- Utiliser un SIEM tiers.
4.2.5.8.1. Gestion par VITAM¶
- Pour une gestion des logs par VITAM, il est nécessaire de déclarer les serveurs ad-hoc dans le fichier d’inventaire pour les 3 groupes suivants :
- hosts_logstash
- hosts_kibana_log
- hosts_elasticsearch_log
4.2.5.8.2. Redirection des logs sur un SIEM tiers¶
En configuration par défaut, les logs VITAM sont tout d’abord routés vers un serveur rsyslog installé sur chaque machine. Il est possible d’en modifier le routage, qui par défaut redirige vers le serveur logstash, via le protocole syslog en TCP.
Pour cela, il est nécessaire de placer un fichier de configuration dédié dans le dossier /etc/rsyslog.d/
; ce fichier sera automatiquement pris en compte par rsyslog. Pour la syntaxe de ce fichier de configuration rsyslog, se référer à la documentation rsyslog.
Astuce
Pour cela, il peut être utile de s’inspirer du fichier de référence VITAM deployment/ansible-vitam/roles/rsyslog/templates/vitam_transport.conf.j2
(attention, il s’agit d’un fichier template ansible, non directement convertible en fichier de configuration sans en ôter les directives jinja2).
4.2.5.9. Passage des identifiants des référentiels en mode esclave¶
La génération des identifiants des référentiels est géré par VITAM lorsqu’il fonctionne en mode maître.
Par exemple :
- Préfixé par
PR-
pour les profils - Préfixé par
IC-
pour les contrats d’entrée - Préfixé par
AC-
pour les contrats d’accès
Depuis la version 1.0.4, la configuration par défaut de VITAM autorise des identifiants externes (ceux qui sont dans le fichier json importé).
- pour le tenant 0 pour les référentiels : contrat d’entrée et contrat d’accès.
- pour le tenant 1 pour les référentiels : contrat d’entrée, contrat d’accès, profil, profil de sécurité et contexte.
La liste des choix possibles, pour chaque tenant, est :
Nom du référentiel | Description |
---|---|
INGEST_CONTRACT | contrats d’entrée |
ACCESS_CONTRACT | contrats d’accès |
PROFILE | profils SEDA |
SECURITY_PROFILE | profils de sécurité (utile seulement sur le tenant d’administration) |
CONTEXT | contextes applicatifs (utile seulement sur le tenant d’administration) |
ARCHIVEUNITPROFILE | profils d’unités archivistiques |
Si vous souhaitez gérer vous-même les identifiants sur un service référentiel, il faut qu’il soit en mode esclave.
Par défaut tous les services référentiels de Vitam fonctionnent en mode maître. Pour désactiver le mode maître de VITAM, il faut modifier le fichier ansible deployment/environments/group_vars/all/main/main.yml
dans les sections vitam_tenants_usage_external
(pour gérer, par tenant, les collections en mode esclave).
4.2.5.10. Paramétrage du batch de calcul pour l’indexation des règles héritées¶
La paramétrage du batch de calcul pour l’indexation des règles héritées peut être réalisé dans le fichier deployment/environments/group_vars/all/advanced/vitam_vars.yml
.
La section suivante du fichier vitam_vars.yml
permet de paramétrer la fréquence de passage du batch :
vitam_timers:
metadata:
- name: vitam-metadata-computed-inherited-rules
frequency: "*-*-* 02:30:00"
La section suivante du fichier vitam_vars.yml
permet de paramétrer la liste des tenants sur lequels s’exécute le batch :
vitam:
worker:
# api_output_index_tenants : permet d'indexer les règles de gestion, les chemins des règles et les services producteurs
api_output_index_tenants: [0,1,2,3,4,5,6,7,8,9]
# rules_index_tenants : permet d'indexer les règles de gestion
rules_index_tenants: [0,1,2,3,4,5,6,7,8,9]
4.2.5.11. Durées minimales permettant de contrôler les valeurs saisies¶
Afin de se prémunir contre une alimentation du référentiel des règles de gestion avec des durées trop courtes susceptibles de déclencher des actions indésirables sur la plate-forme (ex. éliminations) – que cette tentative soit intentionnelle ou non –, la solution logicielle VITAM vérifie que l’association de la durée et de l’unité de mesure saisies pour chaque champ est supérieure ou égale à une durée minimale définie lors du paramétrage de la plate-forme, dans un fichier de configuration.
Pour mettre en place le comportement attendu par le métier, il faut modifier le contenu de la directive vitam_tenant_rule_duration
dans le fichier ansible deployment/environments/group_vars/all/advanced/vitam_vars.yml
.
Exemple:
vitam_tenant_rule_duration:
- name: 2 # applied tenant
rules:
- AppraisalRule : "1 year" # rule name : rule value
- name: 3
rules:
AppraisaleRule : "5 year"
StorageRule : "5 year"
ReuseRule : "2 year"
Par tenant, les directives possibles sont :
Règle | Valeur par défaut |
---|---|
AppraisalRule | |
DisseminationRule | |
StorageRule | |
ReuseRule | |
AccessRule | 0 year |
ClassificationRule |
Les valeurs associées sont une durée au format <nombre> <unité en anglais, au singulier>
Exemples:
6 month 1 year 5 year
Voir aussi
Pour plus de détails, se rapporter à la documentation métier « Règles de gestion ».
4.2.5.12. Augmenter la précision sur le nombre de résultats retournés dépassant 10000¶
Suite à une évolution d’ElasticSearch (à partir de la version 7.6), le nombre maximum de résultats retournés est limité à 10000. Ceci afin de limiter la consommation de ressources sur le cluster elasticsearch.
Pour permettre de retourner le nombre exact de résultats, il est possible d’éditer le paramètre vitam.accessexternal.authorizeTrackTotalHits
dans le fichier de configuration environments/group_vars/all/vitam_vars.yml
Il sera nécessaire de réappliquer la configuration sur le groupe hosts_access_external:
ansible-playbook ansible-vitam/vitam.yml --limit hosts_access_external --tags update_vitam_configuration -i environments/hosts.<environnement> --ask-vault-pass
Ensuite, si l’API de recherche utilise le type d’entrée de DSL « SELECT_MULTIPLE », il faut ajouter $track_total_hits : true
au niveau de la partie « filter » de la requête d’entrée.
Ci-dessous, un exemple de requête d’entrée :
{
"$roots": [],
"$query": [
{
"$match": {
"Title": "héritage"
}
}
],
"$filter": {
"$offset": 0,
"$limit": 100,
"$track_total_hits": true
},
"$projection": {}
}
4.2.5.13. Fichiers complémentaires¶
A titre informatif, le positionnement des variables ainsi que des dérivations des déclarations de variables sont effectuées dans les fichiers suivants :
deployment/environments/group_vars/all/main/main.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
--- # TENANTS # List of active tenants vitam_tenant_ids: [0,1,2,3,4,5,6,7,8,9] # For functional-administration, manage master/slave tenant configuration # http://www.programmevitam.fr/ressources/DocCourante/html/installation/installation/21-addons.html#passage-des-identifiants-des-referentiels-en-mode-esclave vitam_tenants_usage_external: - name: 0 identifiers: - INGEST_CONTRACT - ACCESS_CONTRACT - MANAGEMENT_CONTRACT - ARCHIVE_UNIT_PROFILE - name: 1 identifiers: - INGEST_CONTRACT - ACCESS_CONTRACT - MANAGEMENT_CONTRACT - PROFILE - SECURITY_PROFILE - CONTEXT # GRIFFINS # Vitam griffins required to launch preservation scenario # Example: # vitam_griffins: ["vitam-imagemagick-griffin", "vitam-libreoffice-griffin", "vitam-jhove-griffin", "vitam-odfvalidator-griffin", "vitam-siegfried-griffin", "vitam-tesseract-griffin", "vitam-verapdf-griffin", "vitam-ffmpeg-griffin"] vitam_griffins: [] # CONSUL consul: network: "ip_admin" # Which network to use for consul communications ? ip_admin or ip_service ? consul_remote_sites: # wan contains the wan addresses of the consul server instances of the external vitam sites # Exemple, if our local dc is dc1, we will need to set dc2 & dc3 wan conf: # - dc2: # wan: ["10.10.10.10","1.1.1.1"] # - dc3: # wan: ["10.10.10.11","1.1.1.1"] # LOGGING # vitam_defaults: # access_retention_days: 30 # Number of days for file retention # access_total_size_cap: "10GB" # total acceptable size # logback_max_file_size: "10MB" # logback_total_size_cap: # file: # history_days: 30 # totalsize: "5GB" # security: # history_days: 30 # totalsize: "5GB" # ELASTICSEARCH # 'number_of_shards': number of shards per index, every ES shard is stored as a lucene index # 'number_of_replicas': number of additional copies of primary shards # Total number of shards: number_of_shards * (1 primary + M number_of_replicas) # CAUTION: The total number of shards should be lower than or equal to the number of elasticsearch-data instances in the cluster # More details in groups_vars/all/advanced/tenants_vars.yml file vitam_elasticsearch_tenant_indexation: default_config: # Default settings for masterdata collections (1 index per collection) masterdata: number_of_shards: 1 number_of_replicas: 2 # Default settings for unit indexes (1 index per tenant) unit: number_of_shards: 1 number_of_replicas: 2 # Default settings for object group indexes (1 index per tenant) objectgroup: number_of_shards: 1 number_of_replicas: 2 # Default settings for logbook operation indexes (1 index per tenant) logbookoperation: number_of_shards: 1 number_of_replicas: 2 # Default settings for collect_unit indexes collect_unit: number_of_shards: 1 number_of_replicas: 2 # Default settings for collect_objectgroup indexes collect_objectgroup: number_of_shards: 1 number_of_replicas: 2 collect_grouped_tenants: - name: 'all' # Group all tenants for collect's indexes (collect_unit & collect_objectgroup) tenants: "{{ vitam_tenant_ids | join(',') }}" elasticsearch: log: index_templates: default: shards: 1 replica: 1 data: index_templates: default: shards: 1 replica: 2 curator: log: metrics: close: 7 delete: 30 logstash: close: 7 delete: 30 # PACKAGES disable_internet_repositories_install: true # Disable EPEL or Debian backports repositories install
Note
Installation multi-sites. Déclarer dans consul_remote_sites
les datacenters Consul des autres site ; se référer à l’exemple fourni pour renseigner les informations.
deployment/environments/group_vars/all/advanced/vitam_vars.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542
--- ### global ### # Vitam deployment mode. Allowed values are : # - "prod" (default): Enforces additional security checks (disallow development/debug tools, reverse proxy does NOT forward traffic to vitam service ports...) # - "dev" (NOT for sensitive / production environments): Allow development/debug tools, reverse proxy forwards traffic to vitam service ports. deployment_mode: prod # TODO MAYBE : permettre la surcharge avec une syntax du genre vitamopts.folder_root | default(vitam_default.folder_root) dans les templates ? droid_filename: "DROID_SignatureFile_V109.xml" droid_container_filename: "container-signature-20221102.xml" # The global defaults parameters for vitam & vitam components vitam_defaults: folder: root_path: /vitam folder_permission: "0750" conf_permission: "0440" folder_upload_permission: "0770" script_permission: "0750" users: vitam: "vitam" vitamdb: "vitamdb" group: "vitam" services: # Default log level for vitam components: logback values (TRACE, DEBUG, INFO, WARN, ERROR, OFF) log_level: WARN start_timeout: 300 stop_timeout: 3600 port_service_timeout: 86400 api_call_timeout: 120 api_long_call_timeout: 300 status_retries_number: 60 status_retries_delay: 5 at_boot: false ### Trust X-SSL-CLIENT-CERT header for external api auth ? true | false (default) # Should only be enabled when accessing to vitam externals through a Reverse Proxy that does "SSL offloading" # NGINX configuration : proxy_set_header X-SSL-CLIENT-CERT $ssl_client_escaped_cert; # Apache httpd configuration : RequestHeader set X-SSL-CLIENT-CERT "%{SSL_CLIENT_CERT}s" # Important : When enabled, special care must be taken to ensure firewall rules are properly set to ensure only # reverse proxy can access vitam external applications through their respective port_service to avoid # malicious header injection. trust_client_certificate_header: false ### Force chunk mode : set true if chunk header should be checked vitam_force_chunk_mode: false # syslog_facility syslog_facility: local0 ################################################################################ ### Default Components parameters ### Uncomment them if you want to update the default value applied on all components ### Ontology cache settings (max entries in cache & retention timeout in seconds) # ontologyCacheMaxEntries: 100 # ontologyCacheTimeoutInSeconds: 300 ### Elasticsearch scroll timeout in milliseconds settings # elasticSearchScrollTimeoutInMilliseconds: 300000 ### The following values can be overwritten for each components in vitam: parameters. jvm_log: false performance_logger: false # consul_business_check: 10 # value in seconds # consul_admin_check: 10 # value in seconds ### Logs configuration for reconstruction services (INFO or DEBUG for active logs). ### Logs will be present only on secondary site. ### Available for the following components: logbook, metadata & functional-administration. reconstruction: log_level: INFO # Used in ingest, unitary update, mass-update classificationList: [ "Non protégé","Secret Défense", "Confidentiel Défense" ] # Used in ingest, unitary update, mass-update classificationLevelOptional: true # Packages install retries packages_install_retries_number: 1 packages_install_retries_delay: 10 # Request time check settings. Do NOT update except if required by Vitam support # Max acceptable time desynchronization between machines (in seconds). acceptableRequestTime: 10 # Critical time desynchronization between machines (in seconds). criticalRequestTime: 60 # Request time alert throttling Delay (in seconds) requestTimeAlertThrottlingDelay: 60 # Reconstruction config restoreBulkSize: 10000 vitam_timers: # /!\ IMPORTANT : # Please ensure timer execution is spread so that not all timers run concurrently (eg. *:05:00, *:35:00, *:50:00..), # Special care for heavy-load timers that run on same machines or use same resources (eg. vitam-traceability-*). # # Quartz cron nomenclature # minutely → 0 * * * * ? # hourly → 0 0 * * * ? # daily → 0 0 0 * * ? # monthly → 0 0 0 1 * ? # weekly → 0 0 0 ? * MON * # yearly → 0 0 0 1 1 ? # quarterly → 0 0 0 1 1/3 ? # semiannually → 0 0 0 1 1/6 ? logbook: # all have to run on only one machine # Sécurisation des journaux des opérations frequency_traceability_operations: "* 05 0/1 * * ?" # every hour # Sécurisation des journaux du cycle de vie des groupes d'objets frequency_traceability_lfc_objectgroup: "* 15 0/1 * * ?" # every hour # Sécurisation des journaux du cycle de vie des unités archivistiques frequency_traceability_lfc_unit: "* 35 0/1 * * ?" # every hour # Audit de traçabilité frequency_traceability_audit: "0 55 00 * * ?" # Reconstruction (uniquement sur site secondaire) frequency_logbook_reconstruction: "0 0/5 * * * ?" storage: # Sécurisation du journal des écritures frequency_traceability_log: "0 40 0/4 * * ?" # every 4 hours # Sauvegarde des journaux d'accès vitam_storage_accesslog_backup: "0 10 0/4 * * ?" # every 4 hours # Sauvegarde des journaux des écritures vitam_storage_log_backup: "0 15 0/4 * * ?" # every 4 hours functional_administration: frequency_create_accession_register_symbolic: "0 50 0 * * ?" frequency_accession_register_reconstruction: "0 0/5 * * * ?" frequency_rule_management_audit: "0 40 * * * ?" frequency_reconstruction: "0 0/5 * * * ?" frequency_integrity_audit: "0 0 0 1 JAN ? 2020" frequency_existence_audit: "0 0 0 1 JAN ? 2020" metadata: frequency_store_graph: "0 10/30 * * * ?" frequency_reconstruction: "0 0/5 * * * ?" frequency_computed_inherited_rules: "0 30 2 * * ?" frequency_purge_dip: "0 0 * * * ?" frequency_purge_transfers_sip: "0 25 2 * * ?" frequency_audit_mongodb_es: "0 0 0 1 JAN ? 2020" offer: # Compaction offer logs frequency_offerlog_compaction: "0 40 * * * ?" scheduler: job_parameters: integrity_audit: operations_delay_in_minutes: 1440 existence_audit: operations_delay_in_minutes: 1440 ### consul ### # WARNING: consul_domain should be a supported domain name for your organization # You will have to generate server certificates with the same domain name and the service subdomain name # Example: consul_domain=vitam means you will have to generate some certificates with .service.vitam domain # access-external.service.vitam, ingest-external.service.vitam, ... consul_domain: consul consul_folder_conf: "{{ vitam_defaults.folder.root_path }}/conf/consul" # Workspace should be useless but storage have a dependency to it... # elastic-kibana-interceptor is present as kibana is present, if kibana-data & interceptor are not needed in the secondary site, just do not add them in the hosts file vitam_secondary_site_components: [ "scheduler", "logbook" , "metadata" , "functional-administration" , "storage" , "storageofferdefault" , "offer" , "elasticsearch-log" , "elasticsearch-data" , "logstash" , "kibana" , "mongoc" , "mongod" , "mongos", "elastic-kibana-interceptor" , "consul" ] # containers list containers_list: [ 'units', 'objects', 'objectgroups', 'logbooks', 'reports', 'manifests', 'profiles', 'storagelog', 'storageaccesslog', 'storagetraceability', 'rules', 'dip', 'agencies', 'backup', 'backupoperations', 'unitgraph', 'objectgroupgraph', 'distributionreports', 'accessionregistersdetail', 'accessionregisterssymbolic', 'tmp', 'archivaltransferreply' ] ### Composants Vitam ### vitam: ### All available parameters for each components are described in the vitam_defaults variable ### Example # component: # at_boot: false # logback_rolling_policy: true ## Force the log level for this component. Available logback values are (TRACE, DEBUG, INFO, WARN, ERROR, OFF) ## If this var is not set, the default one will be used (vitam_defaults.services.log_level) # log_level: "DEBUG" accessexternal: # Component name: do not modify vitam_component: access-external # DNS record for the service: # Modify if ihm-demo is not using consul (typical production deployment) host: "access-external.service.{{ consul_domain }}" port_admin: 28102 port_service: 8444 baseuri: "access-external" https_enabled: true # Use platform secret for this component ? : do not modify secret_platform: "false" authorizeTrackTotalHits: false # if false, limit results to 10K. if true, authorize results overs 10K (can overload elasticsearch-data) accessinternal: vitam_component: access-internal host: "access-internal.service.{{ consul_domain }}" port_service: 8101 port_admin: 28101 baseuri: "access-internal" https_enabled: false secret_platform: "true" functional_administration: vitam_component: functional-administration host: "functional-administration.service.{{ consul_domain }}" port_service: 8004 port_admin: 18004 baseuri: "adminmanagement" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" # Number of AccessionRegisterSymbolic creation threads that can be run in parallel. accessionRegisterSymbolicThreadPoolSize: 16 # Number of rule audit threads that can be run in parallel. ruleAuditThreadPoolSize: 16 # Reconstruction metrics cache in minutes (secondary site) reconstructionMetricsCacheDurationInMinutes: 15 scheduler: vitam_component: scheduler host: "scheduler.service.{{ consul_domain }}" port_service: 8799 port_admin: 28799 baseuri: "scheduler" https_enabled: false secret_platform: "true" schedulerThreadSize: 8 elastickibanainterceptor: vitam_component: elastic-kibana-interceptor host: "elastic-kibana-interceptor.service.{{ consul_domain }}" port_service: 8014 port_admin: 18014 baseuri: "" https_enabled: false secret_platform: "false" cluster_name: "{{ elasticsearch.data.cluster_name }}" batchreport: vitam_component: batch-report host: "batch-report.service.{{ consul_domain }}" port_service: 8015 port_admin: 18015 baseuri: "batchreport" https_enabled: false secret_platform: "false" ingestexternal: vitam_component: ingest-external # DNS record for the service: # Modify if ihm-demo is not using consul (typical production deployment) host: "ingest-external.service.{{ consul_domain }}" port_admin: 28001 port_service: 8443 baseuri: "ingest-external" https_enabled: true secret_platform: "false" antivirus: "clamav" # or avast #scantimeout: 1200000 # value in milliseconds; increase this value if huge files need to be analyzed in more than 20 min (default value) # Directory where files should be placed for local ingest upload_dir: "/vitam/data/ingest-external/upload" # Directory where successful ingested files will be moved to success_dir: "/vitam/data/ingest-external/upload/success" # Directory where failed ingested files will be moved to fail_dir: "/vitam/data/ingest-external/upload/failure" # Action done to file after local ingest (see below for further information) upload_final_action: "MOVE" # upload_final_action can be set to three different values (lower or upper case does not matter) # MOVE : After upload, the local file will be moved to either success_dir or fail_dir depending on the status of the ingest towards ingest-internal # DELETE : After upload, the local file will be deleted if the upload succeeded # NONE : After upload, nothing will be done to the local file (default option set if the value entered for upload_final_action does not exist) ingestinternal: vitam_component: ingest-internal host: "ingest-internal.service.{{ consul_domain }}" port_service: 8100 port_admin: 28100 baseuri: "ingest" https_enabled: false secret_platform: "true" ihm_demo: vitam_component: ihm-demo host: "ihm-demo.service.{{ consul_domain }}" port_service: 8446 port_admin: 28002 baseurl: "/ihm-demo" static_content: "{{ vitam_defaults.folder.root_path }}/app/ihm-demo/v2" baseuri: "ihm-demo" https_enabled: true secret_platform: "false" # User session timeout in milliseconds (for shiro) session_timeout: 1800000 secure_cookie: true # Specify here the realms you want to use for authentication in ihm-demo # You can set multiple realms, one per line # With multiple realms, the user will be able to choose between the allowed realms # Example: authentication_realms: # - x509Realm # - ldapRealm # Authorized values: # x509Realm: certificate # iniRealm: ini file # ldapRealm: ldap authentication_realms: # - x509Realm - iniRealm # - ldapRealm allowedMediaTypes: - type: "application" subtype: "pdf" - type: "text" subtype: "plain" - type: "image" subtype: "jpeg" - type: "image" subtype: "tiff" logbook: vitam_component: logbook host: "logbook.service.{{ consul_domain }}" port_service: 9002 port_admin: 29002 baseuri: "logbook" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" # Temporization delay (in seconds) for recent logbook operation events. # Set it to a reasonable delay to cover max clock difference across servers + VM/GC pauses operationTraceabilityTemporizationDelay: 300 # Max delay between 2 logbook operation traceability operations. # A new logbook operation traceability is generated after this delay, even if tenant has no # new logbook operations to secure # Unit can be in DAYS, HOURS, MINUTES, SECONDS # Hint: Set it to 690 MINUTES (11 hours and 30 minutes) to force new traceability after +/- 12 hours (supposing # logbook operation traceability timer run every hour +/- some clock delays) operationTraceabilityMaxRenewalDelay: 690 operationTraceabilityMaxRenewalDelayUnit: MINUTES # Number of logbook operations that can be run in parallel. operationTraceabilityThreadPoolSize: 16 # Temporization delay (in seconds) for recent logbook lifecycle events. # Set it to a reasonable delay to cover max clock difference across servers + VM/GC pauses lifecycleTraceabilityTemporizationDelay: 300 # Max delay between 2 lifecycle traceability operations. # A new unit/objectgroup lifecycle traceability is generated after this delay, even if tenant has no # new unit/objectgroups to secure # Unit can be in DAYS, HOURS, MINUTES, SECONDS # Hint: Set it to 690 MINUTES (11 hours and 30 minutes) to force new traceability after +/- 12 hours (supposing # LFC traceability timers run every hour +/- some clock delays) lifecycleTraceabilityMaxRenewalDelay: 690 lifecycleTraceabilityMaxRenewalDelayUnit: MINUTES # Max entries selected per (Unit or Object Group) LFC traceability operation lifecycleTraceabilityMaxEntries: 100000 # Reconstruction metrics cache in minutes (secondary site) reconstructionMetricsCacheDurationInMinutes: 15 metadata: vitam_component: metadata host: "metadata.service.{{ consul_domain }}" port_service: 8200 port_admin: 28200 baseuri: "metadata" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" # Archive Unit Profile cache settings (max entries in cache & retention timeout in seconds) archiveUnitProfileCacheMaxEntries: 100 archiveUnitProfileCacheTimeoutInSeconds: 300 # Schema validator cache settings (max entries in cache & retention timeout in seconds) schemaValidatorCacheMaxEntries: 100 schemaValidatorCacheTimeoutInSeconds: 300 # DIP cleanup delay (in minutes) dipTimeToLiveInMinutes: 10080 # 7 days criticalDipTimeToLiveInMinutes: 1440 # 1 day transfersSIPTimeToLiveInMinutes: 10080 # 7 days unitsStreamThreshold: 1000000 # 1 million unitsStreamExecutionLimit: 3 # 3 times objectsStreamThreshold: 1000000 # 1 million objectsStreamExecutionLimit: 3 # 3 times workspaceFreespaceThreshold: 25 # when below use critical time to live when above use normal time to live elasticsearch_mapping_dir: "{{ vitam_defaults.folder.root_path }}/conf/metadata/mapping" # Directory of elasticsearch metadata mapping #### Audit data consistency MongoDB-ES #### isDataConsistencyAuditRunnable: false dataConsistencyAuditOplogMaxSize: 100 # Reconstruction metrics cache in minutes (secondary site) reconstructionMetricsCacheDurationInMinutes: 15 context_path: "/metadata" processing: vitam_component: processing host: "processing.service.{{ consul_domain }}" port_service: 8203 port_admin: 28203 baseuri: "processing" https_enabled: false secret_platform: "true" maxDistributionInMemoryBufferSize: 100000 maxDistributionOnDiskBufferSize: 100000000 security_internal: vitam_component: security-internal host: "security-internal.service.{{ consul_domain }}" port_service: 8005 port_admin: 28005 baseuri: "security-internal" https_enabled: false secret_platform: "true" storageengine: vitam_component: storage host: "storage.service.{{ consul_domain }}" port_service: 9102 port_admin: 29102 baseuri: "storage" https_enabled: false secret_platform: "true" storageTraceabilityOverlapDelay: 300 restoreBulkSize: 1000 # Storage write/access log backup max thread pool size storageLogBackupThreadPoolSize: 16 # Storage write log traceability thread pool size storageLogTraceabilityThreadPoolSize: 16 # Offer synchronization batch size & thread pool size offerSynchronizationBulkSize: 1000 offerSyncThreadPoolSize: 32 # Retries attempts on failures offerSyncNumberOfRetries: 3 # Retry wait delay on failures (in seconds) offerSyncFirstAttemptWaitingTime: 15 offerSyncWaitingTime: 30 # Offer synchronization wait delay (in seconds) for async offers (synchronization from a tape-storage offer) offerSyncAccessRequestCheckWaitingTime: 10 logback_total_size_cap: offersync: history_days: 30 totalsize: "5GB" offerdiff: history_days: 30 totalsize: "5GB" # unit time per kB (in ms) used while calculating the timeout of an http request between storage and offer. timeoutMsPerKB: 100 # minimum timeout (in ms) for writing objects to offers minWriteTimeoutMs: 60000 # minimum timeout per object (in ms) for bulk writing objects to offers minBulkWriteTimeoutMsPerObject: 10000 storageofferdefault: vitam_component: "offer" port_service: 9900 port_admin: 29900 baseuri: "offer" https_enabled: false secret_platform: "true" logback_total_size_cap: offer_tape: history_days: 30 totalsize: "5GB" offer_tape_backup: history_days: 30 totalsize: "5GB" worker: vitam_component: worker host: "worker.service.{{ consul_domain }}" port_service: 9104 port_admin: 29104 baseuri: "worker" https_enabled: false secret_platform: "true" api_output_index_tenants: [ 0,1,2,3,4,5,6,7,8,9 ] rules_index_tenants: [ 0,1,2,3,4,5,6,7,8,9 ] # Archive Unit Profile cache settings (max entries in cache & retention timeout in seconds) archiveUnitProfileCacheMaxEntries: 100 archiveUnitProfileCacheTimeoutInSeconds: 300 # Schema validator cache settings (max entries in cache & retention timeout in seconds) schemaValidatorCacheMaxEntries: 100 schemaValidatorCacheTimeoutInSeconds: 300 # Batch size for bulk atomic update queriesThreshold: 100000 # Bulk atomic update batch size bulkAtomicUpdateBatchSize: 100 # Max threads that can be run in concurrently is thread pool for bulk atomic update bulkAtomicUpdateThreadPoolSize: 8 # Number of jobs that can be queued in memory before blocking for bulk atomic update bulkAtomicUpdateThreadPoolQueueSize: 16 # Dip/transfer threshold file size binarySizePlatformThreshold: 1 binarySizePlatformThresholdSizeUnit: "GIGABYTE" workspace: vitam_component: workspace host: "workspace.service.{{ consul_domain }}" port_service: 8201 port_admin: 28201 baseuri: "workspace" https_enabled: false secret_platform: "true" context_path: "/workspace" collect_internal: vitam_component: collect-internal host: "collect-internal.service.{{ consul_domain }}" port_service: 8038 port_admin: 28038 baseuri: "collect-internal" https_enabled: false secret_platform: "true" transactionStatusThreadPoolSize: 4 statusTransactionThreadFrequency: 5 collect_external: vitam_component: collect-external host: "collect-external.service.{{ consul_domain }}" port_service: 8030 port_admin: 28030 baseuri: "collect-external" https_enabled: true secret_platform: "false" authorizeTrackTotalHits: false # if false, limit results to 10K. if true, authorize results overs 10K (can overload elasticsearch-data) metadata_collect: vitam_component: metadata-collect host: "metadata-collect.service.{{ consul_domain }}" port_service: 8290 port_admin: 28290 baseuri: "metadata-collect" https_enabled: false secret_platform: "true" cluster_name: "{{ elasticsearch.data.cluster_name }}" # Archive Unit Profile cache settings (max entries in cache & retention timeout in seconds) archiveUnitProfileCacheMaxEntries: 100 archiveUnitProfileCacheTimeoutInSeconds: 300 # Schema validator cache settings (max entries in cache & retention timeout in seconds) schemaValidatorCacheMaxEntries: 100 schemaValidatorCacheTimeoutInSeconds: 300 # DIP cleanup delay (in minutes) dipTimeToLiveInMinutes: 10080 # 7 days criticalDipTimeToLiveInMinutes: 1440 # 1 day transfersSIPTimeToLiveInMinutes: 10080 # 7 days workspaceFreespaceThreshold: 25 # when below use critical time to live when above use normal time to live elasticsearch_mapping_dir: "{{ vitam_defaults.folder.root_path }}/conf/metadata-collect/mapping" # Directory of elasticsearch metadata mapping #### Audit data consistency MongoDB-ES #### isDataConsistencyAuditRunnable: false dataConsistencyAuditOplogMaxSize: 100 context_path: "/metadata-collect" workspace_collect: vitam_component: workspace-collect host: "workspace-collect.service.{{ consul_domain }}" port_service: 8291 port_admin: 28291 baseuri: "workspace-collect" https_enabled: false secret_platform: "true" context_path: "/workspace-collect" # http://www.programmevitam.fr/ressources/DocCourante/html/installation/installation/21-addons.html#durees-minimales-permettant-de-controler-les-valeurs-saisies vitam_tenant_rule_duration: # - name: 2 # applied tenant # rules: # - AppraisalRule : "1 year" # rule name : rule value # If you want to deploy vitam in a single VM, add the vm name in this array single_vm_hostnames: [ 'localhost' ]
Note
Cas du composant ingest-external. Les directives upload_dir
, success_dir
, fail_dir
et upload_final_action
permettent de prendre en charge (ingest) des fichiers déposés dans upload_dir
et appliquer une règle upload_final_action
à l’issue du traitement (NONE, DELETE ou MOVE dans success_dir
ou fail_dir
selon le cas). Se référer au DEX pour de plus amples détails. Se référer au manuel de développement pour plus de détails sur l’appel à ce cas.
Avertissement
Selon les informations apportées par le métier, redéfinir les valeurs associées dans les directives classificationList
et classificationLevelOptional
. Cela permet de définir quels niveaux de protection du secret de la défense nationale, supporte l’instance. Attention : une instance de niveau supérieur doit toujours supporter les niveaux inférieurs.
deployment/environments/group_vars/all/advanced/cots_vars.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
--- consul: retry_interval: 10 # in seconds check_interval: 10 # in seconds check_timeout: 5 # in seconds log_level: WARN # Available log_level are: TRACE, DEBUG, INFO, WARN or ERR # Please uncomment and fill values if you want to connect VITAM to external SIEM # external_siem: # host: # port: elasticsearch: log: host: "elasticsearch-log.service.{{ consul_domain }}" port_http: "9201" groupe: "log" baseuri: "elasticsearch-log" cluster_name: "elasticsearch-log" consul_check_http: 10 # in seconds consul_check_tcp: 10 # in seconds action_log_level: error https_enabled: false indices_fielddata_cache_size: '30%' # related to https://www.elastic.co/guide/en/elasticsearch/reference/7.6/modules-fielddata.html indices_breaker_fielddata_limit: '40%' # related to https://www.elastic.co/guide/en/elasticsearch/reference/7.6/circuit-breaker.html#fielddata-circuit-breaker dynamic_timeout: 30s # default index template index_templates: packetbeat: shards: 5 log_appenders: root: log_level: "info" rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" max_files: "50" deprecation_rolling: max_log_file_size: "100MB" max_total_log_size: "1GB" max_files: "10" log_level: "warn" index_search_slowlog_rolling: max_log_file_size: "100MB" max_total_log_size: "1GB" max_files: "10" log_level: "warn" index_indexing_slowlog_rolling: max_log_file_size: "100MB" max_total_log_size: "1GB" max_files: "10" log_level: "warn" # By default, is commented. Should be uncommented if ansible computes badly vCPUs number ; values are associated vCPUs numbers ; please adapt to your configuration # thread_pool: # index: # size: 2 # get: # size: 2 # search: # size: 2 # write: # size: 2 # warmer: # max: 2 data: host: "elasticsearch-data.service.{{ consul_domain }}" # default is 0.1 (10%) and should be quite enough in most cases #index_buffer_size_ratio: "0.15" port_http: "9200" groupe: "data" baseuri: "elasticsearch-data" cluster_name: "elasticsearch-data" consul_check_http: 10 # in seconds consul_check_tcp: 10 # in seconds action_log_level: debug https_enabled: false indices_fielddata_cache_size: '30%' # related to https://www.elastic.co/guide/en/elasticsearch/reference/6.5/modules-fielddata.html indices_breaker_fielddata_limit: '40%' # related to https://www.elastic.co/guide/en/elasticsearch/reference/6.5/circuit-breaker.html#fielddata-circuit-breaker dynamic_timeout: 30s # default index template index_templates: log_appenders: root: log_level: "info" rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" max_files: "50" deprecation_rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" max_files: "50" log_level: "warn" index_search_slowlog_rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" max_files: "50" log_level: "warn" index_indexing_slowlog_rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" max_files: "50" log_level: "warn" # By default, is commented. Should be uncommented if ansible computes badly vCPUs number ; values are associated vCPUs numbers ; please adapt to your configuration # thread_pool: # index: # size: 2 # get: # size: 2 # search: # size: 2 # write: # size: 2 # warmer: # max: 2 mongodb: mongos_port: 27017 mongoc_port: 27018 mongod_port: 27019 mongo_authentication: "true" host: "mongos.service.{{ consul_domain }}" check_consul: 10 # in seconds drop_info_log: false # Drop mongo (I)nformational log, for Verbosity Level of 0 # logs configuration logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' logstash: host: "logstash.service.{{ consul_domain }}" user: logstash port: 10514 rest_port: 20514 check_consul: 10 # in seconds # logstash xms & xmx in Megabytes # jvm_xms: 2048 # jvm_xmx: 2048 # workers_number: 4 log_appenders: rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" json_rolling: max_log_file_size: "100MB" max_total_log_size: "5GB" # Prometheus params prometheus: metrics_path: /admin/v1/metrics check_consul: 10 # in seconds prometheus_config_file_target_directory: # Set path where "prometheus.yml" file will be generated. Example: /tmp/ server: port: 9090 tsdb_retention_time: "7d" tsdb_retention_size: "5GB" node_exporter: enabled: true port: 9101 metrics_path: /metrics log_level: "warn" logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' consul_exporter: enabled: true port: 9107 metrics_path: /metrics elasticsearch_exporter: enabled: true port: 9114 metrics_path: /metrics log_level: "warn" logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' alertmanager: api_port: 9093 cluster_port: 9094 #receivers: # https://grafana.com/blog/2020/02/25/step-by-step-guide-to-setting-up-prometheus-alertmanager-with-slack-pagerduty-and-gmail/ #- name: "slack_alert" # slack_configs: # - api_url: "https://hooks.slack.com/services/xxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # channel: '#your_alert_channel' # send_resolved: true grafana: check_consul: 10 # in seconds http_port: 3000 proxy: false grafana_datasources: - name: "Prometheus" type: "prometheus" access: "proxy" url: "http://prometheus-server.service.{{ consul_domain }}:{{ prometheus.server.port | default(9090) }}/prometheus" basicAuth: false editable: true - name: "Prometheus AlertManager" type: "camptocamp-prometheus-alertmanager-datasource" access: "proxy" url: "http://prometheus-alertmanager.service.{{ consul_domain }}:{{ prometheus.alertmanager.api_port | default(9093) }}" basicAuth: false editable: true jsonData: keepCookies: [] severity_critical: "4" severity_high: "3" severity_warning: "2" severity_info: "1" grafana_dashboards: - name: 'vitam-dashboard' orgId: 1 folder: '' folderUid: '' type: file disableDeletion: false updateIntervalSeconds: 10 allowUiUpdates: true options: path: "/etc/grafana/provisioning/dashboards" # Curator units: days curator: log: metricbeat: close: 5 delete: 10 packetbeat: close: 5 delete: 10 kibana: header_value: "reporting" import_delay: 10 import_retries: 10 # logs configuration logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' log: baseuri: "kibana_log" api_call_timeout: 120 groupe: "log" port: 5601 default_index_pattern: "logstash-vitam*" check_consul: 10 # in seconds # default shards & replica shards: 1 replica: 1 # pour index logstash-* metrics: shards: 1 replica: 1 # pour index metricbeat-* metricbeat: shards: 3 # must be a factor of 30 replica: 1 data: baseuri: "kibana_data" # OMA : bugdette : api_call_timeout is used for retries ; should ceate a separate variable rather than this one api_call_timeout: 120 groupe: "data" port: 5601 default_index_pattern: "logbookoperation_*" check_consul: 10 # in seconds # index template for .kibana shards: 1 replica: 1 syslog: # value can be syslog-ng or rsyslog name: "rsyslog" cerebro: baseuri: "cerebro" port: 9000 check_consul: 10 # in seconds # logs configuration logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' siegfried: port: 19000 consul_check: 10 # in seconds clamav: port: 3310 # logs configuration logrotate: enabled # or disabled history_days: 30 # How many days to store logs if logrotate is set to 'enabled' freshclam: # frequency freshclam for database update per day (from 0 to 24 - 24 meaning hourly check) db_update_periodicity: 1 private_mirror_address: use_proxy: "no" ## Avast Business Antivirus for Linux ## if undefined, the following default values are applied. # avast: # # logs configuration # logrotate: enabled # or disabled # history_days: 30 # How many days to store logs if logrotate is set to 'enabled' # manage_repository: true # repository: # state: present # # For CentOS # baseurl: http://rpm.avast.com/lin/repo/dists/rhel/release # gpgcheck: no # proxy: _none_ # # For Debian # baseurl: 'deb http://deb.avast.com/lin/repo debian-buster release' # vps_repository: http://linux-av.u.avcdn.net/linux-av/avast/x86_64 # ## List of sha256 hash of excluded files from antivirus. Useful for test environments. # whitelist: # - xxxxxx # - yyyyyy mongo_express: baseuri: "mongo-express" ldap_authentification: ldap_protocol: "ldap" ldap_server: "{% if groups['ldap']|length > 0 %}{{ groups['ldap']|first }}{% endif %}" ldap_port: "389" ldap_base: "dc=programmevitam,dc=fr" ldap_login: "cn=Manager,dc=programmevitam,dc=fr" uid_field: "uid" ldap_userDn_Template: "uid={0},ou=people,dc=programmevitam,dc=fr" ldap_group_request: "(&(objectClass=groupOfNames)(member={0}))" ldap_admin_group: "cn=admin,ou=groups,dc=programmevitam, dc=fr" ldap_user_group: "cn=user,ou=groups,dc=programmevitam, dc=fr" ldap_guest_group: "cn=guest,ou=groups,dc=programmevitam, dc=fr" # Backup tool on storage-offer restic: snapshot_retention: 30 # number of snapshots to keep # default run backup at 23:00 everydays cron: minute: '00' hour: '23' day: '*' month: '*' weekday: '*' # [hosts_storage_offer_default] must be able to connect to the listed databases below to properly backup. backup: # mongo-offer - name: "{{ offer_conf }}" type: mongodb host: "{{ offer_conf }}-mongos.service.consul:{{ mongodb.mongos_port }}" user: "{{ mongodb[offer_conf].admin.user }}" password: "{{ mongodb[offer_conf].admin.password }}" # # mongo-data (only if mono-sharded cluster) # - name: mongo-data # type: mongodb # host: "mongo-data-mongos.service.consul:{{ mongodb.mongos_port }}" # user: "{{ mongodb['mongo-data'].admin.user }}" # password: "{{ mongodb['mongo-data'].admin.password }}" # # mongo-vitamui (only if vitamui is deployed) # - name: mongo-vitamui # type: mongodb # host: mongo-vitamui-mongod.service.consul:{{ mongodb.mongod_port }} # # Add the following params on environments/group_vars/all/main/vault-vitam.yml # # They can be found under vitamui's deployment sources on environments/group_vars/all/vault-mongodb.yml # user: "{{ mongodb['mongo-vitamui'].admin.user }}" # password: "{{ mongodb['mongo-vitamui'].admin.password }}"
Note
Concernant Curator, en environnement de production, il est recommandé de procéder à la fermeture des index au bout d’une semaine pour les index de type « logstash » (3 jours pour les index « metrics »), qui sont le reflet des traces applicatives des composants de la solution logicielle VITAM. Il est alors recommandé de lancer le delete de ces index au bout de la durée minimale de rétention : 1 an (il n’y a pas de durée de rétention minimale légale sur les index « metrics », qui ont plus une vocation technique et, éventuellement, d’investigations).
deployment/environments/group_vars/all/advanced/jvm_opts.yml
, comme suit :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
--- # Default values if unset # jvm_opts.memory: "-Xms512m -Xmx512m" # gc: "-Xlog:gc*,gc+age=trace,safepoint:file={{ vitam_folder_log }}/gc.log:utctime,pid,tags:filecount=32,filesize=64m" # java: "" vitam: accessinternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" accessexternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" elastickibanainterceptor: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" batchreport: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ingestinternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ingestexternal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" metadata: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ihm_demo: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" ihm_recette: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" logbook: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" workspace: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" processing: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" worker: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" storageengine: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" storageofferdefault: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" functional_administration: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" scheduler: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" security_internal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" library: jvm_opts: memory: "-Xms32m -Xmx128m" # gc: "" # java: "" collect_internal: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" collect_external: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" metadata_collect: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: "" workspace_collect: jvm_opts: # memory: "-Xms512m -Xmx512m" # gc: "" # java: ""
Note
Cette configuration est appliquée à la solution logicielle VITAM ; il est possible de créer un tuning par « groupe » défini dans ansible.
4.2.5.14. Paramétrage de l’Offre Froide ( librairies de cartouches )¶
Voir aussi
Les principes de fonctionnement de l’offre froide sont décrits dans la documentation externe dédiée (« Archivage sur Offre Froide »).
La librairie et les lecteurs doivent déjà être configurés sur la machine devant supporter une instance de ce composant (avec login automatique en cas de reboot).
La commande lsscsi -g
peut permettre de vérifier si des périphériques sont détectés.
Note
Une offre froide est mono-instantiable uniquement. Elle ne peut être déployée en haut-disponibilité.
Le paramétrage de l’offre froide se fait via la configuration du fichier deployment/environments/group_vars/all/offer_opts.yml
. L’ensemble des clés disponibles est listé dans le fichier deployment/environments/group_vars/all/offer_opts.yml.example
L’offre froide doit être configurée avec le flag AsyncRead
défini à True dans la stratégie par défaut de Vitam via vitam_strategy
ou dans une stratégie additionnelle other_strategies
.
Exemple:
vitam_strategy:
- name: offer-tape-1
referent: false
asyncRead: true
- name: offer-fs-2
referent: true
asyncRead: false
Une offre froide doit être définie dans la rubrique vitam_offers
avec un provider de type tape-library
Exemple:
vitam_offers:
offer-tape-1:
provider: tape-library
tapeLibraryConfiguration:
...
La section tapeLibraryConfiguration
décrit le paramétrage général de l’offre froide.
- maxTarEntrySize Taille maximale (en octets) au-delà de la laquelle les fichiers entrants seront découpés en segments. Typiquement 1 Go, maximum 8 Go.
- maxTarFileSize Taille maximale (en octets) des tars à constituer. Typiquement 10 Go.
- forceOverrideNonEmptyCartridges Permet de passer outre le contrôle vérifiant que les bandes nouvellement introduites sont vides. Par défaut à false. Ne doit être défini à true que sur un environnement de recette où l’écrasement d’une bande de test est sans risque.
- cachedTarMaxStorageSpaceInMB Permet de définir la taille maximale du cache disque (en Mo) (Ex. 10 To pour un env de production)
- cachedTarEvictionStorageSpaceThresholdInMB Permet de définir la taille critique du cache disque (en Mo). Une fois ce seuil atteint, les archives non utilisées sont purgées (selon la date de dernier accès). Doit être plus petit que la taille maximale cachedTarMaxStorageSpaceInMB. (Ex. 8 To pour un env de production)
- cachedTarSafeStorageSpaceThresholdInMB Seuil « confortable » d’utilisation du cache (en Mo). Le processus d’éviction des archives du cache s’arrête lorsque ce seuil est atteint. Doit être plus petit que la taille critique cachedTarEvictionStorageSpaceThresholdInMB. (Ex. 6 To pour un env de production)
- maxAccessRequestSize Définit un seuil technique du nombre d’objets que peut cibler une demande d’accès. Par défaut de 10000. À ne pas modifier.
- readyAccessRequestExpirationDelay Valeur du délais d’expiration des demandes d’accès. Une fois une demande d’accès à des objets est prête, l’accès immédiat aux objets est garantie durant cette période.
- readyAccessRequestExpirationUnit Unité du délais d’expiration des demandes d’accès (une valeur parmi « SECONDS » / « MINUTES » / « HOURS » / « DAYS » / « MONTHS »).
- readyAccessRequestPurgeDelay Valeur du délais de purge complète des demandes d’accès.
- readyAccessRequestPurgeUnit Unité du délais de purge complète des demandes d’accès (une valeur parmi « SECONDS » / « MINUTES » / « HOURS » / « DAYS » / « MONTHS »).
- accessRequestCleanupTaskIntervalDelay Valeur de la fréquence de nettoyage des demandes d’accès.
- accessRequestCleanupTaskIntervalUnit Unité de la fréquence de nettoyage des demandes d’accès (une valeur parmi « SECONDS » / « MINUTES » / « HOURS » / « DAYS » / « MONTHS »).
Note
maxTarEntrySize doit être strictement inférieur à maxTarFileSize
Note
cachedTarEvictionStorageSpaceThresholdInMB doit être strictement inférieur à cachedTarMaxStorageSpaceInMB
Note
cachedTarSafeStorageSpaceThresholdInMB doit être strictement inférieur à cachedTarEvictionStorageSpaceThresholdInMB
Note
Se référer à la documentation DAT pour les éléments de dimensionnement du cache.
Note
La durée de purge des demandes d’accès doit être strictement supérieure à leur durée d’expiration.
Note
Le monitoring de l’offre froide est for est fortement recommandé afin de s’assurer du bon fonctionnement de l’offre, et du dimensionnement du disque local. Un dashboard dédié à l’offre froide de Vitam est déployé avec les composants « extra » prometheus
et grafana
.
Exemple:
inputFileStorageFolder: "/vitam/data/offer/offer/inputFiles"
inputTarStorageFolder: "/vitam/data/offer/offer/inputTars"
tmpTarOutputStorageFolder: "/vitam/data/offer/offer/tmpTarOutput"
cachedTarStorageFolder: "/vitam/data/offer/offer/cachedTars"
maxTarEntrySize: 10000000
maxTarFileSize: 10000000000
ForceOverrideNonEmptyCartridge: false
cachedTarMaxStorageSpaceInMB: 1_000_000
cachedTarEvictionStorageSpaceThresholdInMB: 800_000
cachedTarSafeStorageSpaceThresholdInMB: 700_000
maxAccessRequestSize: 10_000
readyAccessRequestExpirationDelay: 30
readyAccessRequestExpirationUnit: DAYS
readyAccessRequestPurgeDelay: 60
readyAccessRequestPurgeUnit: DAYS
accessRequestCleanupTaskIntervalDelay: 15
accessRequestCleanupTaskIntervalUnit: MINUTES
topology:
...
tapeLibraries:
...
Le paragraphe topology
décrit la topologie de l’offre doit être renseigné. L’objectif de cet élément est de pouvoir définir une segmentation de l’usage des bandes pour répondre à un besoin fonctionnel. Il convient ainsi de définir des buckets, qu’on peut voir comme un ensemble logique de bandes, et de les associer à un ou plusieurs tenants.
- tenants tableau de 1 à n identifiants de tenants au format [1,…,n]
- tarBufferingTimeoutInMinutes Valeur en minutes durant laquelle une archive TAR peut rester ouverte (durée maximale d’accumulation des objets dans un TAR) avant que le TAR soit finalisé / planifié pour écriture sur bande.
Exemple:
topology:
buckets:
test:
tenants: [0]
tarBufferingTimeoutInMinutes: 60
admin:
tenants: [1]
tarBufferingTimeoutInMinutes: 60
prod:
tenants: [2,3,4,5,6,7,8,9]
tarBufferingTimeoutInMinutes: 60
Note
Tous les tenants doivent être affectés à un et un seul bucket.
Prudence
L’affectation d’un tenant à un bucket est définitive. i.e. Il est impossible de modifier le bucket auquel un tenant a été déjà affecté car les données ont déjà été écrites sur bandes. Il est possible cependant, lors de l’ajout d’un tout nouveau tenant à Vitam, d’affecter ce nouveau tenant à un bucket existant.
La section tapeLibraries
permet de définir le paramétrage des bibliothèques de bandes pilotées par l’offre froide.
Note
Une offre de stockage Vitam ne peut manipuler qu’une seule bibliothèque de bandes. Afin de piloter plusieurs bibliothèques de bandes, il convient d’utiliser des offres Vitam différentes.
Une bibliothèque de bandes est composée d’un robot (bras articulé), et d’un ensemble de lecteurs.
Note
Seul un robot doit être configuré pour piloter une librairie de bandes. La configuration de plusieurs robots pour une même librairie de bandes n’est actuellement PAS supportée.
La commande ls -l /dev/tape/by-id/
permet de lister les chemins des périphériques (lecteurs et bras articulés) à configurer.
Exemple:
$ ls -l /dev/tape/by-id/
total 0
lrwxrwxrwx 1 root root 9 Mar 7 11:07 scsi-1HP_EML_E-Series_B4B0AC0000 -> ../../sg1
lrwxrwxrwx 1 root root 9 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00001 -> ../../st0
lrwxrwxrwx 1 root root 10 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00001-nst -> ../../nst0
lrwxrwxrwx 1 root root 9 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00002 -> ../../st1
lrwxrwxrwx 1 root root 10 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00002-nst -> ../../nst1
lrwxrwxrwx 1 root root 9 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00003 -> ../../st2
lrwxrwxrwx 1 root root 10 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00003-nst -> ../../nst2
lrwxrwxrwx 1 root root 9 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00004 -> ../../st3
lrwxrwxrwx 1 root root 10 Mar 7 11:07 scsi-SHP_DLT_VS80_B4B0A00004-nst -> ../../nst3
Prudence
Ne pas utiliser les chemins /dev/*
dont l’index peut changer en cas de redémarrage. Utiliser les chemins /dev/tape/by-id/*
(qui utilisent le numéro de série du device cible).
Prudence
Seuls les devices de lecteurs de type /dev/nstX
(par exemple : /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00001-nst -> /dev/nst0
) peuvent être utilisés dans Vitam. Les devices de lecteurs de type /dev/stX
(par exemple : /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00001 -> /dev/st0
) ne doivent PAS être utilisés (car ils causent à rebobinage automatique de la bande après chaque opération).
robots: Définition du bras robotique de la librairie.
- device: Chemin du fichier de périphérique scsi générique associé au bras. (ex.
/dev/tape/by-id/scsi-1HP_EML_E-Series_B4B0AC0000
) - mtxPath: Chemin vers la commande Linux de manipulation du bras.
- timeoutInMilliseconds: timeout en millisecondes à appliquer aux ordres du bras.
- device: Chemin du fichier de périphérique scsi générique associé au bras. (ex.
drives: Définition du/ou des lecteurs de cartouches de la librairie.
- index: Numéro de lecteur, valeur débutant à 0.
- device: Chemin du fichier de périphérique scsi SANS REMBOBINAGE associé au lecteur. (ex.
/dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00001-nst
) - mtPath: Chemin vers la commande Linux de manipulation des lecteurs.
- ddPath: Chemin vers la commande Linux de copie de bloc de données.
- timeoutInMilliseconds: timeout en millisecondes à appliquer aux ordres du lecteur.
fullCartridgeDetectionThresholdInMB Seuil de détection de bande pleine (en Mo) Permet pour détecter en cas d’erreur d’écriture sur bande, la cause probable de l’erreur :
- Si le volume des données écrites sur bande > seuil : La bande est considérée comme pleine
- Si le volume des données écrites sur bande < seuil : La bande est considérée comme corrompue
Typiquement, 90% de la capacité théorique de stockage des cartouches (hors compression).
Exemple:
tapeLibraries:
TAPE_LIB_1:
robots:
-
device: /dev/tape/by-id/scsi-1HP_EML_E-Series_B4B0AC0000
mtxPath: "/usr/sbin/mtx"
timeoutInMilliseconds: 3600000
drives:
-
index: 0
device: /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00001-nst
mtPath: "/bin/mt"
ddPath: "/bin/dd"
timeoutInMilliseconds: 3600000
-
index: 1
device: /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00002-nst
mtPath: "/bin/mt"
ddPath: "/bin/dd"
timeoutInMilliseconds: 3600000
-
index: 2
device: /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00003-nst
mtPath: "/bin/mt"
ddPath: "/bin/dd"
timeoutInMilliseconds: 3600000
-
index: 3
device: /dev/tape/by-id/scsi-SHP_DLT_VS80_B4B0A00004-nst
mtPath: "/bin/mt"
ddPath: "/bin/dd"
timeoutInMilliseconds: 3600000
fullCartridgeDetectionThresholdInMB : 2_000_000
4.2.5.15. Sécurisation SELinux¶
Depuis la release R13, la solution logicielle VITAM prend désormais en charge l’activation de SELinux sur le périmètre du composant worker et des processus associés aux griffins (greffons de préservation).
SELinux (Security-Enhanced Linux) permet de définir des politiques de contrôle d’accès à différents éléments du système d’exploitation en répondant essentiellement à la question « May <subject> do <action> to <object> », par exemple « May a web server access files in user’s home directories ».
Chaque processus est ainsi confiné à un (voire plusieurs) domaine(s), et les fichiers sont étiquetés en conséquence. Un processus ne peut ainsi accéder qu’aux fichiers étiquetés pour le domaine auquel il est confiné.
Note
La solution logicielle VITAM ne gère actuellement que le mode targeted (« only targeted processes are protected »)
Les enjeux de la sécurisation SELinux dans le cadre de la solution logicielle VITAM sont de garantir que les processus associés aux griffins (greffons de préservation) n’auront accès qu’au ressources système strictement requises pour leur fonctionnement et leurs échanges avec les composants worker.
Note
La solution logicielle VITAM ne gère actuellement SELinux que pour le système d’exploitation Centos
Avertissement
SELinux n’a pas vocation à remplacer quelque système de sécurité existant, mais vise plutôt à les compléter. Aussi, la mise en place de politiques de sécurité reste de mise et à la charge de l’exploitant. Par ailleurs, l’implémentation SELinux proposée avec la solution logicielle VITAM est minimale et limitée au greffon de préservation Siegfried. Cette implémentation pourra si nécessaire être complétée ou améliorée par le projet d’implémentation.
SELinux propose trois modes différents :
- Enforcing : dans ce mode, les accès sont restreints en fonction des règles SELinux en vigueur sur la machine ;
- Permissive : ce mode est généralement à considérer comme un mode de débogage. En mode permissif, les règles SELinux seront interrogées, les erreurs d’accès logguées, mais l’accès ne sera pas bloqué.
- Disabled : SELinux est désactivé. Rien ne sera restreint, rien ne sera loggué.
La mise en oeuvre de SELinux est prise en charge par le processus de déploiement et s’effectue de la sorte :
Isoler dans l’inventaire de déploiement les composants worker sur des hosts dédiés (ne contenant aucun autre composant VITAM)
Positionner pour ces hosts un fichier hostvars sous
environments/host_vars/
contenant la déclaration suivanteselinux_state: "enforcing"
Procéder à l’installation de la solution logicielle VITAM grâce aux playbooks ansible fournis, et selon la procédure d’installation classique décrite dans le DIN
4.2.5.16. Installation de la stack Prometheus¶
Note
Si vous disposez d’un serveur Prometheus et alertmanager, vous pouvez installer uniquement les exporters souhaités.
Prometheus server et alertmanager sont des addons dans la solution VITAM.
Voici à quoi correspond une configuration qui permettra d’installer toute la stack prometheus.
prometheus:
metrics_path: /admin/v1/metrics
check_consul: 10 # in seconds
prometheus_config_file_target_directory: # Set path where "prometheus.yml" file will be generated. Example: /tmp/
server:
port: 9090
tsdb_retention_time: "7d"
tsdb_retention_size: "5GB"
node_exporter:
enabled: true
port: 9101
metrics_path: /metrics
consul_exporter:
enabled: true
port: 9107
metrics_path: /metrics
elasticsearch_exporter:
enabled: true
port: 9114
metrics_path: /metrics
alertmanager:
api_port: 9093
cluster_port: 9094
- L’adresse d’écoute de ces composants est celle de la patte d’administration.
- Vous pouvez surcharger la valeur de certaines de ces variables (Par exemple le port d’écoute, le path de l’API).
- Pour générer uniquement le fichier de configuration prometheus.yml à partir du fichier d’inventaire de l’environnement en question, il suffit de spécifier le répertoire destination dans la variable
prometheus_config_file_target_directory
4.2.5.16.1. Playbooks ansible¶
Veuillez vous référer à la documentation d’exploitation pour plus d’information.
- Installer prometheus et alertmanager
ansible-playbook ansible-vitam-extra/prometheus.yml -i environments/hosts.<environnement> --ask-vault-pass
- Générer le fichier de conf
prometheus.yml
dans le dossierprometheus_config_file_target_directory
ansible-playbook ansible-vitam-extra/prometheus.yml -i environments/hosts.<environnement> --ask-vault-pass
–tags gen_prometheus_config ..
4.2.5.17. Installation de Grafana¶
Note
Si vous disposez déjà d’un Grafana, vous pouvez l’utiliser pour l’interconnecter au serveur Prometheus.
Grafana est un addon dans la solution VITAM.
Grafana sera déployé sur l’ensemble des machines renseignées dans le groupe [hosts_grafana]
de votre fichier d’inventaire.
Pour se faire, il suffit d’exécuter le playbook associée :
ansible-playbook ansible-vitam-extra/grafana.yml -i environments/hosts.<environnement> --ask-vault-pass
4.2.5.17.1. Configuration¶
Les paramètres de configuration de ce composant se trouvent dans le fichier environments/group_vars/all/advanced/cots_vars.yml
. Vous pouvez adapter la configuration en fonction de vos besoins.
4.2.5.17.2. Configuration spécifique derrière un proxy¶
Si Grafana est déployé derrière un proxy, vous devez apporter des modification au fichier de configuration ansible-vitam-extra/roles/grafana/templates/grafana.ini.j2
Voici les variables modifiées par la solution VITAM pour permettre le fonctionnement de Grafana derrière un proxy apache.
[server]
root_url = http://{{ ip_admin }}:{{ grafana.http_port | default(3000) }}/grafana
serve_from_sub_path = true
[auth.basic]
enabled = false
Avertissement
Lors de la première connexion, vous devrez changer le mot de passe par défaut (login: admin; password: aadmin1234), configurer le datasource et créer/importer les dashboards manuellement.
4.2.5.18. Installation de restic¶
restic est un addon (beta) de la solution VITAM.
restic sera déployé sur l’ensemble des machines du groupe [hosts_storage_offer_default]
qui possèdent le paramètre restic_enabled=true
. Attention à ne renseigner qu’une seule fois ce paramètre par offer_conf
.
Pour se faire, il suffit d’exécuter le playbook associé :
ansible-playbook --vault-password-file vault_pass.txt ansible-vitam-extra/restic.yml -i environments/hosts.<environnement>
4.2.5.18.1. Configuration¶
Les paramères de configuration de ce composant se trouvent dans les fichiers environments/group_vars/all/advanced/cots_vars.yml
et environments/group_vars/all/main/vault-cots.yml
. Vous pouvez adapter la configuration en fonction de vos besoins.
4.2.5.18.2. Limitations actuelles¶
restic est fourni en tant que fonctionnalité beta. À ce titre, il ne peut se substituer à des vérifications régulières de l’état des sauvegardes de vos bases.
restic ne fonctionne pas avec les providers openstack-swift, openstack-swift-v2 et tape-library.
restic ne fonctionne pas avec un cluster mongo multi-shardé. Ainsi, mongo-data ne peut être sauvegardé via restic que dans de petites instances de Vitam.