Agent Guardrails and Runtime LDAP Config

今日は2つの異なる課題に取り組みました。どちらも「境界線を明確にし、制御しやすくする」という共通の目的がありました。

最初のタスクは、AIエージェント用のMCPツールを構築することでした。エージェントがイベントの一覧表示、準備状況の確認、アップデートの公開を行うことで、イベントプラットフォームを管理できるようにしたかったのです。

課題は、MCPツールがトークン認証を使用していることです。これは、標準的なWebリクエストが持つセッションコンテキストが欠如していることを意味します。もしグローバルなテナントスコープに依存してしまうと、システムがすべての組織のデータを返してしまう可能性があります。

私はこれを3つのルールで解決しました。

  • すべてのクエリで、明示的に組織でフィルタリングする。グローバルスコープに依存しない。
  • Webアプリと同じ権限文字列を使用する。エージェントは、それを使用する人間よりも大きな権限を持つべきではない。
  • ルックアップには、自動インクリメントIDの代わりにUUIDを使用する。

すべてのツールを信頼できないエンドポイントとして扱ってください。ロジックは、一箇所でテストできる場所に配置しましょう。

2番目のタスクは、アイデンティティポータルに関するものでした。LDAP設定を静的ファイルから設定UIへと移行しました。これにより、管理者は新しいデプロイを行うことなく、ホスト、ポート、認証情報を変更できるようになりました。

また、接続タイムアウトとSASLオプションの制御も追加しました。これにより、JSONに関する技術的なハードルが生じました。

JSONに整数キーを保存すると、デコード時に文字列として返されます。しかし、LDAP関数は整数キーを必要とします。そのため、使用前にそれらのキーを整数に戻すためのマッパーを書く必要がありました。

安全性を確保するために、2つのガードレールを追加しました。

  • バインドパスワードを保存時に暗号化する。機密情報をキャッシュにプレーンテキストで決して入れない。
  • 保存前にJSONフィールドを検証する。不正な設定は、ユーザーがロックアウトされる時ではなく、保存のステップで失敗させるべきである。

また、接続のテストと保存の両方に単一のアセンブラを使用しました。これにより、テストした接続が、実際に保存されるものと完全に一致することを保証しています。

エンジニアリングとは、機能を作ることではありません。エンジニアリングとは、ガードレールを作ることなのです。

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