allow_ips
превращает ключ в API-ключ с IP-белым списком — он работает только
при предъявлении с адреса источника, который вы внесли в список. Утёкший
ключ, воспроизведённый с машины злоумышленника, резидентного прокси или
скомпрометированного CI-раннера, отклоняется ещё до того, как коснётся
модели.
Это половина least agency, отвечающая за привязку к источнику (см.
least agency):
model_limits ограничивает, к каким
моделям может дотянуться ключ, а allow_ips ограничивает, откуда ключ
может быть предъявлен.
1. Что делает allow_ips
allow_ips содержит список адресов источника или CIDR-диапазонов. На
каждом запросе OrcaRouter сравнивает IP источника вызывающего с этим
списком:
- Совпадение → запрос переходит к проверкам лимита моделей, квоты и политики.
- Нет совпадения → запрос отклоняется на уровне аутентификации с
HTTP 403 (
access_denied), до любого вызова вышестоящей модели. - Пустой список → нет ограничения; ключ принимается с любого адреса.
Пустой
allow_ips означает все IP разрешены, а не ни одного.
Оставить поле пустым — это неограниченный default. Закрепите ключ, чтобы
поле начало что-то делать.2. Принимаемые форматы
Каждая запись — один IP или CIDR-диапазон. Смешивайте оба свободно; по одной записи на строку.Одиночный адрес
203.0.113.7 — ровно один хост. Лучше всего для сервера с
фиксированным IP или NAT-шлюза со стабильным адресом egress.CIDR-диапазон
203.0.113.0/24 — целый блок. Лучше всего для облачной подсети, пула
VPN или autoscaling-группы за одним egress-CIDR.3. Задайте это в консоли
Задайтеallow_ips в редакторе ключа на /console/token. Создание или
редактирование ключа требует роли Developer или выше.
- Откройте Console → API Keys и создайте или отредактируйте ключ.
- В редакторе ключа введите свои доверенные адреса в поле IP allow-list — по одному IP или CIDR на строку.
- Сохраните. Ограничение применяется на следующем запросе, который делает ключ — без передеплоя, без изменений в коде агента.
4. Один конкретный пример: запланированный агент
Запланированная задача, суммаризирующая тикеты, выполняется только из одной облачной подсети. Закрепите её ключ за этой подсетью, чтобы учётка была бесполезна где-либо ещё.| Поле | Значение | Эффект |
|---|---|---|
allow_ips | 203.0.113.0/24 | только egress-блок планировщика может предъявить этот ключ |
model_limits | одна модель суммаризации | не может эскалировать к frontier-модели |
credit_limit_usd | недельный потолок | зацикленный прогон не может опустошить баланс |
sk-orca-… как bearer-токен:
203.0.113.0/24, вызов проходит. Воспроизведите
ровно тот же запрос с любого другого адреса, и шлюз вернёт:
allow_ips настраивается целиком через редактор ключа в консоли —
действие Developer-или-выше на сессии вашего рабочего пространства.
Самообслуживания через ключ ретрансляции для него нет: ключ не может
расширить собственный список разрешённых источников.5. Что список разрешённых IP содержит и чего не содержит
API-ключ с IP-белым списком ограничивает, откуда работает ключ — один срез радиуса поражения. Он сочетается с другими полями области, а не заменяет их.Содержит: воспроизведение утёкшего ключа с нового источника
Содержит: воспроизведение утёкшего ключа с нового источника
Учётка, эксфильтрированная из логов, git-коммита или взломанного
ноутбука, — мёртвый груз, если только злоумышленник не может также
источать трафик из вашего внесённого в список диапазона. Это основная
работа поля — см.
утёкший ключ для полного реагирования
на инцидент.
Не содержит: злоупотребление из разрешённого источника
Не содержит: злоупотребление из разрешённого источника
Если компрометация и есть внесённый в список хост — отравленная
зависимость, работающая на вашем собственном сервере, — проверка IP
источника проходит. Сочетайте
allow_ips с
model_limits,
лимитом расходов и
политикой firewall, чтобы компрометация из
доверенного источника всё равно была ограничена.Не заменяет срок действия или ротацию
Не заменяет срок действия или ротацию
Привязка к IP не делает ключ короткоживущим. Сочетайте её с
абсолютным сроком действия и
графиком ротации, чтобы ключ и переставал
работать из новых мест, и в итоге переставал работать вообще.
6. Операционные заметки
Динамические или неизвестные egress-IP
Динамические или неизвестные egress-IP
Если у ваших вызывающих нет стабильного адреса источника (serverless с
ротирующимся egress, мобильные клиенты, широкие офисные сети) —
привязка к IP неверный контроль: вы либо запрёте реальный трафик, либо
расширите диапазон до бессмысленности. Опирайтесь на
model_limits, лимиты расходов, срок
действия и привязки политик вместо
этого.Обновление списка при изменении инфраструктуры
Обновление списка при изменении инфраструктуры
Редактирование
allow_ips вступает в силу на следующем запросе — нет
задержки распространения, которую нужно пережидать. Когда вы добавляете
регион или мигрируете подсеть, сначала обновите ключ, подтвердите, что
новый диапазон работает, затем уберите старый.На ключ, а не на рабочее пространство
На ключ, а не на рабочее пространство
allow_ips живёт на отдельном ключе, так что у каждого агента может
быть своя привязка к источнику. Ключ планировщика может закрепиться за
пакетной подсетью, пока интерактивный ключ разрешает более широкий
офисный диапазон — оба в одном рабочем пространстве.7. Дальнейшие шаги
Объект токена
Каждое поле на ключе, включая
allow_ips, в одном справочнике.Лимиты моделей
Ограничьте, к каким моделям может дотянуться ключ — вторая половина
привязки источник + область.
Утёкший ключ
Что делать в момент, когда ключ раскрыт.
Чек-лист минимальных полномочий
Прогоните каждый ключ через один и тот же проход усиления.
