Настройки доступа IAM

Путь расположения

Путь в сборочном каталоге

/era_env/priv/metadata/iam_all.json

Обзор

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

Состав правил доступа пополняет индивидуальные настройки доступа конкретных солюшенов, внесенные в ассет solution/iam.json солюшена.

Формат:
[
  {
    "access": "public" | "authenticated" | "role",
    "role": "ROLE_NAME",
    "endpoints": [
       {
        "url": str (например "/rest/v1/iam/users"),
        "methods: array<str> (например, ["GET", "POST", "LOOKUP"])
       },
       ...
    ]
  },
  ...
]

Для каждого элемента списка указывается уровень доступа (поле "access"), значения:

  • public – endpoint и методы, доступные без авторизации.

  • authenticated – endpoint и методы, доступные любому авторизованному пользователю.

  • role – endpoint и методы, доступные пользователям, имеющим конкретную роль. Дополнительно указывается роль (поле "role"), роль задается произвольно. Указанные роли будут доступны для назначения пользователям и ролевым приложениям.

Каждый элемент содержит список разрешенных endpoint (поле "endpoints"), каждый endpoint в списке указан в виде объекта с полями:

  • "url" – относительный путь к endpoint, может содержать wildcards: * – произвольное содержание отрезка пути, например /abc/*/def, ** – произвольное окончание пути, например /abc/*.

  • "methods" – набор методов, разрешенных для данного endpoint. В качестве методов могут быть указаны и HTTP-verbs ("GET"), и кастомные методы ("LOOKUP"), и wildcard ("*"). Все методы перечисляются заглавными буквами.

Все указываемые здесь методы и endpoints устанавливают фильтр на полное множество реализованных в системе REST-API методов и endpoints. Несуществующие методы и endpoints игнорируются.

Пример

  • Открывает публичный доступ к ресурсам и операциям просмотра и создания сессии (авторизации).

  • Открывает доступ всем авторизованным пользователям к управлению сессией и просмотру ролей пользователей.

  • Создает для всех доменов роль admin, открывая для нее все методы всех endpoint-ов.

Пример:
[
  {
    "access": "public",
    "endpoints": [
      { "url": "/rest/v1/public/version", "methods": ["GET","OPTIONS"] },
      { "url": "/rest/v1/public/resources", "methods": ["GET","OPTIONS"] },
      { "url": "/rest/v1/public/resources/*", "methods": ["GET","OPTIONS"] },
      { "url": "/rest/v1/iam/sessions", "methods": ["POST","OPTIONS"] },
      { "url": "/rest/v1/iam/sessions/current", "methods": ["GET","OPTIONS"] }
    ]
  },
  {
    "access": "authenticated",
    "endpoints": [
      { "url": "/rest/v1/iam/sessions/current", "methods": ["GET","POST","DELETE","OPTIONS"] },
      { "url": "/rest/v1/iam/users/current", "methods": ["GET","OPTIONS"] },
      { "url": "/rest/v1/iam/roles", "methods": ["GET","OPTIONS"] }
    ]
  },
  {
    "access": "role",
    "role": "admin",
    "endpoints": [
      { "url": "/rest/**", "methods": ["*"] }
    ]
  }
]