Documentation
Hôte, ticket et relais SSH
Bientôt disponible. Contrat d’API prévu, sujet à changement. Ces fonctions ne sont pas encore offertes en production.
Authentification et chemin
Préfixe : /v1/customer/tenants/{tenantId}/sandboxes/{sandboxId}. Les requêtes utiliseront un jeton d’accès bearer ou une clé API de l’espace de travail. Les droits de bac à sable et de dépôt indiqués sont des permissions, pas des scopes hérités. Une clé all:all fonctionnera aussi, dans les limites des permissions actuelles de son créateur. Le relais SSH utilise son ticket plutôt qu’un jeton bearer.
Confiance /ssh-host
GET /ssh-host exigera sandboxes:read ou sandboxes:write. Une réponse 200 retournera host_ca_public_key (l’AC d’hôte Ed25519) et host_key_alias (sbx_… .sandbox.runzivo.dev). La route fonctionnera pour un bac à sable arrêté et ne créera aucun identifiant. Conservez StrictHostKeyChecking yes et utilisez l’AC et le HostKeyAlias retournés.
Ticket /ssh-ticket
POST /ssh-ticket exigera sandboxes:write et un bac à sable en cours d’exécution. Le champ JSON public_key sera obligatoire. Il devra contenir une seule clé publique OpenSSH Ed25519 ou ECDSA P-256 sans options, d’au plus 4096 octets UTF-8. Le corps de la requête sera limité à 8 Kio. Une réponse 201 retournera url, ticket, expires_at, certificate, certificate_expires_at, principal=user, host_ca_public_key et host_key_alias. Limites prévues : le ticket sera à usage unique et durera 30 secondes. Le certificat utilisateur sera valide quinze minutes. Ne journalisez jamais ni l’un ni l’autre.
Relais /ssh
GET /ssh?ticket=… utilisera le ticket émis plutôt qu’un en-tête bearer. Une réponse 101 ouvrira un WebSocket. Les trames binaires transporteront les octets SSH bruts. Une trame texte {"type":"eof"} fermera une direction. OpenSSH exigera le ProxyCommand du CLI. Il n’y aura aucun port SSH public. Limites prévues : deux sessions par bac à sable, trente minutes d’inactivité au maximum et 8 Mio de sortie non lue.
Erreurs
La route de l’hôte retournera 401, 403, 404, 500 et 503. La route du ticket retournera aussi 400, 409 et 429 ticket_limit_reached. Le relais retournera aussi 400, 409, 426 websocket_required et 429 rate_limited. Un code 503 avec sandbox_ssh_unavailable indiquera que SSH, ses AC ou le certificat d’hôte de l’exécution sont indisponibles. Les champs message et message_fr_CA proposeront parfois un redémarrage. D’autres prérequis manquants retourneront sandboxes_unavailable ou sandbox_exec_unavailable.