Reference : [admin] et [api]
⟳ : rechargee a chaud ; sans marque : prise au redemarrage. Voir Rechargement.
[admin]
Voir Console et API d’administration.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin | table | absent : aucune porte HTTP | l’ecouteur d’administration, de l’API et de l’explorateur |
admin.listen | adresse | (obligatoire) | adresse d’ecoute ; 0.0.0.0 dans un conteneur ; CRAFT_FILE_GATE_ADMIN_LISTEN |
admin.control_listen | adresse | absent | une porte a part pour /admin, la console, /metrics et les sondes (sauf avec server.probes_listen) ; CRAFT_FILE_GATE_ADMIN_CONTROL_LISTEN |
admin.bearer_token | chaine | absent | jeton qui a toutes les permissions ; lui ou un role de [[admin.roles]] est exige ; CRAFT_FILE_GATE_ADMIN_BEARER_TOKEN, _FILE |
admin.allow_static_token | booleen | true | false : aucun jeton statique, d’aucune source |
admin.header_read_timeout_secs | entier | 10 | secondes pour envoyer les en-tetes d’une requete ; 1 a 300 ; CRAFT_FILE_GATE_ADMIN_HEADER_READ_TIMEOUT_SECS |
admin.long_request_threshold_secs ⟳ | entier | 30 | secondes apres lesquelles un transfert REST en cours apparait dans les sessions de la console ; 0 : tous |
[[admin.roles]]
Voir Console et API d’administration.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.roles | tableau de tables | [] | les roles admin nommes |
admin.roles[].name | chaine | (obligatoire) | le nom qu’une authority porte (compte local ou JWT) ; unique, distinct des noms de [[roles]] |
admin.roles[].permissions | liste | (obligatoire, non vide) | parmi overview, sessions, kick, bans, unban, config, logs, audit, revoke |
[admin.session]
Voir Console et API d’administration.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.session | table | cle par processus, 1 h, 12 h, revocations en memoire | les jetons de session de la console, signes par le serveur, et leurs revocations |
admin.session.key_file | chemin | absent | la cle de signature, 32 octets au moins (head -c 32 /dev/urandom), lisible par le serveur seul, la meme sur toutes les instances ; sans elle ni secret_name, une cle tiree pour le processus |
admin.session.secret_name | chaine | absent | le Secret Kubernetes dont l’entree admin-session.key tient la cle ; le chart le cree vide, le premier pod l’ecrit, les autres la lisent (feature k8s) ; CRAFT_FILE_GATE_ADMIN_SESSION_SECRET_NAME ; pas avec key_file |
admin.session.ttl_secs | entier | 3600 | vie d’un jeton ; 60 a 86400 |
admin.session.max_age_secs | entier | 43200 | plus de renouvellement au-dela, depuis la connexion ; 60 a 604800, au moins ttl_secs |
admin.session.persist_file | chemin | absent | le fichier ou les revocations sont partagees, a elles seules, distinct des fichiers de bans ; ni lui ni backend : en memoire, une instance, perdues au redemarrage |
admin.session.backend | chaine | file avec persist_file, memoire sinon | file (avec persist_file) ou configmap (feature k8s), une ConfigMap comme les bans ; CRAFT_FILE_GATE_ADMIN_SESSION_BACKEND |
admin.session.revocation_configmap_name | chaine | craft-file-gate-access | la ConfigMap des revocations, cle revocations, avec backend = "configmap" ; la meme que les acces temporaires ; CRAFT_FILE_GATE_ADMIN_SESSION_REVOCATION_CONFIGMAP_NAME |
admin.session.reread_interval_secs | entier | 5 | relecture des revocations partagees, en secondes ; 1 a 30 |
[admin.grants]
Les acces temporaires : un role de fichiers donne a un utilisateur jusqu’a une date, par POST /admin/grants (permission grant).
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.grants | table | en memoire, 7 jours au plus | ou les acces temporaires sont partages, et le plus long |
admin.grants.persist_file | chemin | absent | le fichier ou les acces sont partages, a eux seuls (ni bans, ni revocations) ; ni lui ni backend : en memoire, une instance, refuse avec [cluster] |
admin.grants.backend | chaine | file avec persist_file, memoire sinon | file ou configmap (feature k8s) ; CRAFT_FILE_GATE_ADMIN_GRANTS_BACKEND |
admin.grants.grant_configmap_name | chaine | craft-file-gate-access | la ConfigMap, cle grants, a cote des revocations ; CRAFT_FILE_GATE_ADMIN_GRANTS_GRANT_CONFIGMAP_NAME |
admin.grants.reread_interval_secs | entier | 5 | relecture des acces partages, en secondes ; 1 a 30 |
admin.grants.max_duration_secs | entier | 604800 | duree maximale d’un acces ; 60 a 2592000 |
[admin.tls]
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.tls | table | absent : HTTP | HTTPS sur tout l’ecouteur |
admin.tls.cert_file | chemin | absent | certificat PEM, relu quand le fichier change ; CRAFT_FILE_GATE_ADMIN_TLS_CERT |
admin.tls.key_file | chemin | absent | cle privee PEM ; CRAFT_FILE_GATE_ADMIN_TLS_KEY |
admin.tls.auto_generate | booleen | false | generer un certificat auto-signe (essais) |
admin.tls.auto_generate_cn | chaine | localhost | son Common Name |
admin.tls.auto_generate_dir | chemin | . | ou l’ecrire |
admin.tls.auto_generate_validity_days | entier | 31 | sa validite en jours |
[admin.ban]
Memes cles que [sftp.ban]. Voir Bans et limites de debit.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.ban | table | absent : aucun ban | ban des adresses apres des echecs d’authentification sur l’API d’administration ; l’API de fichiers a sa liste, [api.ban] |
admin.ban.max_failures | entier | 5 | echecs dans la fenetre avant le ban ; au moins 1 |
admin.ban.ban_duration_secs | entier | 600 | duree d’un ban en secondes, a partir du verdict |
admin.ban.window_secs | entier | 300 | fenetre de comptage des echecs en secondes, fixe, ouverte par le premier echec d’une serie |
admin.ban.whitelist_ips | liste | [] | adresses et reseaux CIDR, IPv4 ou IPv6, jamais bannis par cette instance |
admin.ban.trusted_proxies | liste | [] | proxys dont X-Forwarded-For donne l’adresse du client ; sans control_listen, egale a api.ban.trusted_proxies |
admin.ban.persist_file | chemin | absent : en memoire | fichier ou les bans sont gardes et partages entre instances |
admin.ban.backend | chaine | "file" | "file", ou "configmap" pour partager les bans entre pods Kubernetes |
admin.ban.ban_configmap_name | chaine | craft-file-gate-bans | le ConfigMap des bans, avec backend = "configmap" |
admin.ban.reread_interval_secs | entier | 5 | relecture du persist_file partage en secondes, en plus de la surveillance ; 1 a 30 |
[admin.metrics_thresholds]
Voir Metriques.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
admin.metrics_thresholds | table | - | seuils d’alerte de l’onglet Metrics de la console |
admin.metrics_thresholds.hash_pool_percent | entier | 80 | places prises du pool de hachage, en % |
admin.metrics_thresholds.tls_cert_days | entier | 14 | jours restants du certificat TLS admin, en dessous |
admin.metrics_thresholds.rejections_per_minute | entier | 60 | refus SFTP par minute |
admin.metrics_thresholds.jwt_refusals_per_minute | entier | 60 | JWT refuses par minute |
admin.metrics_thresholds.jwks_age_secs | entier | 2 x jwks_refresh_interval_secs | age du cache JWKS |
admin.metrics_thresholds.clock_skew_secs | entier | 30 | ecart d’horloge d’un stockage |
admin.metrics_thresholds.cpu_percent | entier | 90 | CPU du processus, 100 = un coeur |
[api]
Voir Portes.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
api | table | absent : pas d’API | l’API REST de fichiers, sur admin.listen |
api.enabled | booleen | false | servir l’API, sur l’ecouteur de [admin] ; exige [admin] |
api.prefix | chaine | /api/v1/files | chemin sous lequel l’API est servie |
api.cors_origins | liste | absent : pas de CORS | origines admises en CORS ; "*" : toutes (voir Bans) |
api.openapi | booleen | false | servir le Swagger UI (/api/docs) et le document OpenAPI (/api/openapi.json), sans authentification ; exige api.enabled |
[api.ban]
Memes cles que [sftp.ban]. Voir Bans et limites de debit.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
api.ban | table | absent : aucun ban | ban des adresses apres des echecs d’authentification sur l’API de fichiers, ses tickets et l’explorateur |
api.ban.max_failures | entier | 5 | echecs dans la fenetre avant le ban ; au moins 1 |
api.ban.ban_duration_secs | entier | 600 | duree d’un ban en secondes, a partir du verdict |
api.ban.window_secs | entier | 300 | fenetre de comptage des echecs en secondes, fixe, ouverte par le premier echec d’une serie |
api.ban.whitelist_ips | liste | [] | adresses et reseaux CIDR, IPv4 ou IPv6, jamais bannis par cette instance, ni plafonnes dans la file de hachage |
api.ban.trusted_proxies | liste | [] | proxys dont X-Forwarded-For donne l’adresse du client (ban, limiteur, audit) ; sans admin.control_listen, egale a admin.ban.trusted_proxies |
api.ban.persist_file | chemin | absent : en memoire | fichier ou les bans sont gardes et partages entre instances |
api.ban.backend | chaine | "file" | "file", ou "configmap" pour partager les bans entre pods Kubernetes |
api.ban.ban_configmap_name | chaine | craft-file-gate-bans | le ConfigMap des bans, avec backend = "configmap" |
api.ban.reread_interval_secs | entier | 5 | relecture du persist_file partage en secondes, en plus de la surveillance ; 1 a 30 |
[api.rate_limit]
Voir Bans et limites de debit.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
api.rate_limit | table | absent : aucune limite | seau a jetons par adresse pour l’API |
api.rate_limit.requests_per_minute | entier | (obligatoire) | debit soutenu de requetes par adresse ; au moins 1 |
api.rate_limit.burst | entier | requests_per_minute | requetes acceptees d’affilee ; au moins 1 |
[api.ui]
Voir Explorateur de fichiers.
| Cle | Type | Defaut | Effet |
|---|---|---|---|
api.ui | table | - | l’explorateur de fichiers web |
api.ui.enabled | booleen | false | servir l’explorateur ; exige [api] |
api.ui.path | chaine | /files | ou la page est servie, sur l’ecouteur de l’API (admin.listen, meme avec control_listen) ; commence par /, sans / final ; ni sur api.prefix, ni sur une route du serveur (/admin, /ui, /metrics, /health, /livez, /readyz, /api/docs, /api/openapi.json) |