Sécurité
Mécanismes de sécurité réellement configurés dans nAI'vi et points d'attention
Sécurité
Cette page décrit ce que le code fait aujourd'hui. Elle ne définit pas de politique : les points d'attention signalés sont à arbitrer par l'équipe.
Secrets
Les secrets sont lus depuis l'environnement, jamais depuis le dépôt : BETTER_AUTH_SECRET, LITELLM_API_KEY, MICROSOFT_CLIENT_SECRET. Ne pas les versionner et les fournir par le mécanisme de déploiement (variables du conteneur, secrets Helm).
Authentification (Better Auth)
Configuration dans apps/server/src/lib/auth.ts :
- Connexion par email et mot de passe pour les comptes existants. L'inscription par email est refusée, sauf avec
ALLOW_EMAIL_SIGNUP=true(développement local) ; les comptes naissent à la première connexion Microsoft. - Connexion Microsoft via
socialProviders.microsoft(MICROSOFT_CLIENT_ID,MICROSOFT_CLIENT_SECRET,MICROSOFT_TENANT_ID). - Sessions : durée de vie de 86400 s (24 h), renouvelée au plus toutes les 3600 s.
- Plugin
admin: rôle par défautuser, rôle d'administrationadmin. - Better Auth est monté sur
/api/auth/**.
Le hachage des mots de passe, le format des cookies et les en-têtes d'adresse IP ne sont pas surchargés dans ce fichier : ce sont les valeurs par défaut de Better Auth.
Origines de confiance et CORS
trustedOriginscontient la seule valeur deCORS_ORIGIN.- Le middleware CORS (
apps/server/src/index.ts) accepte toute originelocalhostou127.0.0.1, et l'origine exacte deCORS_ORIGIN. Il autorise les méthodesGET,POSTetOPTIONS, et les identifiants (credentials: true). - Le client web envoie ses requêtes avec
credentials: "include".
Contrôle d'accès des procédures
Trois types de procédures oRPC (apps/server/src/lib/orpc.ts) :
| Type | Condition | Exemples |
|---|---|---|
publicProcedure | aucune | getMe, i18n, getLogo, healthCheck |
protectedProcedure | session valide | lecture des fichiers, fragments et Q&R |
adminProcedure | session et rôle admin (sinon FORBIDDEN) | dépôt et suppression de fichiers, curation (fragments, Q&R, catégories, noms, dates), régénération de l'index, tags, rôles, rôles des utilisateurs, retours |
Chaque procédure doit être déclarée dans une seule liste de apps/server/tests/authorization.test.ts : PUBLIC, SIGNED_IN ou ADMIN_ONLY. Le test échoue tant qu'une procédure n'y est pas.
Points d'attention
Ces points découlent du code actuel. Ils ne sont pas corrigés par cette documentation.
- Pas de limitation de débit configurée dans
auth.tsni dans le serveur. Une limitation doit être ajoutée au niveau du proxy ou de l'ingress. - Pas de réinitialisation de mot de passe : aucun serveur d'e-mail n'est configuré, et les pages de réinitialisation ont été retirées.
Signalement
Signaler toute faille à l'équipe qui administre la plateforme, en décrivant le scénario, l'impact et, si possible, une correction proposée.