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

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

Разрешительная система ACL позволяет выполнять тонкую настройку операций, доступных для любого пользователя или группы пользователей. При каждой операции формируется запрос авторизации, который проверяется на соответствие зарегистрированному набору правил 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: пользователи группы 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.

Использование правил ACL для реализации роли разработчика ВМ#

Для реализации роли разработчика ВМ необходимо выполнить следующие действия:

  1. Для группы, в которую входит пользователь, предоставить полномочия USE в отношении следующих ресурсов виртуализации: хранилища и виртуальные сети.

    Для этого создать соответствующее правило ACL командой:

    ..code-block:: badh

    oneacl create «@<идентификатор_группы> DATASTORE+NET /* USE»

  2. Пользователю предоставить полномочия CREATE и MANAGE в отношении шаблонов ВМ. Для этого создать соответствующее правило ACL командой:

    oneacl create "#<идентификатор_пользователя> TEMPLATE/* CREATE+MANAGE"
    

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

  1. Пользователю предоставить полномочия MANAGE в отношении серверов виртуализации. Для этого создать соответствующее правило ACL командой:

    oneacl create "#<идентификатор_пользователя> HOST /* MANAGE"
    
  2. Пользователю предоставить полномочия CREATE в отношении остальных ресурсов виртуализации. Для этого создать соответствующее правило ACL командой:

oneacl create "#<идентификатор_пользователя> VM+IMAGE+TEMPLATE+DOCUMENT+SECGROUP+VROUTER+VMGROUP/* CREATE"