Hacker News

Ключи Google API не были секретом, но потом Gemini изменила правила

Узнайте, как Gemini изменила правила безопасности ключей Google API. Что нужно знать разработчикам о защите ключей API, которые когда-то считались безопасными для раскрытия.

3 минута чтения

Mewayz Team

Editorial Team

Hacker News

Когда «общественность по замыслу» становится обязательством по обеспечению безопасности

За почти два десятилетия разработчики, использующие экосистему Google, усвоили тонкий, но важный урок: ключи API Google на самом деле не являются секретом. Если вы встроили ключ API данных YouTube в файл JavaScript, Google не встревожился. Если ваш ключ API Карт появлялся в общедоступном репозитории GitHub, ответом системы безопасности было, по сути, пожимание плечами и напоминание о необходимости установить ограничения домена. Вся модель была построена на предположении, что эти ключи будут находиться в клиентском коде и доступны каждому, кто откроет DevTools.

Эта философия имела смысл долгое время. Ключ Maps API, предоставленный без ограничений домена, может привести к неожиданному счету, но он не поставит под угрозу записи пациентов или опустошит банковский счет. Радиус взрыва был финансовым и управляемым. Инструменты Google — ограничения рефереров, белые списки IP-адресов, ограничения квот — были разработаны для сдерживания ущерба, а не для полного предотвращения воздействия.

Потом появились Близнецы, и правила изменились. Проблема в том, что миллионы разработчиков не получили эту памятку.

Устаревшая ментальная модель, которая теперь сжигает разработчиков

Старый опыт разработчиков Google был намеренно снисходительным. Когда вы создавали ключ Maps JavaScript API, документация практически предлагала вам добавить его непосредственно в HTML. Модель безопасности заключалась не в секретности, а в ограничениях. Вы заблокируете ключ для своего домена, установите оповещения о квотах и ​​двинетесь дальше. Это была прагматичная инженерия: клиентские приложения действительно не могут хранить секреты от определенных пользователей, поэтому Google создал систему, которая признавала эту реальность.

Это породило поколение разработчиков (и, что более важно, поколение институциональных привычек), в котором ключи Google API занимали иную ментальную категорию, чем, скажем, секретный ключ Stripe или учетные данные доступа к AWS. Вы бы не вставили свой секретный ключ Stripe в общедоступный репозиторий. Но ваш ключ к Картам? Практически это было значение конфигурации, а не секрет. Многие команды хранили их в общедоступных файлах конфигурации, файлах README и даже в переменных среды на стороне клиента с префиксом NEXT_PUBLIC_ или REACT_APP_, не задумываясь.

Исследователи безопасности, сканирующие GitHub на наличие открытых учетных данных, также научились по-другому относиться к ключам API Google. Утечка ключа Maps оказалась несерьезной находкой. Утечка ключа Gemini – это совсем другой разговор.

Что изменилось с Близнецами и почему это важно

💡 ЗНАЕТЕ ЛИ ВЫ?

Mewayz заменяет 8+ бизнес-инструментов в одной платформе

CRM · Выставление счетов · HR · Проекты · Бронирование · eCommerce · POS · Аналитика. Бесплатный тариф доступен навсегда.

Начать бесплатно →

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

Что еще более важно, ключи API Gemini не имеют тех же встроенных механизмов ограничения домена, которые сделали возможным раскрытие других ключей Google. Не существует простого элемента управления «привязать это к домену моего веб-сайта», который помешал бы злоумышленнику, нашедшему ваш ключ в общедоступном репозитории, запустить собственное приложение и использовать вашу квоту — или ваш платежный лимит — с сервера в другой стране.

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

В 2024 году исследователи безопасности выявили тысячи открытых ключей Gemini API только на GitHub, многие из которых находились в репозиториях, где ранее без происшествий размещались другие ключи API Google. Разработчики не были безрассудны по своим историческим стандартам — они применяли мысленную модель, которой их научила использовать сама Google. Окружающая среда менялась быстрее, чем привычки.

Анатомия случайного воздействия

Понимание того, как происходят эти воздействия, является первым шагом к их предотвращению. Режимы отказа

Frequently Asked Questions

Почему раньше Google не считал ключи API секретными?

Модель безопасности Google исторически основывалась на «ограничениях», а не на «секретности». Ключ API, даже публичный, считался безопасным, если для него были правильно настроены ограничения по доменам, IP-адресам или API. Это позволяло удобно встраивать ключи прямо в клиентский код (например, JavaScript). Система предполагала, что один только ключ без этих ограничений бесполезен для злоумышленника, так как не дает доступа к данным за пределами разрешенных вами сценариев.

Что именно изменила Gemini и почему это важно?

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

Каковы теперь лучшие практики для защиты ключей API Google?

Теперь ключи API Google должны храниться как строгие секреты. Никогда не помещайте их в клиентский код или публичные репозитории. Используйте среду выполнения на стороне сервера (бэкенд) для хранения ключей в защищенных переменных. Для проектов, где сложно развернуть собственный сервер, можно рассмотреть облачные сервисы, такие как Mewayz, который предлагает 207 модулей для быстрой сборки бэкенда, обеспечивая безопасное хранение конфиденциальных данных.

Что делать, если мой ключ уже был скомпрометирован?

Если вы подозреваете, что ваш ключ API Google мог попасть в открытый доступ, необходимо немедленно принять меры. Войдите в Google Cloud Console, перейдите в раздел «API и сервисы» -> «Учетные данные». Найдите скомпрометированный ключ, удалите его и создайте новый. Обязательно проверьте журналы использования API, чтобы оценить масштабы возможного ущерба. После создания нового ключа немедленно примените к нему все необходимые ограничения по доменам и API.

Попробуйте Mewayz бесплатно

Единая платформа для CRM, выставления счетов, проектов, HR и многого другого. Банковская карта не требуется.

Начните управлять своим бизнесом умнее уже сегодня.

Присоединяйтесь к 30,000+ компаниям. Бесплатный тариф навсегда · Без кредитной карты.

Нашли это полезным? Поделиться.

Готовы применить это на практике?

Присоединяйтесь к 30,000+ компаниям, использующим Mewayz. Бесплатный тариф навсегда — кредитная карта не требуется.

Начать бесплатный пробный период →

Готовы действовать?

Начните ваш бесплатный пробный период Mewayz сегодня

Бизнес-платформа все-в-одном. Кредитная карта не требуется.

Начать бесплатно →

14-дневный бесплатный пробный период · Без кредитной карты · Можно отменить в любой момент