![Скачать презентацию Система безопасности в базах данных Лекция 3 Базы Скачать презентацию Система безопасности в базах данных Лекция 3 Базы](https://present5.com/wp-content/plugins/kama-clic-counter/icons/ppt.jpg)
Лекция 3. Система безопасности в базах данных.pptx
- Количество слайдов: 30
Система безопасности в базах данных Лекция 3 Базы данных на основе Microsoft SQL Server 2008. Лекция 3 1
План лекции • Безопасность уровня схемы • Изменение владения и цепочки владения между базами данных • Безопасность интеграции со средой CLR • Безопасность доступа кода Базы данных на основе Microsoft SQL Server 2008. Лекция 3 2
Подзащитные области сервера • • • Соединения Базы данных Уведомления о событиях Конечные точки HTTP Связанные серверы Регистрационные записи Базы данных на основе Microsoft SQL Server 2008. Лекция 3 3
Подзащитные области базы данных • • • • Роли приложений Сборки Сертификаты и симметричные/ассиметричные ключи События DDL Полнотекстовые каталоги Типы сообщений Привязки удаленных служб Роли Маршруты Схемы Контракты служб Службы Пользователи Базы данных на основе Microsoft SQL Server 2008. Лекция 3 4
Подзащитные области схемы • • • Установки по умолчанию Функции Процедуры Очереди Правила Синонимы Таблицы Типы Коллекции схем XML Базы данных на основе Microsoft SQL Server 2008. Лекция 3 5
Как работает безопасность уровня схемы • Получение списка схем: SELECT * FROM sys. schemas; • Назначение схемы по умолчанию: CREATE USER U 1 FOR LOGIN U 1 WITH DEFAULT_SCHEMA = Sales • Создание новой схемы: CREATE SCHEMA Sales AUTHORIZATION U 1 Базы данных на основе Microsoft SQL Server 2008. Лекция 3 6
Управление привилегиями схемы • Владелец схемы автоматически имеет права INSERT UPDATE DELETE EXEC на объекты внутри схемы, однако не может добавлять новые. GRANT CREATE TABLE TO U 1 GRANT ALTER ON SCHEMA: : Sales TO U 1 Базы данных на основе Microsoft SQL Server 2008. Лекция 3 7
Конфликт в привилегиях между схемой и объектом в схеме • DENY SELECT ON SCHEMA: : Resources TO U 1 • GRANT SELECT ON Resources. Department TO U 1 • SETUSER ‘U 1’ • SELECT * FROM Resources. Department Базы данных на основе Microsoft SQL Server 2008. Лекция 3 8
Изменение владения и цепочки владения внутри БД CREATE John, Jane EXEC sp_addrolemember ‘db_datareader’, ‘John’ EXEC sp_addrolemember ‘db_ddladmin’, ‘John’ CREATE PROCEDURE P 1 WITH EXECUTE AS ‘John’ AS SELECT * FROM T 1 • ALTER AUTHORIZATION ON P 1 TO ‘John’ • SETUSER GRANT EXECUTE ON P 1 TO ‘Jane’ • • Базы данных на основе Microsoft SQL Server 2008. Лекция 3 9
Изменение владения и цепочки владения между базами данных • sp_configure ‘cross db ownership chaining’, 1 GO RECONFIGURE GO Базы данных на основе Microsoft SQL Server 2008. Лекция 3 10
CREATE DATABASE DB 1 WITH DB_CHAINING ON CREATE DATABASE DB 2 WITH DB_CHAINING ON CREATE LOGIN U 1 WITH PASSWORD =‘ 123’; USE DB 1 CREATE TABLE Customers (ID int IDENTITY PRIMARY KEY, FIO nvarchar(500) NOT NULL Email nvarchar(500) NOT NULL); CREATE USER U 1 FOR LOGIN U 1 Базы данных на основе Microsoft SQL Server 2008. Лекция 3 11
USE DB 2 CREATE TABLE Emails (ID int IDENTITY PRIMARY KEY, Email nvarchar(500)); CREATE VIEW Get. All. Emails AS SELECT Email FROM Emails UNION SELECT Email FROM DB 1. dbo. Customers; CREATE USER U 1 FOR LOGIN U 1 GRANT SELECT ON Get. All. Emails TO U 1 SETUSER ‘U 1’ SELECT *FROM Get. All. Emails Базы данных на основе Microsoft SQL Server 2008. Лекция 3 12
Безопасность интеграции со средой CLR Базы данных на основе Microsoft SQL Server 2008. Лекция 3 13
Задачи решаемые моделью безопасности интеграции с CLR • По умолчанию выполнение управляемого пользовательского кода в SQL Server не должно угрожать целостности и стабильности SQL Server. Выполнение операций, потенциально небезопасных для устойчивости SQL Server, должно быть защищено соответствующими разрешениями высокого уровня. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 14
Задачи решаемые моделью безопасности интеграции с CLR • Управляемый пользовательский код не должен получать несанкционированный доступ к пользовательским данным или коду других пользователей в базе данных. Пользовательский программный код должен выполняться в контексте безопасности пользовательского сеанса, который его вызывает, и обладать нужными правами для этого контекста безопасности. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 15
Задачи решаемые моделью безопасности интеграции с CLR • Должны существовать элементы управления, ограничивающие доступ пользовательского кода к любым ресурсам за пределами сервера. Он должен использоваться только для доступа к местным данным и для вычислений. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 16
Задачи решаемые моделью безопасности интеграции с CLR • Пользовательский программный код не должен получать несанкционированный доступ к системным ресурсам только потому, что он выполняется в процессе SQL Server. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 17
Безопасность доступа кода Базы данных на основе Microsoft SQL Server 2008. Лекция 3 18
Code Access Security • С точки зрения безопасности, наиболее важный аспект интеграции. NET с SQL Server – это возможность разработчику бд пользоваться преимуществами CAS Базы данных на основе Microsoft SQL Server 2008. Лекция 3 19
Три уровня политики безопасности • Политика для компьютера: распространяется на весь управляемый код, выполняемый на компьютере, на котором установлен SQL Server. • Политика для пользователя: распространяется на весь управляемый код, выполняемый в рамках процесса. • Политика для узла: устанавливается узлом CLR (в данном случае SQL Server) и распространяется на управляемый код, выполняемый на узле. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 20
Наборы разрешений на уровне политики узла SQL Server • SAFE – допускаются только внутренние вычисления и доступ к локальным ресурсам. Не имеет доступа к внешним системным ресурсам (файлы, реестр, переменные среды). • EXTERNAL_ACCESS – включают те же разрешения что и SAFE + доступ к файлам, сетям, переменным среды и реестру. • UNSAFE – предоставляет сборкам неограниченный доступ к внутренним и внешним ресурсам SQL Server. Сборки UNSAFE получают набор разрешений Full. Trust (включая P/Invoke). Базы данных на основе Microsoft SQL Server 2008. Лекция 3 21
Правила получения доступа к внешним ресурсам ЕСЛИ: контекст выполнения соответствует имени входа SQL Server. ТО: попытки получить доступ к внешним ресурсам отклоняются, и активизируется исключение безопасности. ЕСЛИ: контекст выполнения соответствует имени входа Windows, и контекстом выполнения является первоначальный вызывающий объект. ТО: доступ к внешнему ресурсу предоставляется в контексте безопасности учетной записи SQL Server. ЕСЛИ: вызывающий объект не является первоначальным вызывающим объектом. ТО: доступ запрещается, и активизируется исключение безопасности. ЕСЛИ: Контекст выполнения соответствует имени входа Windows, контекст выполнения является исходным вызывающим объектом, а к вызывающему объекту применяется олицетворение. ТО: При доступе используется контекст безопасности вызывающего объекта, а не учетная запись службы. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 22
Сводные данные о наборе разрешений SAFE EXTERNAL_ACCESS UNSAFE Code Access Security Permissions Только выполнение Выполнение и доступ к внешним ресурсам Неограниченное (включая P/Invoke) Programming model restrictions Да Да Без ограничений Verifiability requirement Да Да Нет Local data access Да Да Да Ability to call native code Нет Да Базы данных на основе Microsoft SQL Server 2008. Лекция 3 23
Основные действия с привилегиями CAS • Assert – утверждение привилегии позволяет части кода выполнять заданное действие. • Deny – запрет привилегии приводит к тому, что попытки ниже в стеке выполнить запрещенное действие приведут к отказу. • Demand – требование привилегии говорит о том, что коду требуется данная привилегия для выполнения. • Permit. Only – разрешение на доступ только к определенному ресурсу и отказ в доступе к другим ресурсам. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 24
Императивные и декларативные CAS • Декларативные CAS – используются атрибуты для привилегий требования и утверждения. • Императивные CAS – вызов методов на индивидуальных объектах привилегий (определенных в System. Security. Permissions наследник Code. Access. Permission) • Привилегии можно сконфигурировать для всей сборки , группы сборок, локальной машины или даже домена (caspol. exe или. NET Configuration Wizard) Базы данных на основе Microsoft SQL Server 2008. Лекция 3 25
Императивные и декларативные CAS • File. IOPermission perm=new File. IOPermission(File. IOPermission. Access. Read, @“C: te mp. txt”); perm. Demand(); • [File. IOPermission(Security. Action. Demand, Read=@”C: temp. txt”)] Public static string Read. Temp. Data() { } //тело метода… Базы данных на основе Microsoft SQL Server 2008. Лекция 3 26
Использование CAS с SQL Server • Пример: – Создаем динамическую библиотеку DLL (File. Reader. dll) – возвращает массив прочитанных из файла строк. – Создаем сборку Get. Sales. Assem. dll – вызывает File. Reader. dll, по полученному массиву строк извлекает из БД связанные данные и возвращает их в результирующем наборе. Базы данных на основе Microsoft SQL Server 2008. Лекция 3 27
File. Reader. cs Using System. Security. Permissions; namespace My. CASSecurity { public class File. Reader { public static string[] Read. File(string filename) { } } File. IOPermission perm = new File. IOPermission (File. IOPermission. Access. Read, filename); perm. Demand(); //логика по чтению данных из файла return result; } Базы данных на основе Microsoft SQL Server 2008. Лекция 3 28
Getsales. Assem. cs Using System. Security. Permissions; namespace My. CASSecurity { public class Sales. Fetcher { public static void Get. Sales. For. Names(Sql. String filename) { Permission. Set perms = new Permission. Set(Permission. State. None); } File. IOPermission io. Perm = new File. IOPermission(File. IOPermission. Access. Read, @“C: names. txt”); perms. Add. Permission(io. Perm); Sql. Client. Permission sql. Perm = Sql. Client. Permission(Permission. State. None); sql. Perm. Add(“context connection=true”, “”, Key. Restriction. Behavior. Allow. Only); perms. Add. Permission(sql. Perm); perms. Permit. Only(); string[] names = File. Reader. Read. File(filename. To. String()); //логика по получению данных из SQL Server } } Базы данных на основе Microsoft SQL Server 2008. Лекция 3 29
Регистрация сборки в SQL Server и создание процедуры CREATE ASSEMBLY Get. Sales. Assem FROM ‘…Get. Sales. Assem. dll’ WITH PERMISSION_SET = EXTERNAL_ACCESS CREATE PROCEDURE P 1 @filename nvarchar(255) AS EXTERNAL NAME Get. Sales. Assem. [My. CASSecurity. Sales. Fetcher]. Get. Sales. For. Names Базы данных на основе Microsoft SQL Server 2008. Лекция 3 30
Лекция 3. Система безопасности в базах данных.pptx