Короткий ответ
Храните токены в менеджере секретов или защищённых переменных окружения, ограничьте доступ по принципу наименьших привилегий и не передавайте общие учётные данные подрядчикам. Назначьте владельца, порядок ротации и немедленного отзыва каждого credential.
Как это работает подробнее
Выдавайте подрядчикам индивидуальные учётные записи и минимальные права на нужный рекламный аккаунт. Скрипт получает секрет из защищённого хранилища во время выполнения; доступы и сроки действия документируются, ротация тестируется, а завершение контракта запускает отзыв доступа и проверку логов.
- Разделение. Разные среды и подрядчики не должны использовать общий токен с широкими полномочиями.
- Контроль утечек. Уберите секреты из репозитория, таблиц, логов, сообщений и образов контейнеров.
Пример кода
read_api_secret.py
import os
token = os.environ.get("ADS_API_TOKEN")
if not token:
raise RuntimeError("ADS_API_TOKEN is not configured")
print("API credential is configured")Что использовать на практике
- Хранилище. Используйте менеджер секретов облака или CI/CD; переменные окружения применяйте только в защищённом runtime.
- Жизненный цикл. Ведите владельца, назначение, права, дату ротации и процедуру отзыва каждого токена.
Подводные камни
- Секрет в коде. Удаление токена из последнего коммита не делает уже опубликованное значение безопасным — его нужно отозвать.
- Общие аккаунты. Они мешают аудиту действий и оперативному отзыву доступа отдельного подрядчика.