$$$USR
Назначение
Системная таблица $$$USR
предназначена для хранения информации:
-
о пользователях БД;
-
о ролях;
-
о схемах;
-
о назначении прав доступа пользователей БД к объектам БД;
-
о назначении ролей пользователям БД;
-
о назначении прав доступа пользователей и ролей БД к процедурам БД.
Максимальное количество записей в таблице равно 1024 К (1048576 записей).
Примечание
Число записей в таблице $$$USR
может превышать 65535, но идентификаторы пользователей и схем должны лежать в диапазоне от 1 до 65535.
Схема таблицы
Схема записи таблицы $$$USR
приведена в таблице 57.
Имя столбца | Тип данных | Содержание |
---|---|---|
$$$S31 |
integer |
|
$$$S32 |
integer |
|
$$$S33 |
integer |
|
$$$S34 | char(66) |
|
$$$S35 |
byte(240) |
Для пользователя – описание полномочий пользователя (таблица 59); для остальных типов записей – 18 пробелов, остальные байты – нули. |
Отличительная особенность записи о роли: $$$S31 < 0
, $$$S32 = 0
.
Отличительная особенность назначения прав доступа пользователей БД к объектам БД: $$$S31 > 0
, $$$S32 > 0
.
Отличительная особенность назначения ролей пользователям БД: $$$S31 > 0
($$$S31 = 0
для PUBLIC), $$$S32 < 0
, $$$S33 = 0
.
Отличительная особенность назначения прав доступа пользователей и ролей БД к процедурам БД: $$$S31 > 0
для пользователей, $$$S31 < 0
для ролей и $$$S31 = 0
для PUBLIC, $$$S32 < 0
, $$$S33 > 0
.
Отличительная особенность записи о схемах БД: $$$S31 > 0
, $$$S32 = 0
, GetBits($$$S35, 230, 1, 1) = 1
.
Отличительная особенность записи о пользователях БД: $$$S31 > 0
, $$$S32 = 0
, GetBits($$$S35, 230, 1, 1) = 0
.
Маска | Флаги столбца | Описание |
---|---|---|
pu_CONN | 0x80000000L | Права категории CONNECT. |
pu_RSRC | 0x40000000L | Права категории RESOURCE. |
pu_DBAP | 0x20000000L | Права категории ADMINISTRATOR. |
pt_ALLP | 0x1f800000L | Все права. |
pt_SLCT | 0x10000000L | Права на выборку данных из таблицы. |
pt_INSR | 0x08000000L | Права на добавление в таблицу. |
pt_DELT | 0x04000000L | Права на удаление из таблицы. |
pt_UPDT | 0x02000000L | Права на корректировку таблицы. |
pt_ALTR | 0x01000000L | Права на модификацию схемы таблицы. |
pt_INDX | 0x00800000L | Права на создание индекса. |
pt_EXEC | 0x00400000 | Права на выполнение процедуры. |
pt_EXOW | 0x00200000 | Права на выполнение процедуры от имени владельца процедуры. |
pt_AUDT | 0x00100000 | Служебное значение, используется для аудита операций над представлениями. |
pt_REFR | 0x00080000 | Табличная привилегия REFERENCES. Нужна для создания FOREIGN KEY, ссылающегося на PRIMARY KEY или UNIQUE в таблице, на которую необходима эта привилегия. |
pu_NBKP | 0x00040000 | Отсутствие у пользователя привилегии BACKUP. Привилегия BACKUP есть, если бит сброшен, либо пользователь – тот, который создал базу (обычно SYSTEM). Соответственно, значение всех привилегий на таблицу (pu_ALLP) будет равно 0x1f88. |
Поле | Тип данных | Смещение | Содержание |
---|---|---|---|
Password[18] | L_CHAR | 0 | Пароль пользователя. Хранится в зашифрованном виде. |
Shedule[42] | L_BYTE | 18 | Недельное расписание работы пользователя с дискретностью 30 мин:
Маска задается с 00 час. 00 мин. понедельника. |
LastTimeOut | L_LONG | 60 | Интервал времени (в секундах), который после неудачной попытки соединения с БД будет добавляться к времени, хранимому в LastFalseConnect, для вычисления времени, когда будет разрешено повторное соединение. При первом соединении значение этой переменной равно 0, после неудачных соединений значение меняется в соответствии с заданными значениями переменных LogErrTimeout и LogErrTmCount. |
LastFalseConnect[16] | L_BYTE | 64 | Время (DECIMAL) последнего неудачного соединения с БД. |
CursorRestriction | L_WORD | 80 | Максимальное количество доступных курсоров (подчиненных каналов) в одном сеансе работы с БД. |
ConnectionRestriction | L_WORD | 82 | Максимальное количество доступных каналов в одном сеансе работы с БД. |
StationRestriction | L_WORD | 84 | Зарезервировано. |
IntruderDetection | L_WORD | 86 | Текущее количество неуспешных попыток доступа. |
StartDate[16] | L_BYTE | 88 | Нижняя допустимая дата работы. |
EndDate[16] | L_BYTE | 104 | Верхняя допустимая дата работы. |
Days | L_BYTE | 120 | Маска разрешений работы по дням недели:
Маска задается с понедельника. |
StationRestrict | L_BYTE | 121 | Зарезервировано. |
PassMaxLifeTime | L_DECIMAL | 122 | Время жизни пароля. При превышении этого времени пользователь может подать только одну команду – alter user для смены пароля или после смены пароля администратором. |
LockedLoginDate | LDATETIME | 138 | Дата блокировки пользователя. |
Password2[10] | L_BYTE | 144 | Зарезервировано. |
Priority | L_WORD | 154 | Приоритет пользователя по умолчанию. |
MaxPriority | L_WORD | 156 | Максимально возможный приоритет пользователя. |
PriorityRange | L_WORD | 158 | Минимально возможный приоритет пользователя. |
Audit | tUserAudit | 160 | Описание назначений аудита (таблица 60). |
WSLIMIT | L_LONG | 216 | Размер рабочей области для пользователя. |
MinPasswordLength | L_BYTE | 220 | Минимальная длина пароля пользователя. |
LogErrLimit | L_BYTE | 221 | Количество следующих подряд неудачных попыток соединения с БД, после которых БД блокируется для пользователя. |
LogErrTimeout | L_BYTE | 222 | Интервал времени (в секундах), который будет копироваться в поле LastTimeOut после неудачных соединений с БД, количество которых задано LogErrTmCount. |
LogErrTmCount | L_BYTE | 223 | Количество следующих подряд неудачных попыток соединения с БД, после которых в переменную LastTimeOut будет установлено значение переменной LogErrTimeout. |
TrigFlags | L_BYTE | 224 | Маска наличия триггеров для пользователя:
|
Flags | L_BYTE | 225 | Маска свойств пользователя:
|
PassLifeTime | L_WORD | 226 | Время жизни пароля (в днях). |
wQuantTimeout | L_WORD | 228 | Максимальная длительность выполнения запросов для пользователя (в секундах). |
bSpecFlags | L_BYTE | 230 | Маска специальных флагов:
|
bReserved | L_BYTE | 231 | Зарезервировано. |
wUserId | L_WORD | 232 | Если установлен флаг SP_USER_SCHEMA (т.е. это описание схемы), в этом поле хранится идентификатор владельца схемы. |
bPassSalt[2] | L_BYTE | 234 | Случайное начальное значение для хеширования пароля пользователя. |
DeviceName[4] | L_BYTE | 236 | Имя физического устройства, используемого по умолчанию для пользователя. |
Получить способ идентификации указанного пользователя:
select case when getbits($$$S35,230,3,1) = 1 then 'LDAP' when getbits($$$s35,230,5,1) = 1 then 'KERBEROS' when getbits($$$s35,225,5,1) = 1 then 'SYSTEM' when getbits($$$s35,225,6,1) = 1 then 'PROTOCOL' else 'PASSWORD' end from $$$usr where $$$s32 = 0 and $$$s34 = ?;
Пример
CREATE OR REPLACE USER TESTER IDENTIFIED BY '12345678'; alter user tester PASSWORD LENGTH MIN 2; alter user tester CONNECT LIMIT 5; alter user tester PASSWORD LIFE TIME 31; select rowid from $$$usr where $$$s34='TESTER'; | 9| ! Максимальное количество доступных каналов select getword ($$$s35,82) from $$$usr where rowid=9; или select getword ($$$s35,82) from $$$usr where rowid= (select rowid from $$$usr where $$$s34='TESTER'); | 5| ! Минимальная длина пароля select getbyte ($$$s35,220) from $$$usr where rowid=9; | 2| ! Время действия пароля в днях select getword ($$$s35,226) from $$$usr where rowid=9; | 31|
Описание назначений аудита пользователя
В таблице 60 приведена структура описания аудита пользователя.
Нулевое значение поля указывает на то, что аудит по данному событию не ведется.
Поле | Тип данных | Протоколируемое событие |
---|---|---|
aCreateTable | L_BYTE | Добавление записи. |
aCreateView | L_BYTE | Корректировка записи. |
aCreateSynonym | L_BYTE | Создание синонима. |
aCreateProcedure | L_BYTE | Создание хранимой процедуры. |
aCreateTrigger | L_BYTE | Создание триггера. |
aDropTable | L_BYTE | Удаление таблицы. |
aDropView | L_BYTE | Удаление представления. |
aDropSynonym | L_BYTE | Удаление синонима. |
aDropProcedure | L_BYTE | Удаление хранимой процедуры. |
aDropTrigger | L_BYTE | Удаление триггера. |
aAlterProcedure | L_BYTE | Модификация хранимой процедуры. |
aKernel | L_BYTE | Аудит работы ядра. Маски режимов:
|
aCreateUser | L_BYTE | Создание пользователя БД. |
aDropUser | L_BYTE | Удаление пользователя БД. |
aAlterUser | L_BYTE | Изменение полномочий пользователя. |
aAlterPassl_word | L_BYTE | Изменение пароля. |
aCreateRole | L_BYTE | Создание роли. |
aDropRole | L_BYTE | Удаление роли. |
aCreateGroup | L_BYTE | Создание группы. |
aAlterGroup | L_BYTE | Изменение группы. |
aCreateLevel | L_BYTE | Создание уровня доступа. |
aAlterLevel | L_BYTE | Изменение уровня доступа. |
aGrantRole | L_BYTE | Определение роли. |
aRevokeRole | L_BYTE | Отмена роли. |
aGrantAccess | L_BYTE | Определение прав доступа. |
aRevokeAccess | L_BYTE | Отмена прав доступа. |
aInsert | L_BYTE | Добавление записи в таблицу. |
aUpdate | L_BYTE | Обновление записи в таблице. |
aSelect | L_BYTE | Выбор записей из таблицы. |
aDelete | L_BYTE | Удаление записи из таблицы. |
aInsertByProc | L_BYTE | Добавление записи в таблицу из хранимой процедуры. |
aUpdateByProc | L_BYTE | Обновление записи в таблице из хранимой процедуры. |
aSelectByProc | L_BYTE | Выбор записи в таблице из хранимой процедуры. |
aDeleteByProc | L_BYTE | Удаление записи в таблице из хранимой процедуры. |
aDeleteByRef | L_BYTE | Удаление по ссылке. |
aUpdateByRef | L_BYTE | Обновление по ссылке. |
aCreateIndex | L_BYTE | Создание индекса. |
aDropIndex | L_BYTE | Удаление индекса. |
aAlterTableFile | L_BYTE | Изменение параметров файла данных (индекса) таблицы. |
aAlterColumn | L_BYTE | Изменение схемы или атрибутов таблицы. |
aRenameTable | L_BYTE | Переименование таблицы. |
aRebuildTable | L_BYTE | Пересоздание таблицы. |
aPressTable | L_BYTE | Сжатие таблицы. |
aLockTable | L_BYTE | Блокирование таблицы. |
aUnlockTable | L_BYTE | Разблокирование таблицы. |
aGrantTable | L_BYTE | Определение прав на таблицу. |
aRevokeTable | L_BYTE | Отмена прав на таблицу. |
aChannelAccessDenied | L_BYTE | Неудачный доступ к системе. |
aConnect | L_BYTE | Открытие канала. |
aDisconnect | L_BYTE | Отсоединение канала. |
aOpenCursor | L_BYTE | Открытие курсора. |
aCloseCursor | L_BYTE | Закрытие курсора. |
aCommit | L_BYTE | Выполнение COMMIT. |
aRollback | L_BYTE | Выполнение ROLLBACK. |
aExecProc | L_BYTE | Выполнение процедуры. |
aExecTrig | L_BYTE | Выполнение триггера. |