Руководство и понимание

Маршрутизация AI API с учетом сохранения данных: применение политик ZDR, резидентности и журналирования на шлюзе

Практичная архитектура шлюза для маршрутизации трафика AI API с помощью политики хранения данных: классифицируйте чувствительность запросов, поведение поставщика карт при хранении, блокируйте несовместимые функции, сохраняйте безопасную аналитику и проверяйте каждое решение.

Командам безопасности нужно не только знать, какая модель самая дешевая, быстрая или мощная. Им необходимо знать, может ли конкретный запрос легально и оперативно быть отправлен конкретному провайдеру, конечной точке, региону, функции и режиму регистрации.

Это сложнее, чем кажется. Модель может быть приемлемой для обычного внутреннего чата, но не для личных данных клиента. Поставщик может предложить нулевое сохранение данных для одного пути API, в то время как функция заземления поиска сохраняет запросы и выходные данные в течение фиксированного периода. Регион может поддерживать резидентность хранилища, но не тот режим обработки, который вы ожидали. Журналы, принадлежащие разработчикам, можно настраивать, тогда как журналы мониторинга злоупотреблений поставщика подчиняются другой политике.

Практический ответ — перенести решения о хранении из отдельных приложений в шлюз AI API. Шлюз должен классифицировать запрос, оценивать его по матрице возможностей поставщика, блокировать несовместимые функции, маршрутизировать только к утвержденным профилям модели и записывать решение политики, не сохраняя необработанные запросы по умолчанию.

Проблема читателя: условия конфиденциальности поставщика не регулируют время выполнения

Большинство команд начинают с электронной таблицы или проверки безопасности, в которой указано, какие поставщики ИИ одобрены. Это полезно, но недостаточно для маршрутизации производства.

Приложения делают выбор во время выполнения:

<ул>
  • Какой идентификатор модели должен обрабатывать этот запрос?
  • Должен ли запрос использовать поиск, загрузку файлов, выполнение кода, пакетную обработку, кэширование подсказок или сохраненные разговоры?
  • Какой регион или конечная точка должна обработать запрос?
  • Может ли система регистрировать необработанный запрос для отладки?
  • Может ли резервная маршрутизация отправить тот же запрос другому поставщику?
  • Каждый из этих вариантов может изменить профиль хранения. Запрос, который соответствовал требованиям в режиме обычного чата, может стать несоответствующим, когда разработчик включает заземление или постоянное хранение разговоров. Резервное правило, разработанное для обеспечения надежности, может случайно направить регулируемые данные по пути поставщика, который не одобрен для нулевого хранения данных, постоянного хранения данных или контроля злоупотреблений.

    Рекомендация: рассматривайте поведение хранения как первоклассное ограничение маршрутизации, а не как документацию, прикрепленную к учетной записи поставщика.

    Факты, которые необходимо закодировать перед разработкой политики

    Точные условия зависят от поставщика, продукта, контракта, региона, конечной точки и функции. Не полагайтесь на память или одноразовый обзор. Создайте матрицу, принадлежащую источнику, и обновляйте ее при изменении условий.

    Несколько текущих документов общедоступных поставщиков иллюстрируют, почему это необходимо:

    <ул>
  • OpenAI: резидентность данных API документируется как настроенная проектом, при этом для региональных запросов требуются префиксы домена, специфичные для региона. OpenAI также различает поддержку хранилища и поддержку обработки по регионам и отмечает дополнительные требования для регионов за пределами США. OpenAI заявляет, что для размещения данных API за пределами США требуется одобрение средств контроля за злоупотреблениями и измененная поправка к хранению.
  • Anthropic: Anthropic документирует нулевое сохранение данных для случаев коммерческого использования API, отмечая при этом, что некоторые связанные продукты или каналы соответствия имеют отдельные модели хранения, включая более длительное хранение для ленты активности и стенограмм удаленных сеансов.
  • Google Gemini. В условиях API Gemini различаются неоплаченные и платные услуги. Что касается неоплаченных услуг, Google может использовать отправленный контент и сгенерированные ответы для улучшения продуктов; Google заявляет, что в отношении платных услуг подсказки и ответы не используются для улучшения продуктов. В документации Gemini Developer API ZDR говорится, что журналы мониторинга злоупотреблений платными услугами обычно сохраняют запросы и ответы в течение ограниченного периода времени, в то время как утвержденные проекты ZDR перед записью очищают пользовательский контент и идентифицируемые метаданные.
  • Хранилище для конкретных функций. В документации Gemini указано, что функции Grounding with Google Search и Grounding with Google Maps хранят подсказки, контекстную информацию и сгенерированные выходные данные в течение 30 дней, без возможности отключить это хранилище при использовании этих функций.
  • Журналы, принадлежащие разработчикам. В документации по ведению журналов API Gemini указано, что журналы API, принадлежащие разработчикам, по умолчанию могут храниться до 55 дней для проектов с включенной оплатой, и что разработчики могут выбирать более короткие периоды, например 7, 14 или 28 дней.
  • Управление рисками. Профиль генеративного ИИ NIST рекомендует отслеживать созданный ИИ контент на предмет рисков конфиденциальности и связывать политики генеративного ИИ с существующими данными, программным обеспечением, юридическими процессами, процессами соответствия и управления рисками.
  • Это факты, которые необходимо сверить с текущей документацией поставщика перед развертыванием. Урок архитектуры стабилен: сохранение — это не одно логическое значение на уровне поставщика.

    Архитектура: механизм политики шлюза в пути запроса

    Шлюз с поддержкой хранения состоит из пяти основных компонентов:

    <ол>
  • Классификатор чувствительности запросов: обозначает рабочую нагрузку перед маршрутизацией.
  • Матрица возможностей поставщика описывает поставщика, модель, конечную точку, регион, хранение, ведение журнала и поведение функций.
  • Правила политики как кода: преобразуют требования безопасности в решения о разрешении, запрете или проверке во время выполнения.
  • Уровень шлюза функций: блокирует функции, изменяющие условия хранения, если это явно не разрешено.
  • Уровень аудита и аналитики: по умолчанию записывает полезные метаданные без сохранения необработанных подсказок.
  • Шлюзу не обязательно разбираться во всех юридических нюансах. Он должен обеспечивать соблюдение решений, одобренных вашими отделами по юридическим вопросам, безопасности, соблюдению требований и платформе.

    Шаг 1. Классифицируйте чувствительность запроса перед выбором модели

    Начните с небольшой классификационной таксономии. Он должен быть достаточно простым для использования разработчиками, но достаточно выразительным для реализации политики.

    Пример меток конфиденциальности:

    <ул>
  • public: общедоступная документация, маркетинговые копии, общедоступное содержимое веб-сайта.
  • внутренняя: закрытая информация компании с низкой конфиденциальностью.
  • конфиденциально: стратегия, контракты, контекст клиента, сведения о невыпущенных продуктах.
  • customer_pii: имена, адреса электронной почты, адреса, идентификаторы учетных записей, стенограммы поддержки.
  • регулируется: данные здравоохранения, финансов, юриспруденции, образования или защищенные данные, относящиеся к конкретной юрисдикции.
  • source_code: собственный код, файлы конфигурации, архитектуры.
  • учетные данные: секреты, токены, пароли, закрытые ключи. В большинстве систем это следует блокировать, а не маршрутизировать.
  • Классификация может происходить из нескольких источников:

    <ул>
  • Заголовок, предоставленный приложением, например X-Data-Class: customer_pii.
  • Политика арендатора, согласно которой весь трафик от регулируемого клиента рассматривается как регулируемый, если только его рейтинг не понижен утвержденным правилом.
  • Политика конечной точки, в которой по умолчанию для суммирования заявок в службу поддержки используется customer_pii.
  • Облегченное сканирование контента на предмет учетных данных, очевидных личных данных или нарушений правил.
  • Рекомендация: не полагайтесь полностью на автоматическое обнаружение. Требуйте от приложений объявления предполагаемого класса данных, а затем используйте сканирование, чтобы выявить очевидные несоответствия, или принудительно выберите более безопасный класс.

    Шаг 2: постройте матрицу возможностей поставщика

    Матрица возможностей — это источник достоверной информации, которую оценивает маршрутизатор. Для него необходимо создавать версии, проверять и тестировать его, как и производственную конфигурацию.

    Примеры полей:

    {
      "profile_id": "provider_x.chat.eu.zdr",
      "провайдер": "provider_x",
      "модель": "модель-большая",
      "api_family": "chat_completions",
      "конечная точка": "https://eu.example-provider.com/v1",
      "регион": "ЕС",
      "processing_residency": ["eu"],
      "storage_residency": ["eu"],
      "zdr_eligible": правда,
      «zdr_contract_required»: правда,
      "training_use": "not_used_for_training_on_paid_api",
      "abuse_monitoring": "approved_modified_retention_required",
      "developer_log_retention_days": 0,
      «raw_prompt_logging_allowed»: ложь,
      "поддерживаемые_функции": {
        "plain_chat": правда,
        "потоковая передача": правда,
        «tool_calls»: правда,
        «search_grounding»: ложь,
        «maps_grounding»: ложь,
        «file_upload»: ложь,
        «партия»: ложь,
        "stored_conversations": ложь
      },
      "last_reviewed": "01.08.2026",
      "source_refs": ["security-review-123", "vendor-doc-version-abc"]
    

    Используйте профили моделей, а не необработанные идентификаторы моделей. Профиль объединяет модель, поставщика, конечную точку, регион, набор функций и состояние хранения. Разработчики запрашивают model_profile: совместимое_суммирование, а не просто model: fast-large-model.

    Рекомендация: включите в матрицу договорные предварительные условия. Маршрут не одобрен ZDR только потому, что поставщик где-то предлагает ZDR. Он утверждается только в том случае, если ваша учетная запись, проект, регион и конечная точка соответствуют необходимым условиям.

    Шаг 3: напишите правила политики как кода

    Правила политики должны быть явными, проверяемыми и понятными для специалистов по безопасности и платформе.

    Пример правил в псевдокоде:

    запретить, если data_class == "учетные данные"
      причина "credentials_must_not_be_sent_to_model"
    разрешить, только если data_class в ["regulated", "customer_pii"]
      и профиль.zdr_eligible == true
      и Profile.zdr_contract_required_satisfied == true
      Reason_on_failure "model_profile_not_zdr_eligible"
    отклонить, если residency_required == "eu"
      и "eu" нет в профиле.processing_residency
      причина «region_processing_not_supported»
    запретить, если data_class в ["конфиденциально", "customer_pii", "регулируется"]и request.raw_prompt_logging == true
      причина "raw_prompt_logging_not_allowed"
    отклонить, если request.features.search_grounding == true
      и policy.requires_zdr == true
      и Profile.feature_storage.search_grounding_days > 0
      причина "grounding_requires_retained_content"
    отклонить, если Fallback_profile.retention_level < первичного_профиля.retention_level
      причина "fallback_weakens_retention_policy"

    Эти правила должны выполняться перед выбором поставщика и еще раз перед откатом. Резервная маршрутизация — распространенный источник случайного отклонения политики: основной маршрут может соответствовать требованиям, а резервный маршрут просто доступен.

    Шаг 4. Рассматривайте инструменты и функции как возможности изменения удержания

    Не моделируйте сохранение как свойство только базовой модели. Функции часто меняют поведение хранилища, ведения журнала или проверки.

    Назначьте каждой функции свои собственные флаги политики:

    <ул>
  • Обоснование поиска: может сохраняться подсказки, полученный контекст и сгенерированные выходные данные в зависимости от условий поставщика.
  • Карты или привязка к местоположению: могут вводиться журналы или правила хранения для конкретных местоположений.
  • Загрузка файлов: файлы могут храниться отдельно от запросов и ответов.
  • Выполнение кода может создавать временные файлы, журналы выполнения или артефакты песочницы.
  • Пакетные задания: поведение хранения, постановки в очередь и хранения результатов может отличаться от синхронных вызовов API.
  • Сохраненные беседы намеренно сохраняются, и их никогда не следует скрывать за общей опцией чата.
  • Панели оценки или проверки могут создавать рабочие процессы, проверяемые человеком, или долгоживущие наборы данных.
  • Рекомендация: включите функции изменения срока хранения на уровне клиента и маршрута. Если разработчик включает grounding_search=true, шлюз должен повторно оценить запрос на соответствие правилам хранения функций, прежде чем отправлять его в восходящий поток.

    Шаг 5. Сохраните аналитику без хранения необработанных подсказок

    Маршрутизация с учетом хранения не должна ослеплять команду платформы. Вы можете сохранить полезную аналитику использования ИИ, минимизируя при этом хранение контента

    Безопасные поля телеметрии по умолчанию:

    <ул>
  • идентификатор клиента и идентификатор проекта
  • хешированный или внутренний идентификатор ключа API
  • идентификатор профиля модели и идентификатор поставщика
  • запросить временную метку и регион
  • количество входных, выходных, кэшированных и логических токенов, если они доступны.
  • задержка, код состояния, количество повторов и резервное решение.
  • ориентировочная и согласованная стоимость
  • метка классификации данных
  • версия политики и причина решения
  • запрошенные и разрешенные флаги функций
  • Не храните по умолчанию необработанные запросы и выходные данные модели для конфиденциального трафика. Если для отладки требуется контент, используйте контролируемый рабочий процесс:

    <ул>
  • утверждение клиента или арендатора.
  • узкое временное окно
  • предел выборки
  • пропуск на редактирование
  • отдельный контроль доступа
  • короткий срок действия
  • журнал аудита того, кто это включил и почему
  • Это компромисс. Блокирование необработанных журналов запросов усложняет отладку, поддержку, проверку качества и расследование злоупотреблений. Но сохранение всего по умолчанию создает большую поверхность конфиденциальности, нарушений и соответствия требованиям.

    Шаг 6. Укажите действенные причины отказа

    Общий код 403 запрещено раздражает разработчиков и поощряет обходные пути. Верните стабильную машиночитаемую причину и понятное человеку объяснение.

    Пример ответа:

    {
      "ошибка": {
        "type": "policy_denied",
        "code": "grounding_requires_30_day_storage",
        "message": "Заземление поиска не разрешено для рабочих нагрузок с пометкой require_zdr, поскольку эта функция поставщика хранит приглашение, контекст и выходной контент.",
        "request_id": "req_123",
        "policy_version": "retention-policy-2026-08-01",
        "разрешенные_действия": [
          "disable_search_grounding",
          "выберите_профиль:zdr_plain_chat",
          "запрос_исключение"
        ]
      }
    

    Полезные коды отказа включают:

    <ул>
  • model_profile_not_zdr_eligible
  • region_processing_not_supported
  • storage_residency_not_supported
  • raw_prompt_logging_not_allowed
  • feature_requires_content_storage
  • fallback_weakens_retention_policy
  • contract_prequired_missing
  • credential_detected
  • Шаг 7: добавьте рабочий процесс исключения, а не скрытый обход

    Некоторые исключения допустимы: реагирование на инциденты, отладка, одобренная клиентом, тестирование миграции или временное ограничение поставщика. Шлюз должен поддерживать исключения, не превращая их в постоянную теневую политику.

    Каждое исключение должно включать:

    <ул>
  • личность утверждающего
  • запрашивающая команда или арендатор
  • ссылка на заявку или проверку рисков
  • деловое обоснование
  • разрешенные профили и функции моделей
  • охваченные классы данных
  • срок годности
  • дополнительные требования к ведению журнала
  • Рекомендация: делайте исключения более узкими, чем обычные правила. Избегайте глобальных переключателей, таких как disable_retention_policy=true. Предпочитайте переопределения с ограниченной областью, такие как «разрешить ведение журнала подсказок отладки для клиента A, конечной точки B, в течение 24 часов с редактированием и утверждением безопасности».

    План действий

    <ул>
  • Создайте матрицу возможностей поставщика с поддержкой версий.
  • Назначьте владельца для условий поставщика, предварительных условий контракта и проверки хранения.
  • Требовать от приложений указывать класс данных, требования к местоположению и запрошенные функции.
  • По умолчанию конфиденциальный и регулируемый трафик не регистрируется без необработанных запросов.
  • Представляйте инструменты, заземление, загрузку файлов, пакетную обработку и сохраненные разговоры как отдельные флаги возможностей.
  • Выполнять проверки политики перед основной маршрутизацией и перед резервной маршрутизацией.
  • Версия политики журнала, профиль модели, класс данных, флаги функций и причина отказа.
  • Храните метаданные аналитики отдельно от подсказок и выходного контента.
  • Представитель тестирования разрешает и отклоняет запросы в CI.
  • Проверяйте изменения в политике каждый раз, когда поставщик меняет условия, регионы, конечные точки или функции.
  • Компромиссы, которые следует четко обозначить

    Строгая маршрутизация сокращает выбор. Ограничения ZDR и резидентности могут помешать использованию новейшей модели, маршрута с наименьшей стоимостью или многофункциональной конечной точки.

    Региональная маршрутизация может увеличить задержку или стоимость. Ближайший регион, соответствующий требованиям, может не поддерживать желаемый режим обработки или может потребоваться другой путь поставщика.

    Функциональные возможности удивляют разработчиков. Разработчик может думать, что он включает только поиск, но безопасность видит новое поведение хранения. Сообщения о документировании и отказе уменьшают трения.

    Быстрая минимизация усложняет отладку. Командам нужны отредактированные образцы, одобренные арендаторами окна отладки и надежные метаданные, чтобы исследовать проблемы, не сохраняя при этом всю информацию.

    Матрица требует обслуживания. Условия поставщика меняются. Запуск новых моделей. Регионы расширяются. Функции переходят из бета-версии в производственную версию. Устаревшая матрица хуже, чем ее отсутствие, потому что она создает ложную уверенность.

    Что такое рекомендация и что такое прогноз?

    Рекомендации: обеспечить принудительное хранение на шлюзе, классифицировать запросы перед маршрутизацией, построить матрицу возможностей поставщика, заблокировать функции изменения срока хранения с помощью политики, по умолчанию избегать необработанной регистрации подсказок и проверять версии каждого решения политики.

    Прогноз: команды разработчиков платформы искусственного интеллекта будут все чаще рассматривать обеспечение конфиденциальности как часть выбора модели. Вместо того, чтобы спрашивать: «Какую модель нам следует использовать?» приложения будут запрашивать профиль модели, который удовлетворяет ограничениям возможностей, стоимости, задержки, резидентности и хранения.

    Прогноз: функции конфиденциальности отдельных поставщиков будут продолжать различаться. Шлюзов, которые нормализуют только форматы запросов и ответов, будет недостаточно; производственным группам также потребуется нормализация политики.

    Практическое заключение

    Маршрутизация с учетом сохранения данных не является отдельной панелью мониторинга соответствия. Он принадлежит пути запроса.

    Начните с трех результатов: таксономии чувствительности запросов, матрицы возможностей поставщика с поддержкой версий и небольшого набора правил политики как кода для ZDR, резидентности, необработанного ведения журналов, резервного копирования и функций изменения срока хранения. Затем заставьте шлюз возвращать четкие причины отказа и сохраняйте аналитику, не сохраняя необработанный контент по умолчанию.

    Такая конструкция централизует решения, которые в противном случае были бы разбросаны по параметрам SDK, переменным среды, консолям поставщиков и соглашениям, специфичным для группы. Это также дает командам безопасности и платформы практический контрольный журнал: какой запрос был разрешен, какая версия политики была применена, какой профиль модели был выбран и почему.

    Связанное чтение

    FAQ

    Часто задаваемые вопросы

    Является ли нулевое сохранение данных настройкой на уровне поставщика?
    Обычно нет. Рассматривайте его как свойство уровня маршрута, которое зависит от поставщика, утверждения учетной записи, условий контракта, конечной точки, региона, модели, функции API и режима ведения журнала. Закодируйте эти детали в матрице возможностей, а не предполагайте один ответ для всего поставщика.
    Должен ли шлюз хранить необработанные запросы для отладки?
    Более безопасным вариантом по умолчанию является отсутствие хранилища необработанных запросов или выходных данных для конфиденциальных, PII или регулируемых рабочих нагрузок. Сохраняйте операционные метаданные, такие как арендатор, профиль модели, количество токенов, задержка, стоимость, статус и решения по политике. Если необходима отладка контента, используйте узкий, утвержденный, ограниченный по времени и отредактированный режим отладки.
    Как должна работать резервная маршрутизация для регулируемого трафика?
    Резервные профили должны соответствовать тем же или более строгим политикам хранения, местонахождения, ведения журналов и функций, что и основной профиль. В резервном варианте следует отклонить, если он ослабляет право на участие в ZDR, меняет регион, включает необработанное ведение журналов или использует функцию хранения контента.
    Почему функции заземления и файлов обрабатываются отдельно от выбора модели?
    Потому что функции могут изменить поведение хранения. Базовая модель чата может быть приемлемой в обычном режиме, тогда как привязка к поиску, привязка к картам, загрузка файлов, пакетная обработка, сохраненные разговоры или информационные панели просмотра могут предъявлять дополнительные требования к хранению или регистрации.