본문으로 건너뛰기
hs-sql-agent
2.0.3
문서 2.0.3
문서 관리

보안 정책

Admin 제어 평면에서 hs-sql-agent 2.0.2의 SQL, DML, rate limit 및 동시 실행 정책을 구성합니다.

Query policy 통제된 Query의 결과 행 수와 실행 timeout을 제한합니다.
DML policy predicate를 요구하고 full-table mutation을 제한하며 affected row 수에 상한을 둡니다.
Runtime limits 기본 MCP-key rate limit과 최대 동시 SQL 작업 수를 설정합니다.

Security Policy는 에이전트가 자발적으로 지켜야 하는 가이드가 아니라 런타임 강제 정책입니다. 현재 정책은 Query/DML 실행과 runtime limiter에서 직접 사용됩니다.

2.0.2 정책 필드

필드기본값유효 범위 / 의미
QueryMaxRows10001–100,000
QueryTimeoutSeconds301–600초
RequireWhereForUpdatetrueUPDATE predicate 요구
RequireWhereForDeletetrueDELETE predicate 요구
AllowFullTableUpdatefalsefull-table UPDATE 명시적 허용
AllowFullTableDeletefalsefull-table DELETE 명시적 허용
DmlMaxAffectedRows1001–1,000,000
KeyPermitLimit120설정된 key window당 1–1,000,000 요청
KeyWindowSeconds601–86,400초
MaxConcurrentSql161–10,000 동시 SQL 작업

서비스는 범위를 벗어난 값을 다른 값으로 조용히 보정하지 않고 거부합니다.

Admin 권한

작업권한
현재 정책 조회/runtime/securityview
정책 수정/runtime/securityedit

정책을 수정하면 감사 이벤트가 기록되고 런타임 정책 상태가 즉시 교체됩니다. 또한 설정된 security-policy synchronization provider를 통해 변경이 게시되어 분산 배포의 여러 인스턴스에 전파될 수 있습니다.

Query 제한

QueryMaxRows는 compiler/runtime policy를 통해 Query 결과량을 제한합니다. QueryTimeoutSeconds는 런타임 Query timeout 계약을 제어합니다. 둘 다 서버 측 제약이므로 클라이언트가 스스로 LIMIT이나 cancellation을 추가하는지에 의존하지 않습니다.

UPDATE 및 DELETE predicate

기본 정책은 UPDATE와 DELETE에 predicate를 요구하고 full-table mutation을 허용하지 않습니다.

Full-table 허용은 명시적입니다. RequireWhereForUpdate를 끄는 것과 AllowFullTableUpdate를 켜는 것은 같은 의도가 아닙니다. 운영 워크플로가 실제로 광범위한 mutation을 요구하지 않는 한 보수적인 기본값을 유지하십시오.

DML affected-row 상한

DmlMaxAffectedRows는 mutation 영향 범위를 제한합니다. Safe DML 승인 protocol을 대체하는 것이 아니라 추가로 적용됩니다. Mutation은 여전히 parse/validate/compile을 통과해야 하며 MCP DML 경로에서는 승인 및 commit-time revalidation까지 완료해야 합니다.

자세한 내용은 Safe DML을 참고하십시오.

MCP-key rate limit

Security Policy는 키별 기본 permit limit/window를 제공합니다. 개별 MCP 키는 다음 중 하나를 선택할 수 있습니다.

  • 정책 상속
  • custom override
  • 명시적 unlimited

키별 mode는 MCP 키를 참고하십시오.

SQL concurrency

MaxConcurrentSql은 런타임 SQL 동시 실행 제한입니다. 이 제한이 process-local인지 여러 인스턴스에 걸쳐 조정되는지는 설정된 SQL concurrency provider에 따라 달라집니다.

클러스터 전체를 하나의 제한으로 다뤄야 한다면 distributed provider를 사용하십시오.