# Ключ с узкими правами

Одна вещь на этой странице важнее всех остальных, поэтому она первая.

> **Ключ для агента по умолчанию создаётся только на чтение.** Права на запись
> выдаются явно, отдельным действием, и на экране создания об этом написано словами.

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

## Сужение до курса — бесплатно

У ключа нет своего языка прав: **ключ — такой же субъект, как человек**, и права
у него те же самые, что у роли. Проверяет их та же функция.

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

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

## След в журнале

Действие, выполненное агентом, помечается в журнале как выполненное **агентом**,
а не человеком. Не «система изменила доступ», а «интеграция N от имени человека M».

Без этого разбор случая «кто отозвал доступ у ученика» упирается в тупик через
неделю после того, как о нём забыли.

## Что видно про ключ потом

Название, кто создал, когда создан, когда использовался последний раз, с каких
адресов, сколько запросов за сутки. Отзыв — одной кнопкой, немедленный.

Значение ключа показывается **один раз**, при создании: в базе хранится только
хеш. Потеряли — заведите новый и отзовите старый.

Префиксы `lms_live_` и `lms_test_` не для красоты: случайно закоммиченный ключ
опознаётся сканером секретов и отзывается до того, как им воспользуются.

## Состояние

**Реестра ключей в продукте ещё нет** — он появится вместе с API. Правила выше
приняты и не изменятся; экрана, на котором ключ заводится, пока не существует.

Следить — в [Обновлениях](/changelog/).
