Внедрение системы контроля доступа на основе ролей (RBAC) в ERP-систему
ERP
RBAC
Безопасность
Расширение существующей системы аутентификации путем внедрения более детализированного контроля доступа на основе ролей (RBAC) позволяет гибко настраивать права доступа для различных групп пользователей.
Ключевые преимущества RBAC
- Упрощение управления правами доступа
- Гибкая настройка ролей для разных пользовательских групп
- Повышение безопасности системы
Архитектурные компоненты
- Таблица пользователей
- Таблица ролей
- Таблица разрешений
SQL-скрипт для создания таблиц RBAC
CREATE TABLE permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE role_permissions (
id INT AUTO_INCREMENT PRIMARY KEY,
role_id INT NOT NULL,
permission_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (role_id) REFERENCES roles(id) ON DELETE CASCADE,
FOREIGN KEY (permission_id) REFERENCES permissions(id) ON DELETE CASCADE,
UNIQUE KEY unique_role_permission (role_id, permission_id)
);
INSERT INTO permissions (name, description) VALUES
('view_users', 'Просмотр списка пользователей'),
('edit_users', 'Редактирование пользователей'),
('delete_users', 'Удаление пользователей'),
('view_reports', 'Просмотр отчетов'),
('generate_reports', 'Генерация отчетов'),
('manage_roles', 'Управление ролями'),
('access_admin_panel', 'Доступ к админ панели');
Модели Kohana для RBAC
Модель Permission
class Model_Permission extends ORM {
protected $_table_name = 'permissions';
protected $_has_many = array(
'role_permissions' => array('foreign_key' => 'permission_id'),
);
}
Модель RolePermission
class Model_RolePermission extends ORM {
protected $_table_name = 'role_permissions';
protected $_belongs_to = array(
'role' => array('foreign_key' => 'role_id'),
'permission' => array('foreign_key' => 'permission_id'),
);
}
Логика проверки разрешений
Контроллер с проверкой прав
public function action_view_reports() {
if (!$this->current_user->has_permission('view_reports')) {
throw new HTTP_Exception_403('Доступ запрещен');
}
// Логика отображения отчетов
$reports = Model_Report::get_all();
$this->response->body(View::factory('reports/view')->set('reports', $reports));
}
Метод проверки разрешений
public function has_permission($permission_name) {
$user_roles = $this->roles;
foreach ($user_roles as $role) {
if ($role->has_permission($permission_name)) {
return TRUE;
}
}
return FALSE;
}
Интерфейс управления ролями и разрешениями
Создание роли
Добавьте новую роль с уникальным названием и описанием.
Назначение разрешений
Выберите разрешения для конкретной роли.
Управление пользователями
Назначайте роли пользователям для контроля доступа.
Таблица разрешений
| Разрешение | Описание | Действия |
|---|---|---|
| view_users | Просмотр списка пользователей | |
| edit_users | Редактирование пользователей | |
| manage_roles | Управление ролями |
Выводы и рекомендации
Преимущества внедрения RBAC
- Упрощение управления правами доступа для администраторов
- Повышение безопасности системы за счет детального контроля
- Гибкая настройка доступа для разных пользовательских групп
Рекомендации по реализации
- Используйте существующие таблицы пользователей и ролей
- Обеспечьте полную интеграцию с текущими контроллерами
- Проведите обучение пользователей и администраторов