Comment on column Opers. Name_Oper IS ‘Имя
Comment on column Opers. Data_BD IS ‘Дата рождения
Для установки привиллегий доступа используется команда:
GRANT список_привиллегий ON таблица TO роль
Grant select, insert, update, ON Opers TO Oper
Create Table Workers
(Worker_ID, - -идентификатор
Name_Worker, - -имя
Data_BD - -дата рождения) Without oids;
Alter table Workers owner to Worker_Filii;
Comment on table Workers IS ’Информация о работниках филии
Comment on column Workers. Worker_ID IS ‘Идентификатор
Comment on column Workers. Name_Worker IS ‘Имя
Comment on column Workers. Data_BD IS ‘Дата рождения
Для установки привиллегий доступа используется команда:
GRANT список_привиллегий ON таблица TO роль
Grant select ON Workers TO Worker_Filii
В действующем стандарте языка SQL предусматривается поддержка только избирательного управления доступом. Она основана на двух более или менее независимых частях SQL. Одна из них называется механизмом представлений, который может быть использован для скрытия очень важных данных от несанкционированных пользователей. Другая называется подсистемой полномочий и наделяет одних пользователей правом избирательно и динамично задавать различные полномочия другим пользователям, а также отбирать такие полномочия в случае необходимости.
CREATE SCHEMA DIRECTOR;
‘Для включения пользователя в схему используется команда:
ALTER SCHEMA DIRECTOR OWNER TO KORNIENKO;
‘выполнении запросов к схеме:
SELECT FROM DIRECTOR. KORNIENKO;
‘установления порядка доступа к схемe
SET SEARCH_PATH TO public;
SET SEARCH_PATH TO director, public;
CREATE SCHEMA KLIENT;
‘Для включения пользователя в схему используется команда:
ALTER SCHEMA KLIENT OWNER TO ABC;
ALTER SCHEMA KLIENT OWNER TO IBM;
ALTER SCHEMA KLIENT OWNER TO IVANOV;
ALTER SCHEMA KLIENT OWNER TO PETROV;
ALTER SCHEMA KLIENT OWNER TO SIDOROV;
‘выполнении запросов к схеме:
SELECT FROM KLIENT. ABC;
SELECT FROM KLIENT. IBM;
SELECT FROM KLIENT. IVANOV;
SELECT FROM KLIENT. PETROV;
SELECT FROM KLIENT. SIDOROV;
‘установления порядка доступа к схемe
SET SEARCH_PATH TO public;
SET SEARCH_PATH TO klient, public;
CREATE SCHEMA OPER;
‘Для включения пользователя в схему используется команда:
ALTER SCHEMA OPER OWNER TO SALMIN;
ALTER SCHEMA OPER OWNER TO DJAVR;
ALTER SCHEMA OPER OWNER TO KIRICH;
‘выполнении запросов к схеме:
SELECT FROM OPER. SALMIN;
SELECT FROM OPER. DJAVR;
SELECT FROM OPER. KIRICH;
‘установления порядка доступа к схемe
SET SEARCH_PATH TO public;
SET SEARCH_PATH TO oper, public;
CREATE SCHEMA WORKER;
‘Для включения пользователя в схему используется команда:
ALTER SCHEMA WORKER OWNER TO MANKO;
ALTER SCHEMA WORKER OWNER TOYANOVSKIY;
‘выполнении запросов к схеме:
SELECT FROM WORKER. MANKO;
SELECT FROM WORKER. YANOVSKIY;
‘установления порядка доступа к схемe
SET SEARCH_PATH TO public;
SET SEARCH_PATH TO worker, public;
Политика безопасности - набор законов, правил и норм поведения, определяющих, как организация обрабатывает, защищает и распространяет информацию.
Политика безопасности должна включать в себя по крайней мере следующие элементы: произвольное управление доступом, безопасность повторного использования объектов, метки безопасности, принудительное управление доступом.
С точки зрения работы СУБД рассмотрим три элемента:
произвольное управление доступом;
метки безопасности;
принудительное управление доступом.
Описание концепции использования меток безопасности
Полномочное (принудительное) управление доступом в промышленных СУБД не реализовано на уровне ядра управления. Но в СУБД присутствуют программные средства для программирования такого управления.
Для реализации полномочного управления доступом с субъектами и объектами ассоциируются метки безопасности. Метка субъекта описывает его благонадежность, метка объекта - степень закрытости содержащейся в нем информации.
Метки безопасности состоят из двух частей - уровня секретности и списка категорий. Уровни секретности, поддерживаемые системой, образуют упорядоченное множество, которое может выглядеть, например, так: совершенно секретно, секретно, конфиденциально, несекретно.
Категории образуют неупорядоченный набор. Их назначение - описать предметную область, к которой относятся данные. В военном окружении каждая категория может соответствовать, например, определенному виду вооружений.
Главная проблема, которую необходимо решать в связи с метками, это обеспечение их целостности:
не должно быть непомеченных субъектов и объектов, иначе в меточной безопасности появятся легко используемые бреши;
при любых операциях с данными метки должны оставаться правильными.
Управление метками безопасности в СУБД
Для реализации полномочного управления доступом необходимо разрабатывать
дополнительный механизм, включающий:
дополнительные структуры данных, хранящие значение меток конфиденциальности обьектов БД (записей таблиц или их отдельных атрибутов);
дополнительные структуры данных, хранящие значение уровней доступа субьектов БД (пользователей или их групп);
В СУБД PostgreSQL вышеописанные пункты механизма можно создать через:
добавление поля таблицы, содержащего значения метки конфиденциальности
создание таблицы уровней доступа с двумя полями: имя группы или пользователя, уровень доступа.
CREATE SEQUENCE KLIENTS_ID;
CREATE TABLE KLIENTS (KLIENTS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT VALID_SEX CHECK (SEX IN ('Ж','М',’ФИРМА’)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ О КЛИЕНТАХ;
Для создания механизма управления метками при доступе пользователей и групп пользователей к таблице persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR UNIQUE) ;
INSERT INTO ACCESS_LEVELS VALUES (1,'дляобщегодоступа');
INSERT INTO ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO ACCESS_LEVELS VALUES (4,'совершенносекретно');
Шаг 2. Создать таблицу, содержащую матрицу уровней доступа групп пользователей, пример которой представлен ниже.
DROP TABLE GROUPS_ACCESS_LEVEL;
CREATE TABLE GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL INTEGER REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на таблицу groups_access_level:
REVOKE ALL ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users необходимый уровень доступа
INSERT INTO GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE KLIENTS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES ACCESS_LEVELS (ACCESS_LEVEL_ID);
CREATE SEQUENCE DIRS_ID;
CREATE TABLE DIRS (DIRS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT VALID_SEX CHECK (SEX IN ('Ж','М ’)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ О ДИРЕКТОРАХ;
Для создания механизма управления метками при доступе пользователей и групп пользователей к таблице persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR UNIQUE) ;
INSERT INTO ACCESS_LEVELS VALUES (1,'дляобщегодоступа');
INSERT INTO ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO ACCESS_LEVELS VALUES (4,'совершенносекретно');
Шаг 2. Создать таблицу, содержащую матрицу уровней доступа групп пользователей, пример которой представлен ниже.
DROP TABLE GROUPS_ACCESS_LEVEL;
CREATE TABLE GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL INTEGER REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на таблицу groups_access_level:
REVOKE ALL ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users необходимый уровень доступа
INSERT INTO GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД Klients поле с описанием меток конфиденциальности записей spot_conf:
ALTER TABLE DIRS ADD COLUMN SPOT_CONF INTEGER DEFAULT 1
REFERENCES ACCESS_LEVELS (ACCESS_LEVEL_ID);
CREATE SEQUENCE OPERS_ID;
CREATE TABLE OPERS (OPERS_ID INTEGER NOT NULL PRIMARY KEY DEFAULT NEXTVAL ('KLIENTS_ID'),
NAME VARCHAR (30),
SEX CHAR (1),
BIRTHDAY DATE,
CONSTRAINT VALID_SEX CHECK (SEX IN ('Ж','М ’)));
COMMENT ON TABLE PERSONS IS
'ТАБЛИЦА ИНФОРМАЦИИ ОБ ОПЕРАЦИОНИСТАХ;
Для создания механизма управления метками при доступе пользователей и групп пользователей к таблице persons выполним следующую последовательность шагов.
Шаг 1. Создать справочник уровней доступа с помощью команды, пример которой представлен ниже.
CREATE TABLE ACCESS_LEVELS (ACCESS_LEVEL_ID INTEGER PRIMARY KEY,
ACCESS_LEVELVARCHAR UNIQUE) ;
INSERT INTO ACCESS_LEVELS VALUES (1,'дляобщегодоступа');
INSERT INTO ACCESS_LEVELS VALUES (2,'для внутреннего использования');
INSERT INTO ACCESS_LEVELS VALUES (3,'секретно');
INSERT INTO ACCESS_LEVELS VALUES (4,'совершенносекретно');
Шаг 2. Создать таблицу, содержащую матрицу уровней доступа групп пользователей, пример которой представлен ниже.
DROP TABLE GROUPS_ACCESS_LEVEL;
CREATE TABLE GROUPS_ACCESS_LEVEL (GROUP_NAME VARCHAR PRIMARY KEY,
ACCESS_LEVEL INTEGER REFERENCES
ACCESS_LEVELS (ACCESS_LEVEL_ID));
Шаг 3. Разграничить права на таблицу groups_access_level:
REVOKE ALL ON GROUPS_ACCESS_LEVEL FROM GROUP USERS;
GRANT SELECT ON GROUPS_ACCESS_LEVEL TO GROUP USERS;
Шаг 4. Присвоить группе users необходимый уровень доступа
INSERT INTO GROUPS_ACCESS_LEVEL VALUES ('users',2);
Шаг 5. Добавить в таблицу БД Klients поле с описанием меток конфиденциальности записей spot_conf: