Aller au contenu
hs-sql-agent
2.0.2
Documentation 2.0.2
Documentation Exploitation

Référence de configuration

Référence issue du code source pour les variables d’environnement et la configuration runtime de hs-sql-agent 2.0.2.

Instance unique Commencez avec .env.example et conservez les providers locaux au processus tant qu’aucun état ne doit être partagé.
Distribué Utilisez PostgreSQL pour le plan de contrôle et Redis pour cache, limites, synchronisation des politiques/livraisons et concurrence SQL.
.NET intégré Les nouvelles intégrations configurent des options par capacité ; HsSqlAgentServiceOptions reste réservé à la compatibilité de l’API agrégée historique.

Le fichier v2.0.2 .env.example versionné dans le dépôt constitue l’inventaire de déploiement pour le parcours Compose par défaut. Cette page suit ce fichier pour les noms d’environnement et le code runtime v2.0.2 lorsqu’un commentaire et la validation divergent.

Application et plan de contrôle

VariableExemple/défaut dans .env.exampleUsage
ASPNETCORE_URLShttp://+:8080Listener ASP.NET Core principal
ALLOWED_HOSTS*Filtrage des hosts ASP.NET Core
ADMIN_DATABASE_PROVIDERSqliteProvider de la base Admin/plan de contrôle
ADMIN_DATABASE_CONNECTION_STRINGData Source=/app/data/hsqlagent.dbStocke comptes, rôles, clés, audit, politiques et autres états du plan de contrôle
HMAC_KEYplaceholderSecret HMAC protégeant/vérifiant les clés MCP émises ; ≥32 octets
MCP_PUBLIC_ENDPOINThttp://localhost:8080/mcpEndpoint absolu inséré dans la configuration cliente MCP générée

MCP_PUBLIC_ENDPOINT doit être une URL HTTP ou HTTPS absolue. En production, utilisez l’URL que le client peut réellement atteindre, /mcp inclus, et non une adresse interne au conteneur.

Topologie de la base Admin

L’exemple à une instance utilise SQLite. L’exemple distribué utilise PostgreSQL :

ADMIN_DATABASE_PROVIDER=Postgres
ADMIN_DATABASE_CONNECTION_STRING=Host=postgres;Port=5432;Database=hsqlagent;Username=postgres;Password=...

Utilisez une base Admin partagée lorsque plusieurs instances hs-sql-agent doivent voir les mêmes identités, clés, politiques et enregistrements d’audit/plan de contrôle.

Cache

VariableInstance uniqueDistribuéUsage
CACHE_PROVIDERMemoryRedisProvider du cache runtime
CACHE_CONNECTION_STRINGvideredis:6379Connexion Redis lorsqu’il est sélectionné
CACHE_KEY_PREFIXhsqlagent:cache:identiqueEspace de noms des clés de cache

Memory, local au processus, ne convient que lorsque l’état de cache n’a pas besoin d’être partagé entre instances applicatives.

Bootstrap / provisionnement automatique

VariableExempleUsage
BOOTSTRAP_ENABLEDfalseActiver le provisionnement/la synchronisation au démarrage
BOOTSTRAP_DB_IDdefault-dbIdentité bootstrap stable de la base initiale
BOOTSTRAP_DB_NAMEDefault DBNom de la base visible dans Admin
BOOTSTRAP_DB_PROVIDERvideProvider à provisionner
BOOTSTRAP_DB_HOSTlocalhostHost de la base
BOOTSTRAP_DB_PORT5432Port de la base
BOOTSTRAP_DB_DATABASEmydbValeur base/catalogue/fichier
BOOTSTRAP_DB_USERNAMEmyuserNom d’utilisateur de la base
BOOTSTRAP_DB_PASSWORDmypasswordMot de passe de la base
BOOTSTRAP_DB_EXTRA_SETTINGSvideParamètres de connexion propres au provider
BOOTSTRAP_MCP_KEY_IDdefault-keyIdentité bootstrap stable de la clé MCP initiale
BOOTSTRAP_MCP_KEY_NAMEDefault MCP KeyNom de clé visible dans Admin
BOOTSTRAP_MCP_KEYplaceholderValeur brute initiale de la clé
BOOTSTRAP_MCP_ALLOWED_TOOLSvideRestriction d’outils de la clé bootstrap

Les clés MCP gérées par bootstrap ne peuvent volontairement pas être modifiées, renouvelées ou révoquées via le cycle de vie normal. Modifiez leur configuration source.

Authentification Admin

VariableExempleUsage
JWT_KEYplaceholderSecret de signature JWT ; ≥32 octets
JWT_ISSHS-AgentÉmetteur JWT
JWT_AUDHS-Agent-UsersAudience JWT
JWT_ACCESS_TOKEN_EXPIRATION_MINUTES10Durée de vie de l’access token
JWT_REFRESH_TOKEN_EXPIRATION_DAYS1Durée de vie du refresh token
AUTH_LOCKOUT_THRESHOLD5Échecs de connexion avant verrouillage temporaire ; les valeurs inférieures à 1 sont traitées comme 1
AUTH_LOCKOUT_MINUTES15Durée du verrouillage temporaire

Ces paramètres gouvernent l’authentification Admin, pas l’authentification par clé MCP.

Réinitialisation de mot de passe et SMTP

L’envoi de réinitialisation est effectivement désactivé lorsque le host SMTP ou l’expéditeur est vide.

VariableExempleUsage
PASSWORD_RESET_BASE_URLhttp://localhost:3000/reset-passwordPage externe de réinitialisation ; le serveur ajoute ?token=...
PASSWORD_RESET_EXPIRATION_MINUTES30Durée de vie du token à usage unique
SMTP_HOSTsmtp.example.comHost SMTP
SMTP_PORT587Port SMTP
SMTP_ENABLE_SSLtrueComportement SSL/STARTTLS de l’expéditeur
SMTP_USERNAMEexampleIdentifiant SMTP
SMTP_PASSWORDexampleIdentifiant SMTP
SMTP_FROMno-reply@example.comAdresse d’expéditeur acceptée par le provider SMTP

OIDC / SSO et MFA

VariableExempleUsage
OIDC_ENABLEDfalseActiver l’authentification OIDC
OIDC_AUTHORITYvideAuthority du fournisseur d’identité
OIDC_CLIENT_IDvideClient ID OIDC
OIDC_CLIENT_SECRETvideClient secret OIDC
OIDC_REQUIRE_HTTPS_METADATAtrueExiger les métadonnées de découverte HTTPS
OIDC_EMAIL_CLAIMemailNom de la revendication e-mail
OIDC_NAME_CLAIMnameRevendication de nom d’affichage
OIDC_ROLE_CLAIMrolesRevendication de rôle
OIDC_EMAIL_VERIFIED_CLAIMemail_verifiedRevendication d’e-mail vérifié
OIDC_REQUIRE_VERIFIED_EMAILtrueRefuser les identités sans e-mail vérifié selon la revendication configurée
OIDC_SCOPE_0..2openid, profile, emailÉtendues par défaut
OIDC_ROLE_MAPPING_SQL_ADMINSSuperUserExemple de correspondance rôle externe → rôle local
OIDC_AUTO_PROVISIONtrueProvisionner les utilisateurs après résolution réussie de l’identité externe
OIDC_FRONTEND_CALLBACK_URL/sso-callbackRoute frontend de fin de connexion
OIDC_LOGIN_CODE_EXPIRATION_MINUTES2Durée de vie du code de connexion court
OIDC_TOTP_ISSUERHS SQL AgentLibellé de l’émetteur TOTP
DATA_PROTECTION_KEY_PATH/app/data/data-protection-keysRépertoire persistant des clés ASP.NET Core data protection

Consultez SSO OIDC et MFA TOTP.

Santé, requêtes lentes, livraison et rétention de l’audit

VariableExempleUsage
HEALTH_PROBE_ENABLEDfalseActiver les sondes DB en arrière-plan
HEALTH_PROBE_INTERVAL_SECONDS60Fréquence des sondes
HEALTH_PROBE_TIMEOUT_SECONDS10Timeout par sonde
HEALTH_PROBE_MAX_CONCURRENCY4Nombre maximal de sondes concurrentes
SLOW_QUERY_THRESHOLD_MS1000Durée à partir de laquelle une Query est enregistrée comme lente
ALERT_WEBHOOK_URLvideDestination signée facultative pour les alertes
ALERT_WEBHOOK_SECRETvideSecret HMAC/signature ; ≥32 octets si l’URL est activée
SIEM_WEBHOOK_URLvideDestination SIEM signée facultative
SIEM_WEBHOOK_SECRETvideSecret HMAC/signature ; ≥32 octets si l’URL est activée
DELIVERY_MAX_ATTEMPTS6Nombre maximal de tentatives sortantes
DELIVERY_MAX_CONCURRENCY4Nombre maximal de livraisons concurrentes
AUDIT_RETENTION_DAYS90Durée de rétention ; 0 désactive l’automatique
AUDIT_RETENTION_MODEArchiveValeurs runtime valides : Archive ou Purge
AUDIT_ARCHIVE_PATH/app/data/audit-archiveDestination en mode Archive
AUDIT_FALLBACK_PATH/app/data/audit-fallback.jsonlChemin de repli de l’audit ; requis par la validation au démarrage
AUDIT_RETENTION_RUN_HOUR_UTC2Heure UTC planifiée, limitée à 0–23 au runtime

Archive écrit les lignes expirées dans une archive JSONL avant de les supprimer de la base Admin. Purge les supprime sans créer cette archive.

Limitation de débit globale et par clé

VariableInstance uniqueDistribuéUsage
RATE_LIMITING_PERMIT_LIMIT00Limite globale par IP ; 0 avec fenêtre 0 signifie illimité
RATE_LIMITING_WINDOW_SECONDS00Fenêtre globale par IP
RATE_LIMITER_PROVIDERMemoryRedisImplémentation du limiteur partagé
RATE_LIMITER_CONNECTION_STRINGvideredis:6379Connexion Redis
RATE_LIMITER_FAILURE_MODEFailClosedFailClosedComportement lorsque le limiteur distribué est indisponible
RATE_LIMITER_KEY_PREFIXhsqlagent:ratelimit:identiqueEspace de noms Redis

Les clés MCP peuvent en plus hériter de leur limite, la remplacer ou la désactiver. Consultez Clés MCP.

Synchronisation de la politique runtime

VariableInstance uniqueDistribuéUsage
SECURITY_POLICY_SYNC_PROVIDERMemoryRedisProvider de synchronisation de politique
SECURITY_POLICY_SYNC_CONNECTION_STRINGvideredis:6379Connexion Redis
SECURITY_POLICY_SYNC_KEY_PREFIXhsqlagent:security-policy:identiqueEspace de noms des clés
SECURITY_POLICY_SYNC_REFRESH_INTERVAL_SECONDS3030Intervalle de rafraîchissement

Choisissez Redis lorsque les changements de politique doivent se propager entre plusieurs instances.

Synchronisation des livraisons sortantes

VariableInstance uniqueDistribuéUsage
OUTBOUND_DELIVERY_SYNC_PROVIDERMemoryRedisCoordination des signaux de livraison
OUTBOUND_DELIVERY_SYNC_CONNECTION_STRINGvideredis:6379Connexion Redis
OUTBOUND_DELIVERY_SYNC_KEY_PREFIXhsqlagent:outbound-delivery:identiqueEspace de noms des clés

Coordination de la concurrence SQL

VariableInstance uniqueDistribuéUsage
SQL_CONCURRENCY_PROVIDERMemoryRedisProvider du limiteur de concurrence SQL
SQL_CONCURRENCY_CONNECTION_STRINGvideredis:6379Connexion Redis
SQL_CONCURRENCY_FAILURE_MODEFailClosedFailClosedComportement si la coordination distribuée échoue
SQL_CONCURRENCY_KEYhsqlagent:sql-concurrencyidentiqueClé de coordination partagée
SQL_CONCURRENCY_LEASE_SECONDS3030Durée du lease

La découverte de métadonnées, les requêtes, la planification/exécution DML et les travaux SQL liés à la santé utilisent des parcours bornés. Utilisez la concurrence SQL distribuée lorsque la limite doit s’appliquer au cluster entier plutôt qu’à chaque processus.

Observabilité

VariableExempleUsage
PROMETHEUS_ENABLEDfalseActiver le listener HTTP Prometheus
PROMETHEUS_HOST0.0.0.0Host de bind du listener métriques
PROMETHEUS_PORT9000Port du listener séparé ; validation 1–65535 si activé
OTLP_ENDPOINTvideEndpoint collector OTLP HTTP(S) absolu
OTEL_SERVICE_NAMEhs-sql-agentNom de service OpenTelemetry ; ne peut pas être vide

Prometheus est volontairement servi sur un listener séparé du port Admin/MCP. Lorsque OTLP_ENDPOINT est configuré, v2.0.2 exporte la télémétrie, y compris l’intégration tracing/log des preuves de compilation SQL.

Consultez Observabilité et opérations d’audit.

Logging

VariableExemple
LOGGING_EFCORE_COMMAND_LOGLEVELWarning
LOGGING_DEFAULT_LOGLEVELInformation
LOGGING_ASPNETCORE_LOGLEVELWarning

Conserver les commandes EF Core courantes au niveau Warning réduit le bruit des traces SQL en production.

Environnement Docker et options des capacités .NET intégrées

L’environnement Docker/ToolBox constitue une surface complète de configuration du serveur autonome. Les nouvelles intégrations NuGet sont différentes : AddHsSqlAgentCore() est sans option et chaque capacité sélectionnée possède ses propres options.

Par exemple :

  • HsSqlAgentAdminStoreOptions possède le provider et la chaîne de connexion de la base Admin ;
  • HsSqlAgentRuntimeOptions possède cache, limitation de débit, synchronisation, concurrence SQL, stockage d’approbation DML, bootstrap et operability ;
  • HsSqlAgentBuiltInAuthOptions possède JWT, réinitialisation/SMTP et identité d’entreprise/OIDC ;
  • McpOptions possède l’endpoint MCP public et le secret HMAC ;
  • TelemetryOptions possède Prometheus et OTLP.

HsSqlAgentServiceOptions reste uniquement comme DTO de compatibilité de l’API agrégée historique. Les capacités non sélectionnées n’allouent ni ne valident leurs options ; un host intégré utilisant AddHsSqlAgentHostAuthorization(...) n’a donc pas besoin des paramètres JWT, SMTP, reset ou OIDC de HsSqlAgent.

L’API modulaire conserve les valeurs par défaut du code existant. .env.example reste un exemple de déploiement pour le parcours ToolBox autonome et ne signifie pas que chaque host intégré doit configurer toutes les capacités.

Consultez Intégration ASP.NET Core.