Kalli
Références

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éfaut user, rôle d'administration admin.
  • 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

  • trustedOrigins contient la seule valeur de CORS_ORIGIN.
  • Le middleware CORS (apps/server/src/index.ts) accepte toute origine localhost ou 127.0.0.1, et l'origine exacte de CORS_ORIGIN. Il autorise les méthodes GET, POST et OPTIONS, 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) :

TypeConditionExemples
publicProcedureaucunegetMe, i18n, getLogo, healthCheck
protectedProceduresession validelecture des fichiers, fragments et Q&R
adminProceduresession 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.ts ni 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.