에이전트 가드레일 및 런타임 LDAP 설정

오늘은 서로 다른 두 가지 문제를 다루었습니다. 두 문제 모두 경계를 명확히 하고 제어하기 쉽게 만든다는 동일한 목표를 가지고 있었습니다.

첫 번째 작업은 AI 에이전트를 위한 MCP 도구를 구축하는 것이었습니다. 에이전트가 이벤트를 나열하고, 준비 상태를 확인하며, 업데이트를 게시함으로써 이벤트 플랫폼을 관리할 수 있도록 하고 싶었습니다.

문제는 MCP 도구가 토큰 인증을 사용한다는 점입니다. 이는 표준 웹 요청이 갖는 세션 컨텍스트가 부족함을 의미합니다. 만약 글로벌 테넌트 범위(global tenant scope)에 의존한다면, 시스템이 모든 조직의 데이터를 반환할 수도 있습니다.

저는 세 가지 규칙으로 이 문제를 해결했습니다:

  • 모든 쿼리에서 조직별로 명시적으로 필터링하십시오. 글로벌 범위에 의존하지 마십시오.
  • 웹 앱과 동일한 권한 문자열을 사용하십시오. 에이전트는 이를 사용하는 사람보다 더 큰 권한을 가져서는 안 됩니다.
  • 자동 증가 ID 대신 UUID를 조회에 사용하십시오.

모든 도구를 신뢰할 수 없는 엔드포인트로 취급하십시오. 로직은 한 곳에서 테스트할 수 있는 곳에 두십시오.

두 번째 작업은 ID 포털과 관련된 것이었습니다. LDAP 설정을 정적 파일에서 설정 UI로 옮겼습니다. 이제 관리자는 새로운 배포 없이도 호스트, 포트 및 자격 증명을 변경할 수 있습니다.

또한 연결 타임아웃과 SASL 옵션에 대한 제어 기능도 추가했습니다. 이 과정에서 JSON과 관련된 기술적 난관이 발생했습니다.

JSON에 정수 키를 저장하면 디코딩할 때 문자열로 반환됩니다. LDAP 함수는 정수 키를 필요로 합니다. 따라서 사용하기 전에 해당 키를 다시 정수로 변환하는 매퍼(mapper)를 작성해야 했습니다.

이를 안전하게 유지하기 위해 두 가지 가드레일을 추가했습니다:

  • 저장 시 바인드 비밀번호를 암호화하십시오. 비밀 정보를 캐시에 평문으로 저장하지 마십시오.
  • 저장하기 전에 JSON 필드를 검증하십시오. 잘못된 설정은 사용자가 차단될 때가 아니라 저장 단계에서 실패해야 합니다.

또한 연결 테스트와 저장 모두에 단일 어셈블러를 사용했습니다. 이를 통해 테스트한 연결이 저장되는 연결과 정확히 일치하도록 보장합니다.

엔지니어링은 단순히 기능을 만드는 것이 아닙니다. 엔지니어링은 가드레일을 구축하는 것입니다.

출처: https://dev.to/nasrulhazim/dev-log-2026-06-24-agent-guardrails-and-runtime-ldap-config-2hi5