본문으로 건너뛰기
hs-sql-agent
2.0.2
문서 2.0.2
문서 운영

설정 레퍼런스

hs-sql-agent 2.0.2의 source-backed 환경 변수 및 런타임 설정 레퍼런스입니다.

단일 인스턴스 .env.example에서 시작하고 상태 공유가 필요하기 전에는 process-local provider를 유지합니다.
분산 환경 Postgres 제어 평면과 Redis 기반 cache, limit, policy sync, delivery sync, SQL concurrency를 사용합니다.
임베디드 .NET 새 통합은 capability별 option을 구성하며 HsSqlAgentServiceOptions는 legacy aggregate compatibility용으로만 유지됩니다.

저장소에 포함된 **v2.0.2 .env.example**은 기본 Compose 경로에서 사용하는 배포용 환경 변수 목록입니다. 이 페이지는 환경 변수 이름은 해당 파일을 따르고, 주석과 validation이 충돌하면 v2.0.2 런타임 코드를 기준으로 합니다.

애플리케이션과 제어 평면

변수.env.example 예시/기본값용도
ASPNETCORE_URLShttp://+:8080Main ASP.NET Core listener
ALLOWED_HOSTS*ASP.NET Core host filtering
ADMIN_DATABASE_PROVIDERSqliteAdmin/control-plane database provider
ADMIN_DATABASE_CONNECTION_STRINGData Source=/app/data/hsqlagent.db계정, 역할, 키, 감사 레코드, 정책 등 제어 평면 상태 저장
HMAC_KEYplaceholder발급된 MCP 키 보호/검증용 HMAC secret; ≥32바이트
MCP_PUBLIC_ENDPOINThttp://localhost:8080/mcp생성되는 MCP 클라이언트 설정에 들어가는 절대 endpoint

MCP_PUBLIC_ENDPOINT는 절대 HTTP 또는 HTTPS URL이어야 합니다. 운영 환경에서는 container 내부 주소가 아니라 클라이언트가 실제로 접근할 수 있는 /mcp 포함 URL을 사용해야 합니다.

Admin database topology

단일 인스턴스 예제는 SQLite를, 분산 예제는 PostgreSQL을 사용합니다.

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

여러 hs-sql-agent 인스턴스가 동일한 identity, key, policy, audit/control-plane record를 공유해야 한다면 shared Admin database를 사용하십시오.

Cache

변수단일 인스턴스분산 예제용도
CACHE_PROVIDERMemoryRedisRuntime cache provider
CACHE_CONNECTION_STRING비어 있음redis:6379Redis 선택 시 connection
CACHE_KEY_PREFIXhsqlagent:cache:동일Cache key namespace

Application instance 사이에서 cache state를 공유할 필요가 없을 때만 process-local Memory가 적합합니다.

Bootstrap / 자동 provisioning

변수예시용도
BOOTSTRAP_ENABLEDfalse시작 시 provisioning/synchronization 활성화
BOOTSTRAP_DB_IDdefault-db초기 데이터베이스의 stable bootstrap identity
BOOTSTRAP_DB_NAMEDefault DBAdmin에 표시되는 데이터베이스 이름
BOOTSTRAP_DB_PROVIDER비어 있음provision할 provider
BOOTSTRAP_DB_HOSTlocalhost데이터베이스 host
BOOTSTRAP_DB_PORT5432데이터베이스 port
BOOTSTRAP_DB_DATABASEmydbdatabase/catalog/file 값
BOOTSTRAP_DB_USERNAMEmyuser데이터베이스 username
BOOTSTRAP_DB_PASSWORDmypassword데이터베이스 password
BOOTSTRAP_DB_EXTRA_SETTINGS비어 있음provider-specific connection settings
BOOTSTRAP_MCP_KEY_IDdefault-key초기 MCP 키의 stable bootstrap identity
BOOTSTRAP_MCP_KEY_NAMEDefault MCP KeyAdmin에 표시되는 키 이름
BOOTSTRAP_MCP_KEYplaceholder초기 raw key 값
BOOTSTRAP_MCP_ALLOWED_TOOLS비어 있음bootstrap key tool 제한

Bootstrap-managed MCP key는 일반적인 key lifecycle에서 편집·교체·폐기할 수 없습니다. 해당 source configuration을 변경해야 합니다.

Admin authentication

변수예시용도
JWT_KEYplaceholderJWT signing secret; ≥32바이트
JWT_ISSHS-AgentJWT issuer
JWT_AUDHS-Agent-UsersJWT audience
JWT_ACCESS_TOKEN_EXPIRATION_MINUTES10Access-token lifetime
JWT_REFRESH_TOKEN_EXPIRATION_DAYS1Refresh-token lifetime
AUTH_LOCKOUT_THRESHOLD5임시 lockout 전 실패 로그인 횟수; 1 미만은 1로 처리
AUTH_LOCKOUT_MINUTES15임시 lockout 시간

이 설정은 Admin authentication을 제어하며 MCP-key authentication과는 별개입니다.

비밀번호 재설정과 SMTP

SMTP host 또는 sender가 비어 있으면 password-reset mail은 사실상 비활성화됩니다.

변수예시용도
PASSWORD_RESET_BASE_URLhttp://localhost:3000/reset-password외부에서 접근 가능한 reset page; server가 ?token=... 추가
PASSWORD_RESET_EXPIRATION_MINUTES30One-time reset-token lifetime
SMTP_HOSTsmtp.example.comSMTP host
SMTP_PORT587SMTP port
SMTP_ENABLE_SSLtrueMail sender의 SSL/STARTTLS 동작
SMTP_USERNAMEexampleSMTP credential
SMTP_PASSWORDexampleSMTP credential
SMTP_FROMno-reply@example.comSMTP provider가 허용하는 sender address

OIDC / SSO 및 MFA

변수예시용도
OIDC_ENABLEDfalseOIDC authentication 활성화
OIDC_AUTHORITY비어 있음Identity-provider authority
OIDC_CLIENT_ID비어 있음OIDC client ID
OIDC_CLIENT_SECRET비어 있음OIDC client secret
OIDC_REQUIRE_HTTPS_METADATAtrueHTTPS discovery metadata 요구
OIDC_EMAIL_CLAIMemailEmail claim 이름
OIDC_NAME_CLAIMnameDisplay-name claim
OIDC_ROLE_CLAIMrolesRole claim
OIDC_EMAIL_VERIFIED_CLAIMemail_verifiedVerified-email claim
OIDC_REQUIRE_VERIFIED_EMAILtrue설정 claim 기준으로 email 미검증 identity 거부
OIDC_SCOPE_0..2openid, profile, emailDefault scopes
OIDC_ROLE_MAPPING_SQL_ADMINSSuperUser외부 role → local role mapping 예시
OIDC_AUTO_PROVISIONtrue외부 identity 해석 성공 시 사용자 자동 provisioning
OIDC_FRONTEND_CALLBACK_URL/sso-callbackFrontend completion route
OIDC_LOGIN_CODE_EXPIRATION_MINUTES2Short-lived login-code lifetime
OIDC_TOTP_ISSUERHS SQL AgentTOTP issuer label
DATA_PROTECTION_KEY_PATH/app/data/data-protection-keys영속 ASP.NET Core data-protection key directory

자세한 내용은 OIDC SSO와 TOTP MFA를 참고하십시오.

Health, slow query, delivery, audit retention

변수예시용도
HEALTH_PROBE_ENABLEDfalseBackground DB health probing 활성화
HEALTH_PROBE_INTERVAL_SECONDS60Probe 주기
HEALTH_PROBE_TIMEOUT_SECONDS10Probe별 timeout
HEALTH_PROBE_MAX_CONCURRENCY4Concurrent probe 작업 제한
SLOW_QUERY_THRESHOLD_MS1000해당 시간 이상 Query를 slow query로 기록
ALERT_WEBHOOK_URL비어 있음선택적 signed alert destination
ALERT_WEBHOOK_SECRET비어 있음HMAC/signing secret; URL 활성화 시 ≥32바이트
SIEM_WEBHOOK_URL비어 있음선택적 signed SIEM destination
SIEM_WEBHOOK_SECRET비어 있음HMAC/signing secret; URL 활성화 시 ≥32바이트
DELIVERY_MAX_ATTEMPTS6Outbound delivery retry 상한
DELIVERY_MAX_CONCURRENCY4Concurrent outbound delivery 상한
AUDIT_RETENTION_DAYS90보존 기간; 0이면 자동 retention 비활성화
AUDIT_RETENTION_MODEArchive유효한 런타임 값: Archive 또는 Purge
AUDIT_ARCHIVE_PATH/app/data/audit-archiveArchive mode destination
AUDIT_FALLBACK_PATH/app/data/audit-fallback.jsonlAudit fallback path; startup validation에서 요구
AUDIT_RETENTION_RUN_HOUR_UTC2예정 UTC hour; 런타임에서 0–23 범위로 clamp

Archive는 만료된 감사 행을 JSONL archive에 기록한 뒤 Admin database에서 삭제합니다. Purge는 archive를 만들지 않고 대상 만료 행을 삭제합니다.

전역 및 키별 rate limiting

변수단일 인스턴스분산용도
RATE_LIMITING_PERMIT_LIMIT00Global IP permit limit; limit/window가 모두 0이면 unlimited
RATE_LIMITING_WINDOW_SECONDS00Global IP window
RATE_LIMITER_PROVIDERMemoryRedisShared limiter implementation
RATE_LIMITER_CONNECTION_STRING비어 있음redis:6379Redis connection
RATE_LIMITER_FAILURE_MODEFailClosedFailClosedDistributed limiter 장애 시 동작
RATE_LIMITER_KEY_PREFIXhsqlagent:ratelimit:동일Redis key namespace

MCP 키는 자체 per-key limit을 상속하거나 override하거나 비활성화할 수 있습니다. MCP 키를 참고하십시오.

Runtime policy synchronization

변수단일 인스턴스분산용도
SECURITY_POLICY_SYNC_PROVIDERMemoryRedisRuntime policy synchronization provider
SECURITY_POLICY_SYNC_CONNECTION_STRING비어 있음redis:6379Redis connection
SECURITY_POLICY_SYNC_KEY_PREFIXhsqlagent:security-policy:동일Key namespace
SECURITY_POLICY_SYNC_REFRESH_INTERVAL_SECONDS3030Refresh interval

여러 hs-sql-agent 인스턴스에 정책 변경을 전파해야 한다면 Redis를 선택하십시오.

Outbound-delivery synchronization

변수단일 인스턴스분산용도
OUTBOUND_DELIVERY_SYNC_PROVIDERMemoryRedisDelivery signal coordination
OUTBOUND_DELIVERY_SYNC_CONNECTION_STRING비어 있음redis:6379Redis connection
OUTBOUND_DELIVERY_SYNC_KEY_PREFIXhsqlagent:outbound-delivery:동일Key namespace

SQL concurrency coordination

변수단일 인스턴스분산용도
SQL_CONCURRENCY_PROVIDERMemoryRedisSQL concurrency limiter provider
SQL_CONCURRENCY_CONNECTION_STRING비어 있음redis:6379Redis connection
SQL_CONCURRENCY_FAILURE_MODEFailClosedFailClosedDistributed coordination 장애 시 동작
SQL_CONCURRENCY_KEYhsqlagent:sql-concurrency동일Shared coordination key
SQL_CONCURRENCY_LEASE_SECONDS3030Lease duration

Metadata discovery, Query, DML planning/execution, health 관련 SQL 작업은 bounded runtime path를 사용합니다. 동시 실행 제한을 프로세스별이 아니라 cluster 전체에 적용하려면 distributed SQL concurrency를 사용하십시오.

관측성

변수예시용도
PROMETHEUS_ENABLEDfalsePrometheus HTTP listener 활성화
PROMETHEUS_HOST0.0.0.0Metrics listener bind host
PROMETHEUS_PORT9000별도 metrics listener port; 활성화 시 1–65535 검증
OTLP_ENDPOINT비어 있음절대 HTTP(S) OTLP collector endpoint
OTEL_SERVICE_NAMEhs-sql-agentOpenTelemetry service name; blank 불가

Prometheus는 Admin/MCP application port와 별도의 listener에서 서비스됩니다. OTLP_ENDPOINT가 구성되면 v2.0.2는 SQL compile-evidence tracing/log integration을 포함한 telemetry를 export합니다.

관측성과 감사 운영을 참고하십시오.

Logging

변수예시
LOGGING_EFCORE_COMMAND_LOGLEVELWarning
LOGGING_DEFAULT_LOGLEVELInformation
LOGGING_ASPNETCORE_LOGLEVELWarning

일반 EF Core command logging을 Warning으로 유지하면 운영 환경에서 불필요한 SQL command trace를 줄일 수 있습니다.

Docker 환경과 임베디드 .NET capability option

Docker/ToolBox 환경 변수는 standalone server 전체 구성 표면입니다. 새 NuGet 통합은 다릅니다. AddHsSqlAgentCore()는 optionless이며 선택한 각 capability가 자기 option을 소유합니다.

예를 들어:

  • HsSqlAgentAdminStoreOptions — Admin database provider 및 connection string
  • HsSqlAgentRuntimeOptions — cache, rate limiting, synchronization, SQL concurrency, DML approval storage, bootstrap, operability
  • HsSqlAgentBuiltInAuthOptions — JWT, password reset/SMTP, enterprise identity/OIDC
  • McpOptions — public MCP endpoint 및 HMAC secret
  • TelemetryOptions — Prometheus 및 OTLP 설정

HsSqlAgentServiceOptions는 legacy aggregate compatibility DTO로만 유지됩니다. 선택하지 않은 capability는 자기 option을 할당하거나 검증하지 않으므로 AddHsSqlAgentHostAuthorization(...)을 사용하는 임베디드 호스트는 HsSqlAgent JWT, SMTP, password-reset, OIDC 설정이 필요하지 않습니다.

Modular API는 기존 코드 default를 유지합니다. .env.example은 standalone ToolBox 경로의 배포 예제이며 모든 임베디드 호스트가 모든 capability를 구성해야 한다는 의미가 아닙니다.

자세한 내용은 ASP.NET Core 통합을 참고하십시오.