Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Portes : SFTP, API REST, explorateur, console

Les portes de fichiers (SFTP, API REST, explorateur) partagent utilisateurs, roles, montages et ACL : un droit accorde l’est partout. La console d’administration n’ouvre aucun fichier. SFTP tient des sessions ; l’API REST n’en a pas, la console montre ses transferts longs en cours (son activite).

PortePour quiEcouteCredentialSection
SFTPclients SFTP (OpenSSH sftp, WinSCP, FileZilla, rclone), sshfs[sftp] listenmot de passe, cle SSH, JWT (nom sentinel)[sftp]
API REST de fichiersscripts HTTP, applications[admin] listen, sous [api] prefixBasic, Bearer (JWT), ticket[api]
Explorateur webutilisateurs dans un navigateur[admin] listen, a [api.ui] pathcelle de l’API, gardee en memoire[api.ui]
Console et API d’administrationexploitants[admin] listen, ou [admin] control_listencompte local (mot de passe) ou JWT avec un role de [[admin.roles]], bearer_token de secours[admin]

SFTP

[sftp]
listen = "0.0.0.0:2222"
host_keys = ["/etc/craft-file-gate/host_ed25519"]
  • Seul le sous-systeme sftp est servi : ni shell, ni scp, ni exec, ni renvoi de ports ou d’agent.
  • Par JWT : le nom sentinel (jwt par defaut) et le jeton en mot de passe, sftp -P 2222 jwt@serveur.
  • Les cles : Porte SFTP et algorithmes SSH.

API REST de fichiers

[admin]
listen = "0.0.0.0:8080"
bearer_token = "changez-moi-en-production"

[api]
enabled = true
prefix = "/api/v1/files"
# lister un repertoire
curl -u alice:mot-de-passe 'http://serveur:8080/api/v1/files/in?list'
# deposer un fichier
curl -u alice:mot-de-passe -T rapport.csv http://serveur:8080/api/v1/files/in/rapport.csv
# telecharger
curl -u alice:mot-de-passe -o rapport.csv http://serveur:8080/api/v1/files/in/rapport.csv
RequeteEffet
GET <chemin>?list&offset=&limit=listage pagine ; limit 100 par defaut, 10000 au plus
GET <chemin>telechargement ; un Range d’un seul intervalle le reprend (206)
HEAD <chemin>metadonnees
PUT <chemin>depot du fichier entier
PUT <chemin>?mkdircreation d’un repertoire
DELETE <chemin>suppression
POST <chemin>?rename=<destination>renommage
GET <chemin>?rights{"path", "rights", "home"} : les droits de l’appelant sur ce chemin, sans toucher au stockage
POST <fichier>?ticket201 {"url": "<prefix>/<fichier>?ticket=<jeton>", "expires_in": 600} ; droit read ; 32 tickets vivants par utilisateur, et un ticket qui a encore 60 s est rendu de nouveau
GET <fichier>?ticket=<jeton>le fichier, sans Authorization, autant de fois que voulu pendant 600 s (moins si le JWT de la demande expire avant), l’ACL rejugee a chaque fois

Toutes les cles : Reference [api].

  • Une credential par requete ; ni cookie, ni session.
  • Un fichier telecharge part en attachment, Cache-Control: no-store, Content-Security-Policy: sandbox, Accept-Ranges: bytes. Une URL de ticket qui fuit telecharge ce fichier jusqu’a son expiration.

Explorateur web

[api.ui]
enabled = true
path = "/files"

Une page sur http://serveur:8080/files, cliente de l’API : memes identifiants, memes ACL. Voir Explorateur de fichiers.

Console et API d’administration

[admin]
listen = "127.0.0.1:8080"
bearer_token = "changez-moi-en-production"
# control_listen = "127.0.0.1:8081"   # une porte a part pour l'administration

La console est sur / de l’ecouteur admin : sessions et montages, bans, configuration sans secret, journaux, metriques, revocations. On s’y connecte par identifiant et mot de passe, ou avec un jeton. /metrics et les sondes sont sur le meme ecouteur, ou sur control_listen, ou sur [server] probes_listen : voir Une porte ou deux.

Ce que vous verrez

LigneSens
INFO SFTP server listeningla porte SFTP est ouverte
INFO starting admin API server (HTTP) (ou (HTTPS))l’ecouteur admin est ouvert
INFO every configured door startedtoutes les portes configurees servent (champ doors)
audit connection_acceptedune authentification reussie, sur toute porte (a chaque requete en REST)