Licences
Ce que contient une licence Scrydon, comment l'appliquer dans l'assistant de configuration, comment son statut évolue dans le temps et comment la renouveler
Scrydon est licencié par installation. Votre licence est un petit fichier JSON à deux champs : un JWT signé et une clé publique.
{
"jwt": "eyJhbGciOiJNTC1EU0EtNjUi…",
"publicKey": "q3Vx…"
}Le JWT est signé avec ML-DSA-65, un schéma de signature post-quantique. La plateforme le vérifie à l'aide des clés de signature Scrydon intégrées à chaque version : la vérification n'exige jamais d'appel réseau et aucune clé n'est à configurer. Le champ publicKey permet seulement à l'installateur guidé de vérifier le fichier hors ligne avant l'installation ; la plateforme ne fait jamais confiance à une clé qui arrive avec une licence. L'assistant de configuration et la page de paramètres de licence refusent un fichier .jwt seul.
Contenu d'une licence
| Claim | Signification |
|---|---|
sub | Votre identifiant client. Citez-le lorsque vous contactez Scrydon. |
iss | Émetteur. Doit valoir scrydon-license. |
aud | Audience. Doit valoir scrydon-platform. |
iat | Date d'émission de la licence (temps Unix). |
exp | Date d'expiration (temps Unix). |
jti | Identifiant unique de la licence. |
scrydon.org | Nom de l'organisation, affiché dans l'interface. |
scrydon.orgId | Identifiant d'organisation, facultatif. |
scrydon.tier | starter, professional ou enterprise. |
scrydon.entitlements.cpuCores | Cœurs CPU sous licence pour toute la plateforme. |
scrydon.entitlements.ramGb | RAM sous licence, en Go. |
scrydon.entitlements.vramGb | Mémoire d'accélérateur sous licence, en Go. Contractuelle ; non appliquée à l'exécution. |
Un JWT qu'aucune des clés Scrydon intégrées ne vérifie est refusé, quel qu'en soit le signataire, tout comme un JWT signé avec un autre algorithme ou portant un mauvais émetteur ou une mauvaise audience. Les droits sont comparés à ce que votre cluster exécute réellement par le rapport de capacité de licence.
Appliquer une licence dans l'assistant de configuration
Après une nouvelle installation, ouvrez https://<your-host>/platform/setup. L'assistant compte six étapes :
- Licence. Collez le JSON dans la zone de texte ou déposez le fichier
.jsonsur la zone de téléversement. L'assistant lit les claims, refuse une licence déjà expirée et affiche le niveau, l'organisation, les droits et le nombre de jours avant expiration. - Compte administrateur. Créez le premier administrateur. Le JWT de licence est enregistré à ce moment dans la base de données de la plateforme, après que le serveur l'a vérifié à l'aide des clés intégrées. Si le serveur le refuse, rien n'est enregistré et l'assistant en indique la raison : vous pourrez téléverser une licence authentique plus tard dans Paramètres → Organisation → Licence.
- Organisation. Nommez votre première organisation.
- Stockage. Pointez-la vers un stockage objet compatible S3 ou Azure, ou passez l'étape et configurez-le plus tard sur
https://<host>/platform/settings/platform/storage. - E-mail. Configurez l'envoi d'e-mails (Resend, SendGrid ou SMTP), ou passez l'étape.
- Terminé. Termine la configuration et vous amène à l'accueil de la plateforme.
L'assistant ne sert qu'une fois. Une fois la plateforme initialisée, /platform/setup redirige vers la connexion, et c'est aussi le cas lorsqu'il ne peut pas confirmer que la configuration est encore en attente.
La licence est stockée dans la base de données de la plateforme, avec le reste de la configuration. Il n'y a ni Secret Kubernetes ni fichier à monter, et elle survit aux redémarrages de pods, aux mises à niveau et aux réinstallations du chart tant que la base de données existe.
Pré-renseigner la licence
Pour éviter de coller le fichier, donnez le JWT au chart sous forme de secret :
auth:
secrets:
LICENSE: "eyJhbGciOiJNTC1EU0EtNjUi…" # le champ "jwt"L'étape Licence de l'assistant s'ouvre alors déjà vérifiée et vous passez directement au compte administrateur. Une fois la configuration terminée, la plateforme le copie dans sa base de données au démarrage suivant, s'il n'y est pas encore. Ensuite, c'est la copie en base qui fait foi : renouvelez donc par l'interface plutôt qu'en modifiant ce secret.
Les versions précédentes acceptaient aussi auth.secrets.LICENSE_PUBLIC_KEY. Une installation de production l'ignore désormais, et la mise à jour supprime les lignes de clé publique qu'elle stockait. Vous pouvez la retirer de vos values.
Modes de licence
| Mode | Ce qu'il fait | À utiliser quand |
|---|---|---|
online (par défaut) | Vérifie localement et appelle license.scrydon.com une fois par jour pour contrôler la révocation et déclarer la capacité déployée. | Le cluster peut joindre Internet. |
offline | Vérifie localement uniquement. Le chart ne configure ni URL de serveur de licences, ni appel quotidien, ni sortie réseau pour celui-ci, et les statuts d'appel au serveur ci-dessous ne s'appliquent jamais. | Réseaux restreints ou isolés. |
license:
mode: online # ou offline
apiUrl: https://license.scrydon.com/api/license/validate # mode online uniquementLe chart n'accepte que ces deux valeurs ; toute autre fait échouer l'installation.
Évolution du statut dans le temps
Deux horloges déterminent le statut. La plus défavorable l'emporte.
Expiration, dans tous les modes
| Quand | Statut | Ce que vous voyez |
|---|---|---|
Plus de 30 jours avant exp | valid | Rien. |
Dans les 30 jours avant exp | expiring_soon | Un bandeau d'avertissement pour les administrateurs de l'organisation. |
Jusqu'à 30 jours après exp | expired_in_grace | Un bandeau pour les administrateurs de l'organisation, mis en avant sur les pages de paramètres. La plateforme continue de fonctionner. |
Plus de 30 jours après exp | expired | Le même bandeau, jusqu'à ce que vous appliquiez une licence renouvelée. |
La période de grâce de 30 jours est fixe. Elle n'est pas configurable, et la valeur license.gracePeriod du chart ne la modifie pas.
Une licence dont la date de fin est dépassée ne désactive rien, quel que soit le mode. Chaque application, API et tâche de fond continue de fonctionner pour tous les utilisateurs, et les administrateurs de l'organisation conservent un accès complet à la plateforme : le bandeau est le seul changement. En revanche, une licence expirée ne peut pas être installée : l'assistant de configuration et Update license la refusent tous deux.
Appel au serveur de licences, en mode online
La plateforme conserve l'heure du dernier appel réussi au serveur de licences et s'y compare. Tant qu'aucun appel n'a réussi, elle compte à partir de l'activation de la licence : une nouvelle installation dispose donc des mêmes 72 heures et 7 jours :
| Temps depuis le dernier appel réussi | Statut | Ce que vous voyez |
|---|---|---|
| Moins de 72 heures | valid | Rien. Un appel échoué est silencieux. |
| Plus de 72 heures | phone_home_stale | Un bandeau d'avertissement invitant à vérifier la connectivité sortante. |
| Plus de 7 jours | phone_home_blocked | La page de paramètres de licence refuse de se charger jusqu'à ce qu'un appel réussisse à nouveau. |
Chaque appel est une unique requête HTTPS avec un délai de 30 secondes. Un appel échoué laisse l'heure du dernier succès inchangée, et la plateforme réessaie après un délai croissant d'au plus 30 minutes jusqu'à ce qu'un appel réussisse. Le bandeau signifie donc que le serveur de licences est injoignable depuis 72 heures, et non que quelques appels planifiés ont échoué par hasard.
L'appel quotidien est planifié 24 heures après le démarrage du pod. Pour que ni des redéploiements fréquents ni une base de données brièvement indisponible ne puissent le repousser, la plateforme vérifie aussi au démarrage puis toutes les heures, et appelle dès que le dernier succès date de plus de 20 heures. Les administrateurs de l'organisation peuvent forcer un appel immédiat avec Recheck sous Settings → Organization → License, au plus une fois toutes les 30 secondes.
Une licence révoquée affiche le statut revoked et le même bandeau qu'une licence expirée.
Un problème de licence n'arrête jamais les pods en cours d'exécution. Appliquez une licence valide et le statut se rétablit à la vérification suivante, sans redémarrage.
Inspecter une licence
Dans le navigateur, avant l'installation
Le vérificateur de licence décode un fichier de licence entièrement dans votre navigateur et affiche le niveau, l'organisation, l'identifiant client, les droits et le temps restant avant expiration. Rien ne quitte la page : il fonctionne pendant l'achat ou avant même qu'un cluster existe.
Dans la plateforme
Settings → Organization → License affiche le niveau, l'organisation, les droits, l'expiration, le statut et le dernier appel réussi au serveur de licences. La page est visible des administrateurs de l'organisation.
Par l'API, avec la session d'un administrateur de cette organisation :
curl -X POST https://<your-host>/api/auth/license/get-claims \
-H "Content-Type: application/json" \
-H "Cookie: <session-cookie>" \
-d '{"organizationId":"<org-id>"}'Dans le code, utilisez le client d'authentification : client.license.getClaims({ organizationId }).
En ligne de commande
Le contenu du JWT est son deuxième segment, encodé en base64url :
jq -r .jwt license.json | cut -d. -f2 | tr '_-' '/+' | base64 -d 2>/dev/null | jq .{
"sub": "cust_acme",
"iss": "scrydon-license",
"aud": "scrydon-platform",
"iat": 1735689600,
"exp": 1767225600,
"jti": "lic_abc123",
"scrydon": {
"org": "Acme Corp",
"tier": "enterprise",
"entitlements": { "cpuCores": 16, "ramGb": 64, "vramGb": 0 }
}
}base64 -d peut signaler un remplissage manquant ; la sortie reste complète. Pour lire exp comme une date : date -r 1767225600 sous macOS, date -d @1767225600 sous Linux.
Renouveler
Votre équipe commerciale Scrydon vous envoie un fichier de licence renouvelé avant l'expiration du précédent. Pour l'appliquer :
- Ouvrez Settings → Organization → License et choisissez Update license.
- Collez le nouveau JSON ou déposez le fichier.
- Enregistrez. La plateforme vérifie la nouvelle licence à l'aide de ses clés intégrées et ne remplace l'actuelle qu'ensuite. Une licence refusée laisse l'actuelle en place.
Seul un super administrateur de la plateforme peut remplacer la licence. Chaque remplacement est consigné dans le journal d'audit sous license.updated, avec les identifiants de la nouvelle et de la précédente licence, l'identifiant client, le niveau et l'expiration, jamais le JWT lui-même.
Aucun redémarrage n'est nécessaire. La plateforme vide sa licence en cache à l'enregistrement et lit la nouvelle à la requête suivante. Un renouvellement n'exige jamais de mise à jour de la plateforme. Seule une nouvelle clé de signature Scrydon en exige une : Scrydon livre d'abord la nouvelle clé dans une version, puis n'émet de licences sous cette clé qu'une fois cette version à votre disposition. Pour la procédure complète, consultez Rotation de licence.
Dépannage
License has expired
exp est dépassé : la licence ne peut donc pas être installée. Une plateforme qui fonctionne déjà avec elle continue de fonctionner. Demandez un renouvellement à sales@scrydon.com en citant votre identifiant client, le claim sub.
License is not signed by a trusted Scrydon key
Aucune des clés Scrydon intégrées à cette version ne vérifie le JWT. Soit le fichier a été modifié ou tronqué lors d'un copier-coller (demandez un nouveau fichier à votre équipe commerciale et collez-le en entier), soit il a été signé sous une clé Scrydon plus récente que celle que connaît cette version (le message indique l'identifiant de clé : mettez la plateforme à jour, ou demandez une licence sous la clé actuelle). Une licence signée par un autre que Scrydon aboutit toujours ici.
phone_home_stale ou phone_home_blocked en mode online
La plateforme ne parvient pas à joindre license.scrydon.com. Vérifiez que :
- votre pare-feu de sortie autorise le HTTPS sortant vers
license.scrydon.com:443; - un éventuel proxy qui intercepte le TLS a son autorité de certification dans le magasin de confiance des pods.
Appuyez ensuite sur Recheck. Si le cluster ne doit pas du tout appeler le serveur de licences, passez license.mode: offline et exécutez helm upgrade.
/platform/setup redirige vers la connexion
La configuration est déjà terminée. Connectez-vous et gérez la licence sous Settings → Organization → License.