Управление правилами ACL#

Общие сведения#

Разрешительная система ACL позволяет выполнять тонкую настройку операций, доступных для любого пользователя или группы пользователей. При каждой операции формируется запрос авторизации, который проверяется на соответствие зарегистрированному набору правил ACL. После проверки служба сервера управления ПВ (служба oned) может предоставить доступ или отклонить запрос.

Использование правил ACL позволяет администраторам адаптировать роли пользователей под нужды инфраструктуры. Например, при помощи правил ACL можно создать группу пользователей, которая будет видеть и использовать существующие виртуальные ресурсы, но не сможет создавать новые. Или можно предоставить определенному пользователю полномочия только для управления виртуальными сетями некоторых существующих групп.

Следует иметь в виду, что правила ACL представляют собой сложный механизм управления. В большинстве случаев рекомендуется полагаться на предопределенные разрешения для ресурсов и автоматически созданные правила ACL при создании группы и добавлении физических ресурсов в ВДЦ.

Структура правил ACL#

Правило ACL в общем виде состоит из четырех компонентов, разделенных пробелом:

  1. Компонент User (пользователь) — идентификатор субъекта;

  2. Компонент Resources (ресурсы), состоит из следующих полей:

    • перечень типов ресурсов, разделенных знаком +;

    • знак /;

    • идентификатор объекта.

  3. Компонент Rights (права) — перечень типов полномочий, разделенных знаком +;

  4. Компонент Zone (зона) — идентификатор зоны или перечень идентификаторов зон, в которых действует правило. Этот компонент не обязателен, его можно не указывать, если конфигурация ПВ не настроена для работы в федерации.

В правиле ACL идентификатор субъекта может принимать следующие значения:

  1. #<идентификатор_пользователя> — для отдельного пользователя;

  2. @<идентификатор_группы> — для группы пользователей;

  3. \* — для всех пользователей.

В правиле ACL идентификатор объекта может принимать следующие значения:

  1. %<идентификатор_кластера> — для отдельного кластера;

  2. #<идентификатор_ресурса> — для отдельного облачного ресурса;

  3. @<идентификатор_группы> — для группы которой принадлежит облачный ресурс;

  4. \* — для всех облачных ресурсов.

Примечание

Примеры

  1. Правило предоставляет пользователю с идентификатором 5 право выполнять операции типа USE и MANAGE в отношении всех образов и шаблонов, принадлежащих группе с идентификатором 103:

    #5 IMAGE+TEMPLATE/@103 USE+MANAGE #0
    
  2. Правило позволяет всем пользователям группы с идентификатором 105 создавать новые облачные ресурсы:

    @105 VM+NET+IMAGE+TEMPLATE/\* CREATE
    
  3. Правило позволяет всем пользователям группы с идентификатором 106 применять виртуальную сеть с идентификатором 47. Это означает, что они могут разворачивать ВМ, в которых используется данная сеть

    @106 NET/#47 USE
    
  4. Правило дает полномочия пользователям группы с идентификатором 106 выполнять развертывание ВМ на серверах виртуализации, закрепленных за кластером с идентификатором 100:

    @106 HOST/%100 MANAGE
    

Примечание

Следует обратить внимание на отличие «\* NET/#47 USE» от «\* NET/@47 USE». В первом случае все пользователи могут использовать сеть с идентификатором 47, а во втором все пользователи могут использовать сети, которые принадлежат группе с идентификатором 47.

Предупреждение

В ПВ существует неявное правило ACL: пользователь oneadmin и пользователи группы brestadmins имеют право выполнять любую операцию.

Важный момент при работе с набором правил ACL заключается в том, что каждое правило добавляет новые полномочия, и они не могут ограничивать уже существующие. Таким образом если хотя бы одно из правил предоставляет полномочия, выполнение операции разрешается.

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

Примечание

Пример

Если пользователь с идентификатором 7 состоит в группе с идентификатором 108 и существует правило:

@108 IMAGE/#45 USE+MANAGE

(разрешить всем пользователям группы с идентификатором 108 использовать и управлять образом с идентификатором 45), то правило:

#7 IMAGE/#45 USE

(разрешить только пользователю с идентификатором 7 только использовать образ с идентификатором 45) не имеет смысла.

Управление правилами ACL в интерфейсе командной строки#

Для управления правилами ACL используется инструмент командной строки oneacl. Для просмотра действующих правил, необходимо выполнить команду:

oneacl list

Пример вывода после выполнения команды:

ID   USER   RES_VHNIUTGDCOZSvRMAPt   RID   OPE_UMAC   ZONE
0     @1      V--I-T---O-S----P-      *      ---c      *
1     *       ----------Z-------      *      u---      *
2     *       --------------MA--      *      u---      *
3     @1      -H----------------      *      -m--     #0
4     @1      --N---------------      *      u---     #0
5     @1      -------D----------      *      u---     #0
      ...

В представленной выше таблице содержится следующая информация:

  • в столбце ID указан идентификатор каждого правила;

  • в столбце USER указан идентификатор субъекта;

  • в столбце Resources перечислены сокращения существующих типов ресурсов. В каждом правиле указываются сокращения типов ресурсов, к которым оно применяется:

    • V — VM

    • H — HOST

    • N — NET

    • I — IMAGE

    • U — USER

    • T — TEMPLATE

    • G — GROUP

    • D — DATASTORE

    • C — CLUSTER

    • O — DOCUMENT

    • Z — ZONE

    • S — SECURITY GROUP

    • v — VDC

    • R — VROUTER

    • M — MARKETPLACE

    • A — MARKETPLACEAPP

    • P — VMGROUP

    • t — VNTEMPLATE

  • в столбце RID указан идентификатор объекта;

  • в столбце Operations перечислены сокращения допустимых операций:

    • U — USE

    • M — MANAGE

    • A — ADMIN

    • C — CREATE

  • в столбце Zone указаны зоны, в которых действует правило. Это может быть идентификатор отдельной зоны или всех зон.

Правила с идентификаторами 0 - 5 автоматически создаются при инициализации сервиса ПВ.

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

oneacl create "<текст_правила>"

Для удаления правила ACL, необходимо выполнить команду:

oneacl delete <идентификатор_правила>

Примечание

В качестве идентификатора правила ACL можно указать перечень идентификаторов, разделенных запятыми или диапазон идентификаторов, крайние значения которого разделены двумя точками.

Управление правилами ACL в веб-интерфейсе ПВ#

Для отображения перечня всех правил ACL в веб-интерфейсе ПВ необходимо в меню слева выбрать пункт меню Система — Списки контроля. На открывшейся странице Списки Контроля Доступа будет представлена таблица правил, аналогичная таблице, отображаемой в интерфейсе командной строки после выполнения команды oneacl list:

../../../../_images/access_control_list.1.png

Для добавления нового правила ACL в веб-интерфейсе ПВ необходимо выполнить следующие действия:

  1. В меню слева выбрать пункт меню Система — Списки контроля и на открывшейся странице Списки Контроля Доступа нажать на кнопку +;

  2. На открывшейся странице Создать правило контроля:

    1. В секции Область применения указать субъекта правила;

    2. В секции Затрагиваемые ресурсы выбрать необходимые типы ресурсов;

    3. В секции Подмножество ресурсов указать идентификатор объекта;

    4. В секции Разрешенные действия задать перечень полномочий:

    ../../../../_images/allowing_actions.1.png
  3. На странице Создать правило контроля в поле Строка, задающая правило проверить корректность сформированного правила и нажать на кнопку Создать.

После этого на открывшейся странице Списки Контроля Доступа появится запись о созданном правиле ACL.

Для удаления правила ACL в веб-интерфейсе ПВ необходимо выполнить следующие действия:

  1. В меню слева выбрать пункт меню Система— Списки контроля;

  2. На открывшейся странице Списки Контроля Доступа выбрать правила, которые необходимо удалить и нажать на кнопку Удалить;

  3. В открывшемся окне Удалить нажать на кнопку OK.