- •Часть IV
- •Глава 13 Восстановление
- •13.1. Введение
- •13.2. Транзакции
- •13.3. Восстановление транзакции
- •13.4. Восстановление системы
- •13.5. Восстановление носителей
- •13.6. Двухфазная фиксация
- •13.7. Поддержка языка sql
- •13.8. Резюме
- •Глава 14 Параллелизм
- •14.1. Введение
- •14.2. Три проблемы параллелизма
- •14.3. Блокировка
- •14.4. Решение проблем параллелизма
- •14.5. Тупиковая ситуация
- •14.6. Способность к упорядочению
- •14.7. Уровни изоляции
- •14.8. Преднамеренная блокировка
- •IX s
- •14.9. Поддержка блокировок в sql
- •14.10. Резюме
- •14.13. Papadimitriou с. The Theory of Database Concurrency Control.— Rockville, Md.: Computer Science Press, 1986.
- •Глава 15 Безопасность
- •15.1. Введение
- •15.2. Общие соображения
- •15.3. Избирательное управление доступом
- •15.4. Модификация запроса
- •15.5. Обязательное управление доступом
- •15.6. Шифрование данных
- •Стандарт шифрования данных
- •15.7. Поддержка мер обеспечения безопасности в языке sql
- •15.8. Резюме
15.8. Резюме
В этой главе рассматривались различные аспекты проблемы безопасности базы данных. Во введении были показаны различия между понятиями безопасности и целостности. Так, под безопасностью подразумевается, что санкционированным пользователям разрешается выполнять необходимые действия, а под целостностью — корректность этих действий. Иначе говоря, безопасность включает защиту данных от несанкционированного доступа, изменения или разрушения.
Безопасность обеспечивается подсистемой безопасности СУБД, которая проверяет соответствие всех запросов правилам безопасности, хранимым в системном каталоге. Сначала рассматривались избирательные схемы, в которых доступ к заданному объекту определялся владельцем объекта. Для каждого правила безопасности в избирательной схеме задается имя, множество привилегий (RETRIEVE, UPDATE и т.д.), диапазон (в основном данные, к которым применяются эти правила, задаются с помощью специального условного выражения), множество пользователей и реакция на нарушение правил безопасности (обычно это просто операция отмены REJECT). Такие правила могут использоваться для обеспечения зависящего от конкретного значения управления, не зависящего от конкретного значения управления, контекстно-зависимого управления. Контрольный след выполняемых операций может использоваться для регистрации попыток несанкционированного проникновения сквозь систему безопасности. В данной главе было представлено краткое описание метода воплощения таких правил на основе модификации запроса, который был впервые применен в системе INGRES на базе языка QUEL.
Затем кратко рассматривались методы обязательного управления, согласно которым каждый объект обладает уровнем классификации и каждый пользователь имеет уровень допуска. Помимо описания правил безопасности для такой схемы, также кратко рассматривалась классификация мер безопасности, регламентированная министерством обороны США [15.1, 15.2].
Затем были описаны методы шифрования данных на основе подстановок и перестановок, а также приведены разъяснение стандарта шифрования данных и краткое описание методов шифрования на основе открытого ключа. В частности, был представлен простой пример RSA-схемы на основе простых чисел. Кроме того, была описана концепция применения цифровых подписей.
После этого были кратко описаны меры безопасности, которые поддерживаются в стандарте языка SQL, в частности использование представлений для сокрытия информации, а также применение директив GRANT и REVOKE для управления тем, какие привилегии заданы, каким пользователям и для каких объектов (домены, таблицы, представления).
В заключение, вероятно, стоит отметить, что от большого количества мер безопасности в СУБД не будет никакого толку, если их легко преодолеть. Например, в системе DB2 фирмы IBM меры безопасности были бы совершенно бесполезны, если бы было возможно осуществить доступ к данным системы DB2 с помощью обычной программы системы MVS на основе запросов VSAM (дело в том, что, как будет показано далее в этой книге, данные системы DB2 физически хранятся в файлах формата VSAM). Поэтому система DB2 находится в полной гармонии с другими совместимыми системами, например MVS и VSAM, причем с полным соблюдением мер безопасности. Хотя подробное изложение этого вопроса выходит за рамки данной главы, эту особенность все же стоит упомянуть.
Упражнения
15.1. Базовое отношение STATS выглядит следующим образом:
STATS (USERID, SEX, DEPENDENTS, JOB, SALARY, TAX, AUDITS) PRIMARY KEY (USERID)
Используя гипотетический язык, представленный в разделе 15.3, запишите правила безопасности для перечисленных ниже привилегий:
а) пользователь Ford обладает правом извлечения целого отношения;
б) пользователь Smith обладает правом вставки и удаления целого отношения;
в) каждый пользователь обладает правом извлечения только своего собственного кортежа;
г) пользователь Nash обладает правом извлечения целого отношения и обновления только атрибутов SALARY и TAX;
д) пользователь Todd обладает правом извлечения только атрибутов USERID, SALARY и TAX;
е) пользователь Ward обладает таким же правом извлечения, что и пользователь Todd, а также правом обновления только атрибутов SALARY и TAX;
ж) пользователь Pope обладает всеми правами (извлечения, обновления, вставки и удаления) только для всех кортежей проповедников;
з) пользователь Jones обладает правом удаления кортежей для лиц, выполняющих работу общего характера, т.е. такую, которая выполняется более чем 10 лицами;
и) пользователь King обладает правом извлечения данных о минимальной и максимальной зарплате для работы заданного класса.
15.2. Рассмотрите, как следует расширить синтаксис утверждения CREATE SECURITY RULE для включения в него управления такими операциями, как создание (CREATE BASE RELATION) и удаление базового отношения (DESTROY BASE RELATION), создание (CREATE VIEW) и удаление представления (DESTROY VIEW), создание (CREATE SECURITY RULE) и удаление правила безопасности (DESTROY SECURITY RULE) и т.д.
15.3. Расшифруйте приведенный ниже зашифрованный текст, созданный в стиле, подобном тому, который был использован в примере этой главы со строкой as kingfishers catch fire, но с использованием другого 5-символьного ключа шифрования.
FNWAL JPVJC FPEXE ABWNE AYEIP SUSVD
15.4. Испытайте RSA-схему шифрования на основе открытого ключа с р = 7, q = 5 и е = 17 для открытого текста Р = 3.
15.5. Какие проблемы могут возникнуть при использовании шифрования?
15.6. Используя язык SQL, запишите решения для упр. 15.1.
15.7. Запишите утверждения SQL для удаления привилегий, заданных в решении для предыдущего упражнения.
Список литературы
Обширный обзор по методам обеспечения безопасности представлен в [15.9], а более подробное техническое описание этой темы — в [15.5]. Остальные приведенные здесь ссылки указывают на технические документы, статьи, учебные пособия и научно-исследовательские работы по различным аспектам проблемы обеспечения безопасности.
15.1. U.S. Department of Defense. Trusted Computer System Evaluation Criteria ("оранжевая" книга). — DoD National Computer Security Center, 1985.
15.2. U.S. Department of Defense. Trusted Database Management System Interpretation ("розовая" книга). — DoD National Computer Security Center, 1991.
15.3. U.S. Department of Commerce/National Bureau of Standards. Data Encryption Standard. — Federal Information Processing Standards Publication 46, 1977.
В работе дано определение официального стандарта шифрования данных (Data Encryption Standard — DES), используемого как федеральными учреждениями США, так и всеми желающими. Этот алгоритм шифрования/расшифровки используется на аппаратном уровне, например в микропроцессоре. При этом устройства с таким микропроцессором демонстрируют весьма высокую интенсивность обмена данными. В настоящее время существует несколько таких коммерческих устройств.
15.4. Date. C.J. Security // С. J. Date. An Introduction to Database Systems: Volume II. — Reading. Mass.: Addison-Wesley, 1983.
15.5. Denning D.E. Cryptography and Data Security. — Reading, Mass.: Addison-Wesley, 1983.
15.6. Denning D.E., Denning P.J. Data Security // ACM Соmр. Surv. — 1979. — 11, № 3.
Прекрасное учебное пособие, посвященное методам обеспечения безопасности с описанием избирательных и обязательных методов управления доступом (здесь они называются методами управления потоком), методов шифрования данных и управления выводом (эта проблема характерна для статистических баз данных). Здесь стоит несколько подробнее остановиться на последней из перечисленных выше проблем. Статистической базой данных (в излагаемом здесь контексте) называется база данных, в которой допускаются запросы для вывода некоторой итоговой информации (например, сумм и средних значений), но не допускаются запросы для вывода индивидуальной информации. Например, в такой базе данных запрос "Какова средняя зарплата программистов?" будет разрешен, а запрос "Какую зарплату получает программист Петров?" — нет.
Основная проблема такой базы данных заключается в том, что в ней на основе двух допустимых запросов можно сформировать недопустимый запрос. В качестве примера ниже приводится два допустимых запроса.
1. Сколько существует программистов в возрасте между 25 и 30 годами, которые проживают в Смоллвилле и получили образование в области современных языков программирования в университете Метрополиса?
2. Какова средняя зарплата программистов в возрасте между 25 и 30 годами, которые проживают в Смоллвилле и получили образование в области современных языков программирования в университете Метрополиса?
Если два этих запроса сформировать в один и результатом первой части запроса (первого вопроса) будет "I", то вторая часть запроса будет недопустима (поскольку на нее должна быть выдана точная зарплата данного программиста). Более подробные пояснения по данной проблеме приводятся в [15.4].
15.7. Diffe W., Hellman M.E. New Directions in Cryptography // IEEE Trans. on Information Theory. — 1976. — IT-22.
В статье излагаются теоретические основы для так называемых схем шифрования на основе открытого ключа. Как разъясняется в этой главе, в обычных схемах шифрования, например в стандарте шифрования данных DES [15.3], ключ шифрования держится в секрете. В схеме с открытым ключом, наоборот, используется два различных ключа: один для шифрования, другой для расшифровки. Причем в секрете держится только ключ расшифровки, а вывести его из ключа шифрования невозможно. Следовательно, в таких схемах каждый может создавать зашифрованные сообщения, но никто, кроме получателя, не может расшифровать его (даже создатель этого сообщения).
15.8. Fagin R. On an Authorization Mechanism // ACM TODS. — 1978. — 3, № 3.
Подробное изложение поправки к [15.11] о некоторых условиях, способных привести к отмене привилегии, которую нельзя отменить с помощью механизма, описанного в [15.11].
15.9. Fernandez E.B., Summers R.C., Wood С. Database Security and Integrity.— Reading, Mass.: Addison-Wesley, 1981.
15.10. Gardner M. A New Kind of Cipher That Would Take Millions of Years to Break // Scientific American. — 1977. — 237, № 2.
15.11. Griffiths P.P., Wade B.W. An Authorization Mechanism for a Relational Data Base System // ACM TODS. — 1976. — 1, № 3.
Описание механизмов предоставления (GRANT) и отмены (REVOKE) привилегий, впервые предложенных для системы System R. Эта схема в несколько измененном виде теперь включена в основу стандарта языка SQL.
15.12. Jajodia S., Sandhu R. Toward a Multilevel Secure Relational Data Model // Proc. 1991 ACM SIGMOD Intern. Conf. on Management of Data. — Denver, Col., 1991.
Как объяснялось в этой главе, "многоуровневая структура" в контексте системы безопасности относится к системе, в которой поддерживаются методы обязательного управления доступом. В статье сделано утверждение о том, что вся текущая деятельность в этой области в основном выполняется спонтанно, поскольку не существует единого мнения в отношении основных концепций. Кроме того, в этой работе подчеркивается необходимость положить начало формальным принципам многоуровневых систем. Эти вопросы являются более тонкими, чем может показаться на первый взгляд. Например, предположим, что некоторому пользователю не положено знать о существовании некоторых поставщиков (например, поставщиков со статусом выше 20). В таком случае предоставление пользователю возможности организовать представление базового отношения S, из которого исключены такие поставщики, могло бы прийти в противоречие с фактом существования таких поставщиков. Дело в том, что попытка вставить данные о новом поставщике в это представление может закончиться неудачно, если он имеет такой же номер, которым уже обладает некоторый скрытый поставщик.
15.13. Lempel A. Cryptology in Transition // ACM Сотр. Surv.— 1979.— 11, №4 (Special Issue on Cryptology).
Прекрасное учебное пособие по шифрованию и связанным с этой темой вопросам.
15.14. Rivest R.L., Shamir A., Adieman L. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems // CACM. — 1978. —21, № 3.
15.15. Smith К., Winslett M. Entity Modeling in the MLS Relational Model // Proc. 18th Intern. Conf. on Very Large Data Bases. — Vancouver, Can., 1992.
Сокращение MLS в заголовке статьи обозначает "многоуровневую защиту" ("multilevel secure" — MLS). В статье сделано ударение на значении баз данных с такой защитой и предлагается директива нового типа (BELIEVED BY) для указания операций извлечения и обновления по отношению к некоторому особому состоянию базы данных, которое воспринимается или "принимается [как точно соответствующее]" некоторым пользователем. В статье сделано утверждение, что этот подход поможет разрешить несколько проблем, существовавших при использовании прежних подходов.
15.16. Stonebraker M.R., Wong E. Access Control in a Relational Data Base Management System by Query Modification // Proc. ACM National Conference. — 1974.
В статье впервые предложен механизм модификации запросов на основе системы INGRES (здесь используется термин "query modification").
15.17. Thuraisingham B. Current Status of R&D in Trusted Database Management Systems //ACM SIGMOD. — 1992. —21, № 3.
Краткий обзор и обширный набор ссылок на работы о "надежных" или многоуровневых системах.
Ответы к некоторым упражнениям
15.1. а) CREATE SECURITY RULE AАA
GRANT RETRIEVE ON STATS TO Ford ;
б) CREATE SECURITY RULE BBB
GRANT INSERT, DELETE ON STATS TO Smith ;
в) CREATE SECURITY RULE CCC
GRANT RETRIEVE
ON STATS WHERE STATS. USERID - USER ()
TO ALL;
Обратите внимание на использование в этом правиле встроенной функции USER.
г) CREATE SECURITY RULE DDD
GRANT RETRIEVE, UPDATE ( SALARY, TAX )
ON STATS
TO Nash ;
д) CREATE SECURITY RULE EEE
GRANT RETRIEVE ( USERID, SALARY, TAX )
ON STATS
TO Todd ;
e) CREATE SECURITY RULE FFF
GRANT RETRIEVE ( USERID, SALARY, TAX ),
UPDATE ( SALARY, TAX )
ON STATS
TO Ward ;
ж) CREATE SECURITY RULE GGG
GRANT ALL
ON STATS WHERE STATS. JOB = 'Проповедник'
TO Pope ;
з) RANGE OF TX IS STATS ;
CREATE SECURITY RULE HHH
GRANT DELETE
ON STATS WHERE
COUNT (TX WHERE TX.JOB,STATS.JOB ) > 10 TO Jones ;
и) CREATE VIEW SALS AS
( STATS. JOB,
MAX(TX.SAL WHERE TX.JOB = STATS.JOB) AS MAXSAL, MIN(TX.SAL WHERE TX.JOB = STATS.JOB) AS MINSAL ) ;
CREATE SECURITY RULE III
GRANT RETRIEVE CN SALS TO King ;
Обратите внимание, что для записи данного правила не требуется использовать представление.
15.2. Здесь необходимо отметить, что пользователя, который обладает привилегией создания нового базового отношения и действительно создает такое отношение, следует рассматривать как владельца этого нового отношения. Владелец данного базового отношения не только автоматически наделяется всеми возможными привилегиями на это отношение, включая не только операции RETRIEVE, INSERT, UPDATE и DELETE, но и обладает правом наделять такими полномочиями для данного отношения других пользователей.
15.3. Открытый текст имеет следующий вид:
EYES I DARE NOT MEET IN DREAMS
Какой был использован ключ шифрования?
15.5. Проблема заключается в том, что в системе, в которой выполняется шифрование, данные внутри системы должны обрабатываться в открытом виде (например, чтобы корректно выполнялись операции сравнения). Поэтому все еще существует риск открытого доступа к очень важным данным с помощью параллельно работающих приложений или потери данных при сбросе состояния памяти на внешний носитель. Кроме того, существует несколько технических проблем, связанных с индексированием зашифрованных данных и ведением файла протокола для таких данных.
15.6. а) GRANT SELECT ON STATS TO Ford ;
б) GRANT INSERT, DELETE ON STATS TO Smith ;
в) CREATE VIEW MINE AS
SELECT STATS.*
FROM STATS
WHERE STATS. USERID = USER GRANT SELECT ON MINE TO PUBLIC ;
Обратите внимание, что в стандарте SQL поддерживается встроенная функция USER.
г) GRANT SELECT, UPDATE ( SALARY, TAX ) ON STATS TO Nash ;
д) CREATE VIEW UST AS
SELECT STATS.USERID, STATS.SALARY, STATS.TAX
FROM STATS
GRANT SELECT ON UST TO Todd ;
e) GRANT SELECT, UPDATE ( SALARY, TAX ) CN UST TO Ward ;
ж) CREATE VIEW PREACHERS AS
SELECT STATS.*
FROM STATS
WHERE STATS. JOB = 'Проповедник' ;
GRANT ALL PRIVILEGES ON PREACHERS TO Pope ;
Обратите внимание на использование в данном примере сокращения all privileges (все привилегии). (Директива all privileges не означает буквально все привилегии, а лишь все те привилегии для данного объекта, которые некий пользователь может предоставить другому пользователю с помощью директивы GRANT.)
з) CREATE VIEW SPECIALISTS AS
SELECT STX.*
FROM STATS AS STX
WHERE ( SELECT COUNT(*)
FRОM STATS AS STY
WHERE STY. JOB = STX. JOB ) > 10 ;
GRANT DELETE ON SPECIALISTS TO Jones ;
и) CREATE VIEW SALS AS
SELECT STATS. JOB,
MAX ( STATS. SALARY ) AS MAXSAL,
MIN ( STATS. SALARY ) AS MINSAL
FROM STATS
GROUP BY STATS.JOB ;
GRANT SELECT ON SALS TO King ; ;
15.7. а) REVOKE SELECT ON STATS FRОM Ford RESTRICT ;
б) REVOKE INSERT, DELETE ON STATS FRОM Smith RESTRICT ;
в) REVOKE SELECT ON MINE FRОM PUBLIC RESTRICT ;
г) REVOKE SELECT, UPDATE ( SALARY, TAX )
ON STATS FROM Nash RESTRICT ;
д) REVOKE SELECT ON UST FROM Todd RESTRICT ;
e) REVOKE SELECT, UPDATE ( SALARY, TAX )
ON UST FROM Ward RESTRICT ;
ж) REVOKE ALL PRIVILEGES ON PREACHERS FROM Pope RESTRICT ;
з) REVOKE DELETE ON SPECIALISTS FROM Jones RESTRICT ;
и) REVOKE SELECT ON SALS FROM King RESTRICT ;