Создание ролей с помощью API

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

В этой теме рассматривается создание пользовательских ролей и назначение ролей пользователям через API управления. Мы также показываем, как тестировать назначение ролей через API. (Обзор пользовательских ролей см. в разделе « Создание пользовательских ролей в пользовательском интерфейсе» .)

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

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

Вы также можете устанавливать права доступа для конкретных объектов. Например:

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

Права доступа, которые вы устанавливаете с помощью API:

  • Предоставьте пользователям с заданной ролью возможность выполнять вызовы API управления в соответствии с их правами доступа. Например, если роль разрешает доступ только для чтения ко всем API-прокси, пользователь с этой ролью сможет использовать API «Список API-прокси» , но не API «Создать API-прокси» .
  • Определите, что пользователи с заданной ролью могут видеть и делать в пользовательском интерфейсе управления. Например, доступ только для чтения к API-прокси отключает доступ к кнопкам «+API-прокси» и «Удалить» на странице «API-прокси».

Чтобы увидеть ресурсы и пути, для которых можно устанавливать права доступа, обратитесь к справочнику по API управления и ознакомьтесь с различными URL-адресами ресурсов.

Полную справочную информацию по управлению ролями см. в API ролей пользователей .

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

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

В настройках прав доступа метод PUT также выполняет функцию метода POST.

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

  • Разместить на /developers
  • GET на /developers/*

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

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

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

Создайте новую пользовательскую роль под названием «разработка».

Создайте роль «разработчик», чтобы дать разработчикам возможность просматривать, создавать и обновлять 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" ]}'

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

Создайте роль «тестировщик», чтобы инженеры по качеству могли просматривать прокси-серверы 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-файлы и так далее. Добавив это разрешение к роли «тестировщик», мы даем возможность инженерам по качеству просматривать содержимое тестируемых ими 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 Management Server.

Добавить пользователя в роль тестирования

Для присвоения пользователю роли:

$ 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-сервисам для просмотра 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"}'

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

Теперь назначьте пользователю роль «разработчик».

$ 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. Запрос будет успешным, поскольку роль «разработчик» позволяет пользователю создавать 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