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

Ключи API AI на уровне клиента: изолируйте арендаторов, бюджеты и злоупотребления без разрастания ключей поставщика

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

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

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

Проблема читателя: изоляция клиентов без одного проекта поставщика на каждого клиента

Строителям SaaS, агентствам и платформам реселлеров обычно необходимо ответить на практические вопросы, прежде чем они смогут предоставить доступ к ИИ в дальнейшем:

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

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

    Факты, рекомендации и прогнозы

    Факты

    <ул>
  • Проекты OpenAI поддерживают участников, учетные записи служб, ключи API, ограничения на использование, бюджеты и ограниченные ресурсы проекта. Это делает проекты полезными в качестве границ восходящего потока, но не автоматически является подходящим примитивом для каждого конечного потребителя.
  • Отчеты об использовании OpenAI могут группировать использование по таким параметрам, как проект, пользователь, ключ API, модель, пакет и уровень обслуживания. Для возврата платежей SaaS по-прежнему требуется, чтобы записи поставщика были объединены с идентификаторами клиентов, принадлежащими продукту.
  • В рабочих пространствах Anthropic ресурсы API разделяются по вариантам использования, командам, отделам, проектам или продуктам. Ключи API привязаны к рабочей области, в которой они созданы, и не могут перемещаться между рабочими областями.
  • Отчеты об использовании и расходах Anthropic поддерживают группировку по ключу API, рабочей области, модели, уровню обслуживания, контекстному окну, местонахождению данных и параметрам, связанным со скоростью, при этом затраты возвращаются в ежедневных корзинах в долларах США.
  • В руководстве по ключам Google Gemini API рекомендуется ограничить использование ключей, а ключи Gemini API по умолчанию ограничены API генеративного языка. Ограничения приложений, такие как IP-адреса, могут быть доступны в зависимости от формы развертывания.
  • В руководствах OWASP ключи API рассматриваются как необходимые элементы управления для защищенных конечных точек и говорится, что ключи следует отозвать, если клиенты нарушают соглашения об использовании.
  • В руководстве OWASP по секретам особое внимание уделяется минимальным привилегиям, отзыву, когда секреты больше не нужны или скомпрометированы, а также автоматической ротации для уменьшения ошибок при реализации.
  • Рекомендации

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

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

    Ключ на уровне клиента должен разрешаться в объект структурированной политики. Как минимум, смоделируйте ключ как нечто большее, чем просто хэш и имя.

    {
      "key_id": "key_01J9...",
      "tenant_id": "tenant_acme",
      "customer_id": "cust_4812","application_id": "app_support_bot",
      «окружающая среда»: «производство»,
      "владелец": {
        "type": "service_account",
        "id": "svc_support_ai"
      },
      "model_profile_id": "profile_support_standard",
      "allowed_modalities": ["текст", "image_input"],
      "tool_policy_id": "tools_readonly_kb",
      "monthly_budget": {
        "валюта": "доллар США",
        "сумма": "500,00"
      },
      "rate_limits": {
        «запросы_в_минуту»: 120,
        «input_tokens_per_mine»: 250000,
        «output_tokens_per_mine»: 80000
      },
      "retention_policy": "только метаданные",
      "статус": "активен",
      "create_at": "2026-09-05T10:00:00Z",
      «last_used_at»: ноль
    

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

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

    Рабочий процесс создания ключей

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

    1. Сначала создайте запись о клиенте

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

    2. Прикрепите профиль модели

    Профиль модели сопоставляет названия моделей, ориентированных на клиента, с моделями и возможностями поставщиков. Например, support-standard может разрешить сбалансированную текстовую модель, ввод изображений и отсутствие выполнения кода. research-premium может поддерживать модели с длинным контекстом, веб-поиск и более высокие ограничения на количество запросов.

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

    3. Установите лимиты расходов и ставок

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

    Полезные элементы управления включают:

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

    4. Правильно создавайте и храните секрет

    Отобразите секретный текст открытого текста один раз. Сохраняйте только надежный хэш, а также короткий префикс или отпечаток пальца для поиска в службе поддержки. Префикс помогает службам поддержки идентифицировать «ключ, заканчивающийся на 8F2A», не видя секрета.

    Типичный шаблон хранения:

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

    Принудительное соблюдение времени запроса

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

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

    Поля книги использования, которые действительно помогут в дальнейшем

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

    Полезные поля включают в себя:

    <ул>
  • request_id и trace_id.
  • tenant_id, customer_id, application_id и key_id.
  • Идентификатор конечного пользователя, желательно под псевдонимом, если это необходимо.
  • Псевдоним модели, запрошенный клиентом.
  • Разрешенный вышестоящий поставщик и модель.
  • Ввод, вывод, рассуждения, кэширование, аудио, изображения, видео и использование инструментов, где это применимо.
  • Заявленная стоимость, зарезервированная сумма, расчетная стоимость, валюта и версия каталога цен.
  • Идентификатор запроса поставщика, ссылка на отчет об использовании, параметр проекта, рабочей области или группы ключей API, если таковой имеется.
  • Применена политика хранения.
  • Коды безопасности, злоупотреблений или политики принятия решений.
  • Категория ошибки и метаданные повторной попытки.
  • Эта структура поддерживает возврат платежей, поддержку клиентов, реагирование на инциденты и рабочий процесс управления ключами API, который может ответить на вопрос: «Что сделал этот ключ?» без раскрытия несвязанных арендаторов.

    Режимы учетных данных: пул, привязка к клиенту и BYOK

    Объединенные учетные данные поставщика

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

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

    Учетные данные поставщика, привязанного к клиенту

    Для более крупных или более рискованных клиентов привяжите арендатора к выделенному проекту поставщика, рабочей области, учетной записи службы или ключу. Это обеспечивает более четкое разделение восходящих потоков и может упростить отчетность на стороне поставщика. Он также может обеспечить жесткое ограничение квоты, если провайдер поддерживает ограничения на этой границе.

    Цена связана со сложностью эксплуатации. Предоставление ресурсов, ротация, ограничения поставщиков, реагирование на инциденты и сверка теперь выполняются в большем количестве вышестоящих объектов.

    Принесите свой ключ

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

    Компромисс — сложность поддержки. Учетная запись поставщика каждого клиента может иметь разные модели доступа, квоты, цены, настройки хранения и статус инцидента. Шлюз должен четко выявлять и объяснять эти различия.

    Отзыв и карантин

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

    Используйте отдельные состояния для разных операционных действий:

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

    Если ключ нарушает политику использования, зарегистрируйте причину, исполнителя, время и объем применения мер. Если решение было автоматизировано, сохраните версию правила и сигналы, которые его активировали. Это сохраняет актуальность разговоров с клиентами.

    Ротация без остановки производства

    При ротации клавиш следует использовать рабочий процесс с перекрытием двух клавиш:

    <ол>
  • Создайте заменяющий ключ с тем же клиентом, приложением, профилем модели и ограничениями, если только оператор не изменит их намеренно.
  • Отобразите новый секрет один раз.
  • Отметить старый ключ как освобождаемый.
  • Примите оба ключа на ограниченный период, например 7, 14 или 30 дней, в зависимости от плана клиента и риска.
  • Выдавать предупреждения об использовании ключа слива.
  • Сообщите владельцу или партнерскому API-клиенту, если старый ключ все еще используется при наступлении крайнего срока.
  • Отменить старый ключ в конце окна.
  • Сохраняйте атрибуцию для обоих идентификаторов ключей одного и того же клиента и приложения.
  • Это позволяет избежать распространенного режима сбоя, когда улучшение безопасности приводит к остановке производства. Ротация по-прежнему является средством контроля, но она становится оперативным рабочим процессом с доказательствами и сроками.

    Поверхность партнерского API

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

    Минимальное количество конечных точек:

    <ул>
  • POST /customers: создать или обновить клиента.
  • POST /customers/{customer_id}/keys: создайте ключ.
  • GET /customers/{customer_id}/keys: список ключей и статусов.
  • PATCH /keys/{key_id: область обновления, владелец, ограничения, профиль модели или статус.
  • POST /keys/{key_id}/rotate: создайте замену и пометьте старый ключ как истощаемый.
  • POST /keys/{key_id}/revoke: отозвать немедленно.
  • GET /customers/{customer_id}/usage: возврат данных об использовании и стоимости по диапазону времени, ключу, приложению, модели или измерению конечного пользователя.
  • Каждый запрос на изменение должен принимать ключ идемпотентности. Каждое изменение должно записывать событие аудита с указанием действующего лица, цели, полей до и после, исходного IP-адреса или идентификатора клиента, а также причины, если таковая имеется.

    Когда использовать проекты или рабочие области поставщика

    Не рассматривайте ключи шлюза и границы провайдера как взаимоисключающие. Они решают разные проблемы.

    Использовать ключи шлюза для обычного контроля на уровне клиента:

    <ул>
  • Атрибуция по клиентам.
  • Ключи для каждого приложения.
  • Ограничения бюджета и тарифов.
  • Быстрая блокировка.
  • Рабочие процессы.
  • Аналитика использования и отчеты реселлеров.
  • Добавьте проекты поставщиков, рабочие области или выделенные учетные данные поставщика, если клиенту требуется более строгое разделение:

    <ул>
  • Большой ежемесячный объем, заслуживающий выделенных квот.
  • Регулируемые рабочие нагрузки с явными требованиями к размещению или хранению.
  • Разделение договорных счетов.
  • Жесткий бюджет или квоты на стороне поставщика.
  • Специальный мониторинг злоупотреблений или границы проверки безопасности.
  • Аккаунты поставщиков, принадлежащие клиентам, через BYOK.
  • Практическим значением по умолчанию является изоляция на уровне шлюза с выборочными жесткими границами восходящего потока. Это упрощает общий путь, сохраняя при этом путь эскалации для клиентов, которым требуется большее разделение.

    Контрольный список реализации

    <ул>
  • Определите схему ключей клиента с указанием арендатора, клиента, приложения, среды, владельца, профиля модели, ограничений, политики хранения и статуса.
  • Хешируйте неактивные секреты и отображайте открытый текст только один раз.
  • Отдельные ключи шлюза от хранилища учетных данных вышестоящего поставщика.
  • Перед отправкой внесите каждый запрос в политику.
  • Зарезервируйте бюджет до звонка поставщика и рассчитывайтесь после того, как станет известно окончательное использование.
  • Записывайте использование с указанием клиента, ключа, псевдонима модели, исходной модели, категорий токенов, использования инструментов, заявленной стоимости, расчетной стоимости и ссылок на поставщика.
  • Реализовать состояния «активно», «освобождение», «отменено», «помещено в карантин» и «истёк срок действия».
  • Поддержка перекрытия поворотов двумя клавишами.
  • Раскрытие операций Partner API с помощью ключей идемпотентности.
  • Используйте проекты или рабочие пространства поставщиков только там, где их эксплуатационные расходы оправданы.
  • Практическое заключение

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

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

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

    FAQ

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

    Являются ли ключи API AI на уровне клиента такими же, как ключи API поставщика?
    Нет. Ключ на уровне клиента выдается шлюзом и сопоставляется с политикой, принадлежащей продукту: арендатором, клиентом, приложением, профилем модели, бюджетом, ограничением скорости, правилами хранения и аудита. Ключ API поставщика — это восходящие учетные данные, используемые шлюзом для вызова поставщика модели.
    Должен ли каждый клиент получить отдельный проект или рабочее пространство провайдера?
    Обычно нет. Отдельные проекты или рабочие пространства поставщиков полезны для клиентов с высоким уровнем риска, больших объемов, регулируемых клиентов, чувствительных к месту жительства или отдельных по договору клиентов. Для обычных клиентов ключи шлюза с надежными реестрами и соблюдением политик являются более простыми и гибкими.
    Как следует поступать с утечкой ключей клиентов?
    Блокируйте новые запросы, немедленно отозывая или помещая в карантин ключ шлюза, сохраняйте записи аудита, при необходимости создайте заменяющий ключ и проверяйте недавнее использование по идентификатору ключа, идентификатору клиента, идентификатору приложения, модели, стоимости и сигналам политики.
    Как BYOK вписывается в эту модель?
    BYOK позволяет клиенту предоставлять учетные данные, принадлежащие поставщику, в то время как шлюз по-прежнему обеспечивает соблюдение политики приложений, аналитику использования и контроль маршрутизации, где это возможно. Это сокращает хранение учетных данных поставщика для платформы, но увеличивает сложность поддержки и согласования.