Права доступа определяют, что может делать API-ключ или участник команды. Каждое право - строка через двоеточие, например api:address:read, читается слева направо - а сколько в ней сегментов, зависит от того, какому из сервисов оно принадлежит. Эта страница - сама модель доступа; о том, кто какое место занимает в команде, читайте в разделе Участники и роли.
api · rpc · mgt · vks read · write · delete Проверка точным совпадением Фиксируются при создании
Право - строка через двоеточие, читается слева направо: область (scope) - сервис (api, rpc или mgt), ресурс (resource) - объект, например address или member, и действие (action) - read, write или delete.
Platform API использует все три. RPC предоставляет одну возможность, поэтому опускает ресурс; Management API вставляет сегмент level - workspace или project - перед ресурсом, и получается четыре части:
| Сервис | Формат | Пример |
|---|---|---|
| Platform API | api:{resource}:{action} | api:address:read |
| Blockchain RPC | rpc:{action} | rpc:call |
| Management API | mgt:{level}:{resource}:{action} | mgt:workspace:member:write |
Проверки - точное совпадение строк, без подразумеваемой иерархии. Ключ с api:address:read может просматривать адреса, но для регистрации нужен api:address:write. Выдавайте каждое действие, которое реально используете.
Три глагола покрывают почти любой ресурс и означают одно и то же в любой области:
Списки и просмотр объектов. Только чтение - состояние не меняется.
Создание новых объектов и обновление существующих.
Безвозвратное удаление объектов. Поддерживается не каждым ресурсом.
Две операции используют четвёртое действие, call: rpc:call отправляет запрос к узлу, а api:simulate:call запускает симуляцию транзакции.
Права не существуют сами по себе - их всегда что-то несёт. Ключ и участник получают свой набор по-разному:
Несут фиксированный набор, выбранный при создании. API-ключ получает права api, которые вы выбрали (в рамках одного проекта); RPC-ключ - rpc:call; управляющий ключ - безопасное подмножество прав mgt.
Роль задаёт права участника по умолчанию. Уполномоченный пользователь может отдельно управлять правом участника vks:access через сессию личного кабинета.
Эндпоинта, чтобы расширить или сузить ключ после создания, нет. Чтобы изменить, что может ключ, отзовите его и создайте новый с нужными правами.
Выберите область, чтобы увидеть все её права. Область - первый сегмент строки - это и есть сервис, которому принадлежит право.
Platform API - операции с блокчейном в рамках проекта.
Форма api:{resource}:{action}. Каждый ресурс поддерживает свой набор действий:
| ресурс | read | write | delete |
|---|---|---|---|
address | yes | yes | yes |
limits | yes | - | - |
activity | yes | - | - |
transaction | yes | - | - |
blockchain | yes | - | - |
balance | yes | - | - |
asset | yes | yes | - |
subscription | yes | yes | yes |
channel | yes | yes | yes |
public_key | yes | yes | yes |
invoice | yes | yes | yes |
token_tag | yes | yes | yes |
address_tag | yes | yes | yes |
Ещё одно вне сетки: api:simulate:call запускает симуляцию транзакции.
api:activity:read разрешает чтение активности через GET /v2/activity. Для списка и просмотра транзакций требуется api:transaction:read. Если интеграция читает активность и транзакции, выдайте оба права.
Management API - администрирование пространства и проектов.
Форма mgt:{level}:{resource}:{action}. Права делятся на уровень пространства и уровень проекта - читайте каждую ячейку как полную строку из четырёх сегментов.
Уровень пространства - mgt:workspace:{resource}:{action}
| ресурс | read | write | delete |
|---|---|---|---|
self | yes | - | - |
member | yes | yes | yes |
project | yes | yes | - |
rpc_key | yes | yes | - |
mgt:workspace:member:* также покрывает назначение, изменение и удаление участников проекта - отдельной строки mgt:project:member:* не существует.
Уровень проекта - mgt:project:{resource}:{action}
| ресурс | read | write | delete |
|---|---|---|---|
self | - | - | yes |
api_key | yes | yes | - |
mgt:project:self:delete удаляет сам проект; больше ничего не использует ресурс self на уровне проекта.
Blockchain RPC - прямой доступ к узлам во всех сетях.
Форма rpc:{action} - без сегмента ресурса.
| Право | Что даёт |
|---|---|
rpc:call | Отправка запросов JSON-RPC и gRPC к любой поддерживаемой сети |
Управляющий ключ может получать список и метаданные API/RPC-ключей с соответствующим правом read. Для создания и отзыва API-ключей требуется mgt:project:api_key:write, для создания и отзыва RPC-ключей - mgt:workspace:rpc_key:write.
Следующие действия требуют пользовательской сессии в личном кабинете и соответствующей роли в рабочем пространстве:
- Управляющие ключи - получение списка, просмотр, создание и отзыв. Права
mgt:workspace:mgt_key:readиmgt:workspace:mgt_key:writeнельзя выдать управляющему ключу. - VKS-ключи - получение списка, просмотр, создание и отзыв; доступны владельцу и администраторам рабочего пространства.
- Удаление или передача рабочего пространства - доступны только его владельцу.
Ранее выданные права доступа к управляющим ключам могут сохраняться в сведениях о старом ключе. Они не дают доступа к операциям с управляющими ключами и недоступны при выпуске нового ключа.
Роли задают приведённые ниже наборы прав по умолчанию: роль в пространстве даёт права mgt, роль в проекте - права api. Owner и Admin рабочего пространства получают доступ к VKS автоматически. Для Member нужно отдельно выдать vks:access через личный кабинет. Это не меняет его роль в проекте или права API-ключей.
| Роль | Уровень | Набор прав |
|---|---|---|
| Owner | Пространство | Всё, что у Admin, плюс удаление или передача пространства. Один владелец на пространство, назначается при создании. |
| Admin | Пространство | Полные mgt и api - управление участниками, проектами и ключами, но без удаления или передачи пространства. |
| Member | Пространство | Только чтение на уровне пространства; доступ лишь к назначенным проектам. |
| Editor | Проект | api чтение, запись и удаление ресурсов проекта. |
| Viewer | Проект | Чтение ресурсов проекта и симуляция транзакций (api:simulate:call). |
Владелец или админ пространства управляет всеми проектами автоматически; участнику нужно место Editor или Viewer в каждом проекте. Полные описания мест и как пригласить или изменить участника - в разделе Участники и роли.
Действительный ключ без нужного права получает 403 Forbidden. Сверьте требуемое операцией право с правами ключа. Чтобы изменить набор прав, выпустите новый ключ и отзовите старый.
Все публичные операции VKS требуют vks:access в VKS-ключе рабочего пространства, включая чтение, создание, удаление и отправку. Это отдельное право доступа ко всему публичному VKS API, без разделения на read/write. Выпускайте ключ в кабинете; наличие прав ролей в кабинете не означает наличия операции выпуска в публичном Management API. См. VKS.