Ограничьте область действия ваших персональных токенов доступа

Источник: Supabase•

Ограничьте область действия ваших персональных токенов доступа

Предоставьте каждому персональному توкену доступа только те организации, проекты и разрешения, которые ему необходимы.

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

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

Ограничение области действия токенов стало общедоступным 28 сентября, и мы анонсировали эту функцию на Supabase Select 2 октября. Каждый создаваемый вами в панели управления токен теперь по умолчанию имеет ограниченную область действия, хотя при необходимости вы все равно можете создать токен с полным доступом к учетной записи. Почти 9 из 10 токенов, созданных там с момента запуска, имеют ограниченную область действия.

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

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

1. Выберите ресурсы

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

2. Выберите разрешения

Затем определите, что токен может делать в рамках этого проекта. Панель управления предлагает пресеты, которые устанавливают все разрешения сразу (Нет доступа, Только чтение и Полный доступ), но поскольку «Только чтение» включает в себя секреты, такие как ключи API, начните с пресета «Нет доступа». После этого переключите параметр «База данных» в режим чтения.

3. Установите срок действия

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

4. Оцените радиус поражения

Прежде чем нажать кнопку создания, на экране проверки отобразится то, к чему вы предоставляете доступ. Разверните любое разрешение, чтобы увидеть конкретные конечные точки Management API и инструменты MCP, которые оно охватывает. Для агента пункт «Чтение базы данных» охватывает инструменты, необходимые для получения списка таблиц, генерации типов и выполнения SQL-запросов только на чтение.

Вы также увидите баннер риска, оценивающий комбинацию охвата и прав на запись токена как «Низкий», «Средний» или «Высокий».

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

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

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

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

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

Management API

Если в запросе API отсутствует какое-либо разрешение, в ответе 403 оно указывается в поле missing_permissions. Убедитесь, что у вашей собственной роли есть это разрешение, а затем добавьте его в заменяющий токен. Запрос к проекту, находящемуся вне зоны действия токена, возвращает обычную ошибку 403.

_10

export SUPABASE_ACCESS_TOKEN="sbp_fc..."

_10

_10

# Allowed: Database Read covers this endpoint

_10

curl "https://api.supabase.com/v1/projects/your-project-ref/types/typescript" \

_10

-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN"

_10

_10

# Denied: This endpoint needs Project Settings Read

_10

curl -i "https://api.supabase.com/v1/projects/your-project-ref" \

_10

-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN"

_10

# HTTP 403

Сервер MCP

Каждый инструмент проверяет разрешения перед выполнением и возвращает ошибку инструмента в случае отказа. Обладая разрешением на чтение базы данных, агент может использовать execute_sql для запросов только на чтение. Запись SQL возвращает ошибку разрешений Postgres, а не ошибку 403. Для выполнения apply_migration требуется отдельное разрешение на чтение и запись миграций.

Интерфейс командной строки Supabase (CLI)

Браузерный процесс supabase login по-прежнему создает токен с полным доступом к учетной записи, но мы обновляем его, чтобы он создавал токен с выбранной вами областью действия. До тех пор создавайте токен в панели управления и передавайте его с помощью команды supabase login --token. Для сред CI установите переменную окружения SUPABASE_ACCESS_TOKEN, которая имеет приоритет над любыми локально сохраненными токенами. Команды базы данных, зависящие от SUPABASE_DB_PASSWORD, полностью обходят разрешения токена. Если ваш рабочий процесс CI включает supabase link, вашему токену также необходим доступ на чтение к настройкам проекта, ключам API и секретам ключей API.

Полную карту соответствия разрешений конечным точкам и инструментам MCP см. в документации по персональным токенам доступа.

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

В панели управления токены с полным доступом к учетной записи отмечены значком «Устаревший» (Legacy), а опция «Создать устаревший токен» по-прежнему доступна для рабочих процессов, которым она необходима.

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

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

О чём эта статья

Ещё в разделе «Разработка ПО»

Все →

Ещё от Supabase