Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Доступ!  [new]
Alexandr Minzer
Member

Откуда:
Сообщений: 99
в своих CSP приложениях "заставляем работать" следующим образом:
<SCRIPT language="JavaScript">
var fun=setTimeout("ReCon();",600000);
function ReCon()
{
	var rez=#server(Lib.Utils.ReCon())#;
	var fun=setTimeout("ReCon();",600000);
	return true;
}
</SCRIPT>
Метод ReCon() возвращает, например, 1.
11 май 07, 08:25    [4123782]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
aleshap
Member

Откуда: Москва
Сообщений: 24
Можно использовать совместно куки и сессии, тогда не надо постоянно поддерживать их жизнь.
11 май 07, 09:08    [4123871]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13043
aleshap
Можно использовать совместно куки и сессии

Примерчик с куками можете подогнать?

С куками проблема... Пользователь их может отключить... :(
11 май 07, 10:03    [4124082]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Ptn
Guest
krvsa
Наши пользователи очень любят зайти в приложение и ничего в нем не делать... Таймаут кончается... Сессия помирает... :(
Потом они загораются желанием поработать но уже поздно. :)
Вот отсюда ноги и растут...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT


Дык про то и речь - почему приложение себя так ведет ? Оператору предположим делать нечего - а приложению ? Даже TCP-приложение "поддерживают коннект" - не так ли.
11 май 07, 11:59    [4124972]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
VadimF
Member

Откуда: InterSystems Russia
Сообщений: 512
Хотел бы пару моментов написать, но не про сессии (поведение, которых, кстати, изменилось в Cache' 5.1. по сравнению с более ранними версиями), а про хранения пользователей, роли пользователей, их привелегии и т.д.

Для хранения информации о пользователях рекомендую использовать стандартные возможности Cache' 5.1, 5.2, 2007.1, ...

Нужно завести роли: пользователь, студент, преподаватель, декан, администратор.

Далее можно создать набор ресурсов Вашего приложения в Портале Управления Системой.
Это описано в документации Cache'.

Назначить в портале права ролей пользователей на эти ресурсы.

В Вашем приложении Вы можете в определенных местах (например, где формируется меню доступа к страницам) проверять есть ли права у пользователя:

$SYSTEM.Security.Check("Teacher Resource", "WRITE")

Если право есть, отрисовывать или давать возможность перехода на страницу по ссылке.
Если нет - не пускать.

То есть можно воспользоваться готовой системой безопасности Cache'.

В ZEN все это сделано автоматически. Можно ставить в соответствие ресурс и компонент (например, пункт меню).
Если есть возможность лучше делать Web-приложение на ZEN, но для этого нужно иметь Cache' 2007.1.


Вадим
11 май 07, 15:38    [4126763]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
oxcom
Member

Откуда: >>>REAL WORLD<<<
Сообщений: 59
Я так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?
14 май 07, 07:49    [4132050]     Ответить | Цитировать Сообщить модератору
 привет!  [new]
Jannet
Member

Откуда:
Сообщений: 5
У нас темы дипломных проектов схожи! у меня тоже сайт про униветситет! ты не мог бы выслать мне свой,jakonda666@mail.ru? я могу своим поделиться.....не могу администрирование сделать никак(((((
14 май 07, 14:42    [4134352]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3747
автор
Я так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?

Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.
Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена?
14 май 07, 15:13    [4134604]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Alesha
Member

Откуда: Москва
Сообщений: 53
krvsa
aleshap
Можно использовать совместно куки и сессии

С куками проблема... Пользователь их может отключить... :(

Отключить можно все... и куки и скрипты и flash... можно и браузер удалить и винду...
Думаю это уже проблема пользователей, другое дело, то что их об этом необходимо оповещать.
14 май 07, 16:31    [4135175]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
VadimF
Member

Откуда: InterSystems Russia
Сообщений: 512
Блок А.Н.
автор
Я так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять?


Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.
Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена?


Не совсем понимаю, почему?
На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам.

В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей.


Другое дело, что если говорить про создания Web-приложения, то Вы правы, более правильно разграничить доступ на уровне приложения к фрагментам Web-приложения.

С уважением, Вадим
14 май 07, 23:56    [4136551]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3747
VadimF

Блок А.Н.
Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите.

На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам.

Ага, соврал :-(.
Хотел сказать, что нельзя таблицам присвоить имя ресурса.
Ведь для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?
15 май 07, 05:08    [4136710]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
oxcom
Member

Откуда: >>>REAL WORLD<<<
Сообщений: 59
Выкладываю работу!
Может поможет немного разобраться!

Файл Diplom.xml импортировать локально в Cache 5
Папку "Images" скопировать на диск C:\

К сообщению приложен файл (Diplom.rar - 7Kb) cкачать
15 май 07, 09:42    [4137105]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5583

Hi!

VadimF

То есть можно воспользоваться готовой системой безопасности Cache'.

Для диплома, безусловно, можно. Но в боевой системе все не так просто.

1. Если что-то работало в предыдущей версии Cache, то оно может не заработать в следующей
или будет работать по-другому. Cache весьма быстро развивается и меняется. Для будущих
заказчиков это показатель крутизны, а для существующих - проблема. Поскольку разработчикам
и тестерам нужно забивать в план работ довольно серъезные сроки на перенос системы на другую
версию Cache. И это нередко останавливает от попыток использовать что-то готовое крайне быстро
эволюционирующее. Выше крыши хватает мелкософта, который вынуждает всех конкурентов
тратить время не на развитие прикладных систем, а на постоянный перенос их с одной версии
винды на другую.

2. На одном сервере может крутиться несколько баз с весьма разной архитектурой безопасности.
А пользователи и привилегии в Cache назначаются на сервер в целом, а не на конкретную базу с конкретным
приложением. Одно дело, когда есть DBA, который отвечает за функционирование сервера в целом,
создание бекапов и т.д., но ему нет дела до особенностей бизнес-логики конкретного приложения,
а совсем другое, когда администратор безопасности именно конкретного приложения добавляет/удаляет
пользователей, раздает доступ на ресурсы в соответствии с бизнес-логикой приложения, но ему нет
дела до технических проблем, бекапов, производительности, наличия места на дисках, знания, что
в каких таблицах находится и т.д.

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

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

Или, к примеру, стандартная процедура апгрейда приложения. Делается бекап боевой базы с первого
сервера, восстанавливается на физически отдельном втором тестовом сервере (где может стоять другая
версия Cache), либо если боевой сервер можно остановить, то в него втыкается винчестер, туда
копируется CACHE.DAT и этот винчестер переносится на второй сервер. Понятно, что копировать
базу по сети бессмысленно. На тестовом сервере ставится новая версия приложения, проверяется
и отрабатывается процедура перехода. Затем она воспроизводится на боевом сервере (либо просто
юзеров переключают с первого сервера на второй). Вопрос: как перенести информацию о 500
пользователях, привилегиях и правах доступа с первого сервера на второй? Попытка просто
скопировать базы CACHESYS и CACHEAUDIT привела к неработоспособности второго
сервера из-за того, что он оказался в другом Windows домене. Т.е. завязка на аутентификацю
операционной системы или Kerberos - рискованная штука. Бэкап базы трехлетней давности может
запросто не подняться, если одновременно с ним не поднять бэкап на контроллере домена.

4. Если разграничение доступа является существенной частью бизнес-логики приложения, то вероятнее всего
будут и особые требования к функционалу системы безопасности. Казалось бы, вполне примитивное
требование, что рядовой пользователь, не являясь админом, должен иметь возможность поменять пароль
сам себе. В то-же время, админ не должен знать пароли пользователей и сам их менять. Разве что задавать
начальный пароль пользователю при регистрации в системе нового пользователя, но должен поставить
галочку "Требовать от пользователя смены своего пароля при первом входе в систему".
Тем не менее, мне не удалось найти такой простой возможности "в готовой" системе безопасности Cache.

То есть, если заказчик такую функцию потребует, то останется только сказать: "Обращайтесь к Интерсистемсу,
и тогда, возможно, когда-нибудь..."

А кроме такой мелочи, могут быть и более интересные вещи. У нас, к примеру иерархическая система
групп (ролей). В состав группы могут входить другие группы и пользователи, в то-же время пользователь
и группа может входить в состав нескольких групп. Кроме разрешений бывают еще и запреты. Если у группы
"А" есть разрешение на ресурс "1" и ресурс "2", а у группы "Б" есть запрет на ресурс "2" (про ресурс "1"
ничего не сказано), то пользователи, входящие только в группу "А" получат разрешение на оба ресурса,
входящие только в группу "Б" - ни на один ресурс, входящие и в группу "А" и в группу "Б" - разрешение
только на ресурс "1". Когда в системе под 500 пользователей, гибкость и удобство системы разграничения
доступа, а также пользовательский интерфейс имеют значение. Попробуйте реализовать Drag & Drop
пользователей из группы в группу на WEB - интерфейсе встроенной в Cache системы безопасности.
Вообще, перевод администрирования Cache на CSP - не самое удобное IMHO с точки зрения возможностей
пользовательского интерфейса решение. Интерфейс можно улучшить, если сделать навороченный апплет
на яве, но тогда чем он будет отличаться от старого доброго "толстого" клиента? Разве что
кроссплатформенностью.

С каждым пользователем и группой может быть ассоциирована масса информации и индивидуальных настроек
внешнего вида приложения, а не только логин или пароль. Например, рабочий телефон, e-mail, фотография
и т.д. Часть этой информации может поменять только администратор, часть - сам пользователь.

Да и создание/удаление/перемещение из группы в группу пользователя может потребовать выполнения
определенных операций. К примеру, удаление пользователя, это не DELETE FROM. Просто помечается,
что пользователь больше не может входить в систему, часть информации удаляется (например личные
почтовые ящики вместе с сообщениями), но основная идентифицирующая часть остается. Дело в том,
что ведется журнал, и может возникнуть вопрос, "кто менял этот документ три года назад" и тогда
нужно получить информацию по пользователю, даже если он пару лет назад уволился и с тех пор
доступа в систему не имеет.

Возможности перехватить операцию встроенной системы безопасности Cache по созданию/удалению/и т.д.
пользователей и выполнить какие-то собственные действия не имеется. Раньше (в Cache 5.0) было можно
перехватить логин к ODBC, выполнить собственные проверки и даже заменить имя пользователя. В частности,
это давало возможность при подключении пользователя задавать логин и пароль не тот, что указан в SQL-менеджере,
а тот, что указан в моем приложении. После проверки пароля, моя функция заменяет имя на _SYSTEM
(или любое другое) и с точки зрения Cache пользователь выглядит, как _SYSTEM и для него используются
гранты, заданные для _SYSTEM, а с точки зрения моего приложения он выглядит как мой пользователь.
То есть, можно было задействовать как встроенную систему безопасности SQL так и мою логику,
сочетая их возможности. Сейчас (Cache 5.2) возможность переопределения функции логина пропала. См. пункт 1.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73

Posted via ActualForum NNTP Server 1.4

20 май 07, 04:56    [4160076]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5583

Hi!

VadimF

В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей.

Угу. И сильно подозреваю, что по своим возможностям не дотянет до того,
что я сделал еще 6 лет назад.

Учитывая, что логика разграничения доступа сильно зависит от специфики приложения,
а реализовать ее на триггерах - раз плюнуть. Допустим, есть у нас дерево папок. То есть
в таблице имеется поле Parent с внешним ключем родительской папки. Перенос папки
из одной родительской в другую с точки зрения сервера это UPDATE на запись
переносимой папки с изменением Parent. А вот с точки зрения юзера переносимая папка
не меняется, зато производится удаление из старой родительской и вставка в новую родительскую.
Юзер не оперирует терминами SQL - операций. Ему надо не только право на изменение
атрибутов и удаление папки, но и отдельно право на создание/удаление в ней дочерних подпапок.
____________________________
С уважением, Лисеев Дмитрий.
http://private.peterlink.ru/dimik/
PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73

Posted via ActualForum NNTP Server 1.4

20 май 07, 04:56    [4160077]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
u78
Member

Откуда: Москва
Сообщений: 559
krvsa
А я что-то не очень доверяю сессиям... :( Т.к. они "исчезают" через некоторый таймаут...

некий тайм аут можно изменить, я у себя поставил 28000 секунд и красота наступила.
а сессию закрывать при наступлении события onunload на страничке.
24 май 07, 22:34    [4182514]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
VadimF
Member

Откуда: InterSystems Russia
Сообщений: 512
Дмитрий, не могу сейчас, к сожалению, подробно ответить на Ваше сообщение.
Отмечу только один момент:

Dmitry V. Liseev

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



%SYS>D ^SECURITY
 
1) User setup
2) Role setup
3) Service setup
4) Resource setup
5) Application setup
6) Auditing setup
7) Domain setup
8) SSL configuration setup
9) System parameter setup
10) Exit
 
Option? 9
 
1) Edit system options
2) Edit authentication options
3) Edit LDAP options
4) Display system options
5) Export All Security settings
6) Import All Security settings
7) Exit
 
Option? 5

С уважением, Вадим
25 май 07, 00:21    [4182740]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Доступ!  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3747
Блок А.Н.
для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?
Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы?
21 фев 18, 12:57    [21207726]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2537
Блок А.Н.
Блок А.Н.
для ресурса в каше 5можно проверить, доступен ли он
$System.Security.Check
А как это сделать для таблицы?
Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы?
Можешь уточнить, какие разрешения для таблицы?
В какой момент, и для кого нужно проверять разрешения?
21 фев 18, 13:00    [21207734]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3747
DAiMor,

например, разрешения на вставку или удаление строк в некоторую таблицу. Я понимаю, что там все может быть гораздо тоньше, но мне достаточно этого.
21 фев 18, 13:39    [21207921]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2537
$system.SQL.CheckPriv()
Do $SYSTEM.SQL.CheckPriv($username,"1,HHR.ProductionValues","s,i,u,d","USER",1)
Do $SYSTEM.SQL.CheckPriv("Miranda","3,SQLUser.Person","s","PRODUCT",0)
21 фев 18, 15:46    [21208610]     Ответить | Цитировать Сообщить модератору
 Re: Доступ!  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3747
DAiMor,

На этот раз, хотя я делаю это не на Каше 5, а аж на 2010.2, в которой эти возможности уже должны быть, удача оказалась не на моей стороне. Сервер собран с какой-то странной версией класса %SYSTEM.SQL, в которой этих методов нет. Попробовал всех перехитрить и посмотреть, как компилируется EmbeddedSQL, но оказалось, что ESQL не использует безопасность.
Но буду иметь в виду, спасибо :-)
21 фев 18, 21:19    [21209785]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить