Как создавать роли с помощью API

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
info

В этой статье рассказывается, как создавать специальные роли и назначать их пользователям с помощью Management API. Мы также покажем, как протестировать назначение ролей с помощью API. Общие сведения о специальных ролях приведены в статье Как создавать специальные роли в интерфейсе.

О настройках разрешений

Разрешения для ролей задаются в URI Management API (а не в URI интерфейса управления). Например, если вы хотите задать разрешения PUT, GET и/или DELETE для объектов разработчиков приложений в организации Edge, вам нужно задать разрешения для ресурса /developers, поскольку путь Management API для разработчиков – https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers. (При определении разрешений не нужно включать часть пути, относящуюся к организации, поскольку разрешения относятся к определенной организации, как показано в вызовах Management API в этой теме.)

Вы также можете задать разрешения для определенных объектов. Пример:

  • Если вы хотите задать разрешения для одного разработчика, задайте их для /developers/steve@example.com.
  • Для определенного продукта API, например free-api-product, задайте их в /apiproducts/free-api-product.
  • Для карты пар "ключ-значение" в определенной среде вы можете задать разрешение, например, для /environments/test/keyvaluemaps/fooMap или /environments/test/keyvaluemaps/* для всех карт пар "ключ-значение" в тестовой среде.

Разрешения, заданные с помощью API:

  • Разрешить пользователям со специальной ролью выполнять вызовы Management API в соответствии с их разрешениями. Например, если роль позволяет доступ только для чтения ко всем прокси-серверам API, пользователь с этой ролью может использовать API List API Proxies, но не Create an API Proxy.
  • Определите, что пользователи со специальной ролью могут видеть и делать в интерфейсе управления. Например, доступ только для чтения к прокси-серверам API отключает доступ к кнопкам "+ Прокси-сервер API" и "Удалить" на странице "Прокси-серверы API".

Чтобы узнать, для каких ресурсов и путей можно задать разрешения, ознакомьтесь с документацией по Management API.

Полную справочную информацию об управлении ролями можно найти в документации по API User roles.

Синтаксис и приоритет

В настройках разрешений можно использовать подстановочный знак (*), чтобы указать "все после". Однако если вы зададите разрешения только для родительского ресурса (например, /developers), не указав более конкретные разрешения (например, /developers/*), то разрешение будет применяться ко всему, что находится в /developers и после него.

В разрешениях PUT также служит как POST.

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

  • PUT on /developers
  • GET on /developers/*

Это означает, что администратор разработчика может:

  • Создавать разработчиков, но не обновлять их или дочерние объекты (из-за более конкретного разрешения GET для этого пути).
  • Получать информацию о любом разработчике или дочернем объекте, но не список всех разработчиков.

Полный список разрешений, которые можно задать с помощью API, приведен в справочнике по разрешениям.

Создайте новую специальную роль "Разработка".

Создайте роль development, чтобы разработчики могли просматривать, создавать и обновлять прокси-серверы API.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'

Добавьте разрешения для роли разработчика

Разрешения, которые можно задать для всей группы артефактов Edge (например, для всех /apps, /apis, /apiproducts и т. д.), а также для отдельных артефактов (например, для определенного приложения, прокси-сервера API или продукта API), – это GET, PUT и DELETE.

GET позволяет пользователям просматривать любые API, включая файлы конфигурации прокси-сервера API, связанные правила, файлы JavaScript, XSLT и т. д. Разрешение PUT для API позволяет разработчикам создавать, изменять, импортировать, экспортировать, развертывать и отменять развертывание прокси-серверов API.

Атрибут path указывает на объект, для которого вы задаете разрешения. Например, /applications, /apps, /apiproducts, /developers или /reports.

curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'

Создание роли: тестирование

Создайте роль testing, чтобы инженеры по качеству могли просматривать прокси-серверы API и их содержимое (включая, например, правила).

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'

Добавьте разрешения для роли тестировщика

GET позволяет пользователям просматривать любые API, включая их файлы конфигурации, а также любые связанные правила, файлы JavaScript, XSLT и т. д. Добавив это разрешение к роли testing, мы позволим инженерам по качеству просматривать содержимое API, которые они тестируют. Однако пользователи с этой ролью не смогут создавать, изменять, импортировать, экспортировать, развертывать и отменять развертывание прокси-серверов API.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'

Для локальной установки Edge минимальный набор разрешений, которые необходимо установить, чтобы пользователь мог войти в пользовательский интерфейс Edge:

{"path" : "/","permissions" : [ "get" ]}
{"path" : "/*","permissions" : [ ]}
{"path" : "/environments","permissions" : [ "get" ]}
{"path" : "/userroles","permissions" : [ "get" ]}

Чтобы задать эти разрешения, используйте следующую команду cURL:

curl -H "Content-Type:application/json" -u email:password \
-X POST \
http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions  \
-d '{
 "resourcePermission" : [ 
   {
    "path" : "/",
    "permissions" : [ "get" ]
   }, 
{
    "path" : "/*",
    "permissions" : []
   },
{
    "path" : "/environments",
    "permissions" : [ "get" ]
   },
   {
    "path" : "/userroles",
    "permissions" : [ "get"]
   }
  ]
}'

где <ms-IP> – IP-адрес или DNS-имя сервера управления Edge.

Как добавить пользователя в роль тестирования

Чтобы назначить пользователю роль, выполните следующие действия:

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'

Просмотр API от лица пользователя

Выдайте себя за пользователя и отправьте запрос в API Services, чтобы посмотреть прокси-серверы API. Пользователь должен иметь возможность просматривать API и их содержимое.
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies

Создание API от имени пользователя с ролью тестировщика

Выполните вход от имени пользователя и отправьте запрос в API Services, чтобы создать прокси-сервер API. Запрос будет отклонен API Services, поскольку роль testing не позволяет пользователю создавать API.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

Добавить пользователя в роль разработчика

Теперь предоставьте пользователю роль development.

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'

Создание API от имени пользователя с ролью разработчика

Выдайте себя за пользователя и повторите запрос к платформе API, чтобы создать прокси-сервер API. Запрос будет выполнен успешно, поскольку роль development позволяет пользователю создавать API.

$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'

Как получить роли пользователя

Администратор организации может в любое время посмотреть список ролей пользователя (во всех организациях):

$ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles