Настройка роли пользователя VDI-машины

Для рядового пользователя VDI-машины была разработана роль vdi-user. Данная роль предназначена только для выполнения базовых операций с машиной, таких как остановка, запуск, подключение через клиент и веб интерфейс. Пользователь с ролью vdi-user получает доступ только к тем машинам, на которые он был назначен.

Шаги по настройке:

  1. Установите модуль TIONIX.Approvie:

    dnf -y install python3-tionix_approvie
    
  2. Создайте конфигурационный файл /etc/tionix/approvie.yaml:

    identity:
        url: "http://controller:5000"
        user: "admin"
        password: "password"
        domain: "Default"
        project: "admin"
    
    filter:
        blocked_roles: ["vdi-user"]
    
    policy:
        supported_methods: ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE"]
    
    common:
        debug: false
    
  3. Настройте сервис Cinder. Создайте файл политик /etc/cinder/policy.yaml с параметрами, указанными в /etc/cinder/policy.yaml.example. Укажите в конфигурационном файле /etc/cinder/cinder.conf путь до файла:

    [oslo_policy]
    policy_file = policy.yaml
    
  4. Настройте сервис Glance. Создайте файл политик /etc/glance/policy.yaml с параметрами, указанными в /etc/glance/policy.yaml.example. Укажите в конфигурационном файле /etc/glance/glance-api.conf путь до файла:

    [oslo_policy]
    policy_file = policy.yaml
    
  5. Настройте сервис Nova. Создайте файл политик /etc/nova/policy.yaml с параметрами, указанными в /etc/nova/policy.yaml.example. Укажите в конфигурационном файле /etc/nova/nova.conf путь до файла:

    [oslo_policy]
    policy_file = policy.yaml
    
  6. Настройте сервис Neutron. Создайте файл политик /etc/neutron/policy.yaml с параметрами, указанными в /etc/neutron/policy.yaml.example. Укажите в конфигурационном файле /etc/neutron/neutron.conf путь до файла:

    [oslo_policy]
    policy_file = policy.yaml
    
  7. Настройте сервис Keystone. Создайте файл политик /etc/keystone/policy.yaml с параметрами, указанными в /etc/keystone/policy.yaml.example. Укажите в конфигурационном файле /etc/keystone/keystone.conf:

    [oslo_policy]
    policy_file = policy.yaml
    
    [resource]
    admin_project_name = admin
    
  8. Создайте файлы политик:

    • /etc/tionix/cinder_policy.yaml;
    • /etc/tionix/glance_policy.yaml;
    • /etc/tionix/keystone_policy.yaml;
    • /etc/tionix/neutron_policy.yaml;
    • /etc/tionix/nova_policy.yaml.

    Данные файлы должны содержать параметры, которые указаны в соответствующих файлах по умолчанию с окончанием example.

  9. Перезапустите сервисы:

    systemctl restart openstack-cinder-api.service
    systemctl restart openstack-glance-api.service
    systemctl restart openstack-nova-api.service
    systemctl restart openstack-nova-metadata-api.service
    systemctl restart openstack-nova-os-compute-api.service
    systemctl restart neutron-server.service
    apachectl stop
    apachectl start
    
  10. Запустите сервисы модуля TIONIX.Approvie:

    systemctl enable tionix-{keystone,cinder,glance,nova,neutron}-rbac.service
    systemctl start tionix-{keystone,cinder,glance,nova,neutron}-rbac.service
    
  11. Настройте TIONIX.Client. В файле конфигурации /etc/tionix/tionix.yaml добавьте параметр BLOCKED_ROLES:

    BLOCKED_ROLES: ['vdi-user']
    

    Для применения настройки перезапустите сервисы TIONIX:

    systemctl restart tionix-*
    
  12. Настройте TIONIX.Dashboard. Подключите служебный модуль в /etc/openstack-dashboard/local_settings:

    AUTHENTICATION_BACKENDS = [
        'tionix_dashboard.auth.backend.TionixKeystoneBackend'
    ]
    

    Укажите в файле конфигурации /etc/tionix/dashboard.yaml:

    BLOCKED_ROLES: ['openstack.roles.vdi-user']
    

    Для применения настроек перезапустите веб-сервер и службу кэширования:

    systemctl restart httpd
    systemctl restart memcached
    
  13. Создайте роль vdi-user:

    openstack role create vdi-user
    

Важно

Для добавления пользователей из каталога Active Directory используйте:

openstack role add --user-domain <ad_domain> --project-domain <ad_domain> --project <project_name> --user <ad_username> vdi-user

Где:

  • <ad_domain> - имя домена Active Directory;
  • <project_name> - имя проекта, в который будут добавлены пользователи;
  • <ad_username> - имя пользователя в Active Directory.