Биллинговая система Nodeny
19 Сентября 2024, 23:44:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: второй сателлит  (Прочитано 6073 раз)
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« : 19 Апреля 2012, 10:44:09 »

версия 50.33, добавляю второй сателлит строго по документации. nocheck.pl отработал без ошибок. запускаю noserver, и вот, что в логе:
Код:
DBD::mysql::st execute failed: SELECT command denied to user 'bill_academ'@'172.17.0.20' for table 'x2012x4x19' at nosat.pm line 245.
19.04.2012 12:14:21 Error: SELECT SQL_BUFFER_RESULT uid,uip,now_on,in1,out1 FROM users_trf
да, на эту таблицу у него прав нет (в документации про это тоже ничего не сказано). но и дать права тоже не получается, поскольку названия таблиц динамические. grant для динамических (типа bill.x*) таблиц невозможен. что делать?
запрос из второй строки вручную выполняется без ошибок. в программировании на перле, простите, не силен. поэтому и прошу совета специалистов.

« Последнее редактирование: 19 Апреля 2012, 10:46:04 от dimia » Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #1 : 19 Апреля 2012, 10:53:58 »

Например:
Код:
GRANT SELECT,EXECUTE,UPDATE,INSERT,DELETE ON bill.* TO 'bill_academ'@'172.17.0.20'
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #2 : 19 Апреля 2012, 11:10:33 »

а секурити? сателлит будет находится в сторонней организации, и очень не хотелось бы давать местным админам возможность доступа ко всем пользователям. для этого сателлита создана отдельная вьюха и установлены ограничения:
Код:
CREATE ALGORITHM = UNDEFINED VIEW users_academ AS SELECT * FROM users WHERE grp IN (12);
GRANT INSERT ON `bill`.`dblogin` TO 'bill_academ'@'172.17.0.20';
GRANT INSERT ON `bill`.`sat_log` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`dopdata` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`dop_oldvalues` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`conf_sat` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`nets` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`files` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`users_trf` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`plans2` TO 'bill_academ'@'172.17.0.20';
GRANT SELECT ON `bill`.`users_academ` TO 'bill_academ'@'172.17.0.20';
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #3 : 19 Апреля 2012, 11:25:12 »

Для других: в новых версиях noserver обращается к таблицам детализации трафика, поэтому ему нужно права на чтения этих таблиц, а по умолчанию для удаленных логинов они не выдаются, поэтому в mysql соответствующему логину дать права на  select всех таблиц

это было больше двух лет назад. как сейчас решается эта проблема с дырой в безопасности?
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #4 : 19 Апреля 2012, 12:30:57 »

Ипать.. А дыра где? ))) Ну сделайте такие запросы каждые сутки:
Код:
INSERT INTO mysql.tables_priv
SELECT 'host','db_name','user_name',table_name,'grantor',CURRENT_TIMESTAMP,'select,insert,update','' FROM information_schema.tables
WHERE table_schema='db_name' AND table_name LIKE 'x%'
ON DUPLICATE KEY UPDATE table_priv='select,insert,update',timestamp=CURRENT_TIMESTAMP;
FLUSH PRIVILEGES;
и будет доступ на все таблицы, что начинаются с 'x', можно пойти дальше и сделать REGEXP вместо LIKE
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #5 : 19 Апреля 2012, 13:38:31 »

дыра вот здесь:
"... поэтому в mysql соответствующему логину дать права на  select всех таблиц"

т.е. просто при наличии доступа (взлом или физический доступ) к удаленному сателлиту можно получить доступ ко всем таблицам в базе биллинга. может это и надуманная проблема, но уважаемый Efendy специально уделил этому внимание в документации.

з.ы. забить  Непонимающий
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #6 : 19 Апреля 2012, 14:18:18 »

Простите, а причем тут Efendy к документации MySQL?
В дукументации описан классический вариант, если у Вас другие потребности, то вы должны сами искать пути их решения. Я вам предложил свой вариант, прочитав документацию по MySQL пришел к выводу, что там нельзя давать привилегии по маске, но выход есть, хоть и слегка костыльный.

P.S. Возможно я не понимаю Вашего изложения проблемы. В общем-то Вам решать, подходит ли такой вариант или нет.

P.S.S.
Цитата: dimia
т.е. просто при наличии доступа (взлом или физический доступ) к удаленному сателлиту можно получить доступ ко всем таблицам в базе биллинга.
Тогда поставте сервер в сейф и выдерните из него сетевуху, а запросы делайте доверенным лицом, под конвоем через флешки. И то конвой можно подкупить. Безопасность - иллюзия!
« Последнее редактирование: 19 Апреля 2012, 14:22:48 от 0xbad0c0d3 » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4787



Просмотр профиля
« Ответ #7 : 19 Апреля 2012, 15:48:27 »

Если бы мускул мог давать права по шаблону..., поэтому 0xbad0c0d3  прав. Лично пока мне в голову не приходит другая идея
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #8 : 19 Апреля 2012, 15:54:18 »

Простите, а причем тут Efendy к документации MySQL?
В дукументации описан классический вариант, если у Вас другие потребности, то вы должны сами искать пути их решения. Я вам предложил свой вариант, прочитав документацию по MySQL пришел к выводу, что там нельзя давать привилегии по маске, но выход есть, хоть и слегка костыльный.

P.S. Возможно я не понимаю Вашего изложения проблемы. В общем-то Вам решать, подходит ли такой вариант или нет.

P.S.S.
Цитата: dimia
т.е. просто при наличии доступа (взлом или физический доступ) к удаленному сателлиту можно получить доступ ко всем таблицам в базе биллинга.
Тогда поставте сервер в сейф и выдерните из него сетевуху, а запросы делайте доверенным лицом, под конвоем через флешки. И то конвой можно подкупить. Безопасность - иллюзия!

вероятно Вы не понимаете, а может и я был недостаточно точен. проблема остается открытой. Ваш рекомендация с сейфом - это детский сад. цитата из документации на биллинговую систему NoDeny:
Цитировать
В распределенной системе, состоящей из нескольких разбросанных серверов авторизации и управления, в каждой точке запускается своя копия скрипта(ов). Каждый сателлит соединяется с БД по уникальному логину со своими правами. Уникальность логина рекомендуется автором. Например, автор для своих серверов назначает логины для коннекта к БД в виде bill_название_сервера, например bill_stone либо bill_linkom_gate1 (логин для сервера gate1 сети linkom).

Создав в основной базе данных и базе авторизаций логин для нужного сервера, необходимо дать права на доступ только к необходимым таблицам, не больше, не меньше. Это требование очень важно т.к. базируется на давно известном факте, что любая система может быть взломана. Особенно это актуально в разбросанных по масштабной сети серверах, которыми управляют разные администраторы с разными способностями и лояльностью. Таким образом, потеря контроля над одним сервером не должна быть причиной утечки ВСЕЙ информации, в худшем случае только ее части, которую обслуживает данный сервер.

Последнее требование может быть выполнено только при условии ограниченного доступа логина к таблицам БД. У логина определенного сателлита должны быть следующие привилегии в БД bill:

INSERT в таблицу dblogin
INSERT в таблицу sat_log
SELECT таблицы conf_sat
SELECT таблицы dopdata
SELECT таблицы nets
SELECT таблицы files
SELECT таблицы plans2
SELECT таблицы users_trf
SELECT таблицы со списком абонентов
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #9 : 19 Апреля 2012, 16:00:45 »

Если бы мускул мог давать права по шаблону..., поэтому 0xbad0c0d3  прав. Лично пока мне в голову не приходит другая идея
ну если уж Автор так считает, то будем ставить костыли ... и на этом спасибо!    Улыбающийся


Записан
Andrey Zentavr
NoDeny
Старожил
*

Карма: 29
Offline Offline

Сообщений: 301



Просмотр профиля
« Ответ #10 : 19 Апреля 2012, 17:45:07 »

Как вариант можно было бы данные о трафике писать в другую базу данных и уже делать GRANT на бд.*
Записан
dimia
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 45


Просмотр профиля
« Ответ #11 : 25 Апреля 2012, 15:33:15 »

Всем спасибо за ответы. А к разработчику просьба - исправить документацию биллинга по этой теме.
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!