Перейти к содержимому
Последнее обновление

Права доступа

Права доступа определяют, что может делать 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 APIapi:{resource}:{action}api:address:read
Blockchain RPCrpc:{action}rpc:call
Management APImgt:{level}:{resource}:{action}mgt:workspace:member:write

Проверки - точное совпадение строк, без подразумеваемой иерархии. Ключ с api:address:read может просматривать адреса, но для регистрации нужен api:address:write. Выдавайте каждое действие, которое реально используете.

Три действия

Три глагола покрывают почти любой ресурс и означают одно и то же в любой области:

read

Списки и просмотр объектов. Только чтение - состояние не меняется.

write

Создание новых объектов и обновление существующих.

delete

Безвозвратное удаление объектов. Поддерживается не каждым ресурсом.

Две операции используют четвёртое действие, call: rpc:call отправляет запрос к узлу, а api:simulate:call запускает симуляцию транзакции.

Как привязываются права

Права не существуют сами по себе - их всегда что-то несёт. Ключ и участник получают свой набор по-разному:

Ключи

Несут фиксированный набор, выбранный при создании. API-ключ получает права api, которые вы выбрали (в рамках одного проекта); RPC-ключ - rpc:call; управляющий ключ - безопасное подмножество прав mgt.

Участники

Роль задаёт права участника по умолчанию. Уполномоченный пользователь может отдельно управлять правом участника vks:access через сессию личного кабинета.

Ключи фиксируются при создании

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

Права по сервисам

Выберите область, чтобы увидеть все её права. Область - первый сегмент строки - это и есть сервис, которому принадлежит право.

apiВ рамках проектаvilna_api_

Platform API - операции с блокчейном в рамках проекта.

Форма api:{resource}:{action}. Каждый ресурс поддерживает свой набор действий:

ресурсreadwritedelete
addressyesyesyes
limitsyes--
activityyes--
transactionyes--
blockchainyes--
balanceyes--
assetyesyes-
subscriptionyesyesyes
channelyesyesyes
public_keyyesyesyes
invoiceyesyesyes
token_tagyesyesyes
address_tagyesyesyes

Ещё одно вне сетки: api:simulate:call запускает симуляцию транзакции.

api:activity:read разрешает чтение активности через GET /v2/activity. Для списка и просмотра транзакций требуется api:transaction:read. Если интеграция читает активность и транзакции, выдайте оба права.

mgtВ рамках пространстваvilna_mgt_

Management API - администрирование пространства и проектов.

Форма mgt:{level}:{resource}:{action}. Права делятся на уровень пространства и уровень проекта - читайте каждую ячейку как полную строку из четырёх сегментов.

Уровень пространства - mgt:workspace:{resource}:{action}

ресурсreadwritedelete
selfyes--
memberyesyesyes
projectyesyes-
rpc_keyyesyes-

mgt:workspace:member:* также покрывает назначение, изменение и удаление участников проекта - отдельной строки mgt:project:member:* не существует.

Уровень проекта - mgt:project:{resource}:{action}

ресурсreadwritedelete
self--yes
api_keyyesyes-

mgt:project:self:delete удаляет сам проект; больше ничего не использует ресурс self на уровне проекта.

rpcВ рамках пространстваvilna_rpc_

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 требуют vks:access в VKS-ключе рабочего пространства, включая чтение, создание, удаление и отправку. Это отдельное право доступа ко всему публичному VKS API, без разделения на read/write. Выпускайте ключ в кабинете; наличие прав ролей в кабинете не означает наличия операции выпуска в публичном Management API. См. VKS.