Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Как спрятать список пользователей/паролей
Как спрятать список пользователей/паролей
Если вы переименуете таблицу USERS и заново создадите USERS как просмотр переименованной таблицы, вы можете получить лучший из миров. У пользователей будет возможность изменять свои собственные пароли, а полный список пользователей и паролей будет спрятан для PUBLIC. Каждый пользователь, не являющийся SYSDBA, будет видеть только одну запись из security.fdb (или isc4.gdb, если у вас сервер версии 1.0.x). Новые структуры в security.fdb будут похожи на следующую схему:
/* Copyright Ivan Prenosil 2002-2004 */
CONNECT 'C:Program FilesFirebirdFirebird_1_5security.fdb'
USER 'SYSDBA' PASSWORD 'masterkey';
/** Переименование существующей таблицы USERS в USERS2. **/
CREATE TABLE USERS2 (
USER_NAME USER_NAME,
SYS_USER_NAME USER_NAME,
GROUP_NAME USER_NAME,
UID UID,
GID GID,
PASSWD PASSWD,
PRIVILEGE PRIVILEGE,
COMMENT COMMENT,
FIRST_NAME NAME_PART,
MIDDLE_NAME NAME_PART,
LAST_NAME NAME_PART,
FULL_NAME COMPUTED BY (first_name || _UNICODE_FSS ''II middle_name || _UNICODE_FSS ' ' || last_name ) ) ;
COMMIT;
INSERT INTO USERS2
(USER_NAME, SYS_USER_NAME, GROUP_NAME,
UID, GID, PASSWD, PRIVILEGE, COMMENT,
EIRST_NAME, MIDDLE_NAME, LAST_NAME)
SELECT
USER_NAME, SYS_USER_NAME, GROUP_NAME,
UID, GID, PASSWD, PRIVILEGE, COMMENT,
EIRST_NAME, MI DDLE_NAME, LAST_NAME FROM USERS;
COMMIT;
/* */
DROP TABLE USERS;
/* */
CREATE UNIQUE INDEX USER_NAME_INDEX2 ON USERS2(USER_NAME);
/** Создание просмотра, который будет использован вместо первоначальной таблицы USERS. **/
CREATE VIEW USERS AS
SELECT *
FROM USERS2
WHERE USER = ''
OR USER = 'SYSDBA'
OR USER = USER_NAME;
/** Полномочия **/
GRANT SELECT ON USERS TO PUBLIC;
GRANT UPDATE (PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME)
ON USERS
TO PUBLIC;
Реальная таблица USERS2 видима только для SYSDBA. Следующее условие
USER = USER_NAME
гарантирует, что каждый пользователь видит только свою собственную запись. Условие
USER = 'SYSDBA'
гарантирует, что SYSDBA может видеть все записи. Условие
USER = ' '
является важным, потому что переменные USER и CURRENT_USER содержат пустые строки в процессе проверки пароля.
! ! !
ПРИМЕЧАНИЕ. К сожалению, две следующие техники не могут быть реализованы в сервере Firebird 1.5. Они используют запись в файлы протоколов. Улучшения безопасности, выполненные в версии 1.5, означают, что подпрограмма идентификации пользователя теперь выполняется в транзакции только для чтения, следовательно, невозможно выполнять запись в протокол! Похожая схема может быть реализована путем делегирования функции протоколирования внешним функциям.
. ! .
- Как спрятать список пользователей
- Организация пользователей в группы с помощью ролей
- Настройка учетных записей пользователей
- Новое имя базы данных пользователей
- Глава 28 Идентификация и аутентификация пользователей
- Неквалифицированные действия пользователей
- Настройка доступа пользователей к рабочей книге
- Список основных источников информации
- Список литературы
- Информация для пользователей Windows ХР
- 3 Учетные записи пользователей
- Список использованной литературы