Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
<Insert Picture Here>
Применение Enterprise User Security Игорь Минеев ,
ведущий консультант в области
информационной безопасности
3. БД не выполняет
авторизацию и аудит
действий конкретных
пользователей
Типичная схема аутентификации
2. Сервер приложений
открывает сессию от имени
служебного пользователя БД
Служебный пользователь “A”
Служебный пользователь “A”
Служебный пользователь “A”
1. Пользователь
проходит
аутентификацию на
сервере приложений
Пул соединений
Oracle DB
3. БД не выполняет
авторизацию и аудит
действий конкретных
пользователей
Типичная схема аутентификации
2. Сервер приложений
открывает сессию от имени
служебного пользователя БД
Служебный пользователь “A”
Служебный пользователь “A”
Служебный пользователь “A”
1. Пользователь
проходит
аутентификацию на
сервере приложений
Пул соединений
Oracle DB
Анонимный доступ негарантирует безопасности !
3. БД выполняет
авторизацию и аудит
действий конкретных
пользователей
Сохранение информации о пользователе
2. Сервер приложений
открывает сессию от имени
служебного пользователя БД и
передает информацию о
пользователе
Служебный пользователь “A”
Служебный пользователь “A”
Служебный пользователь “A”
1. Пользователь
проходит
аутентификацию на
сервере приложений
Пул соединений
Oracle DB
5
Сохранение информации о пользователе
• Существуют три способа передачи учетных
данных пользователей через пул соединений в
базу данных
• Выделенные сессии (Dedicated Sessions)
• Идентификаторы сессии (Session identifiers)
• Прокси аутентификация (Proxy authentication)
6
Выделенные сессии
• Физическое соединение с базой данных
устанавливается на уровне пула соединений
• Соединения могут использоваться многократно
различными сессиями
ods=new OracleOCIConnectionPool;conn=ods.getConnection("scott","tiger");
// код программыconn.close(); conn=ods.getConnection(«imineev",“Welcome1");
7
Выделенные сессии
• Преимущества:
• Сам пользователь и все его действия легко
отслеживаются на уровне БД
• Не надо устанавливать физическое соединение с БД
для каждого пользователя
• Недостатки:
• Каждый раз для выполнения действий пользователя в
БД необходимо организовывать сессию
• Приложение должно иметь информацию о паролях
пользователей в БД
8
Идентификаторы сессии
• Физическое соединение с базой данных и сессии
устанавливаются на уровне пула соединений
• Приложение изменяет контекстконтекст сессии для
каждого пользователя
ods=new OracleOCIConnectionPool;conn=ods.getConnection(“service”,”Welcome1”);
DBMS_SESSION.SET_IDENTIFIER(‘imineev’);// код программы
DBMS_SESSION.SET_IDENTIFIER(‘scott’);
9
Идентификаторы сессии
• Преимущества:
• Идентификаторы могут применяться для присвоения
ролей, срабатывания триггеров и VPD
• Не надо устанавливать даже сессионные соединения с
БД для пользователей
• Приложение не знает пароли пользователей
• Возможен аудит действий пользователя
• Недостатки:
• Для использования механизма ролей в БД необходимо
написание дополнительного программного кода
10
Прокси аутентификация
• Физическое соединение с базой данных и сессии
устанавливаются на уровне пула соединений
• Соединения повторно используются сессиями
Базы Данных
• Прокси аутентификация может проходить тремя
способами:
• Доверительная (Trusted)
• Аутентификация с помощью пароля (Password)
• Аутентификация на основе DN (distinguished name)
11
Прокси Аутентификация - Доверительная
• БД передаются только имена пользователей
• Наиболее простой способ для внедрения
ods=new OracleOCIConnectionPool;
ods.getProxyConnection(OracleOCIConnectionPool.PROXY_USER_NAME,‘imineev');
ALTER USER imineev GRANT CONNECT THROUGH appuser;
12
Прокси аутентификация - Пароль
• Приложение передает имя пользователя и его
пароль БД
ods=new OracleOCIConnectionPool;
ods.getProxyConnection(OracleOCIConnectionPool.PROXY_USER_PASSWORD,’imineev’,’Welcome1’);
ALTER USER imineev GRANT CONNECT THROUGH appuser AUTHENTICATED USING PASSWORD;
13
Прокси аутентификация – Distinguished Name
• Возможно использование EUS
• Можно получить DN пользователя из систем
SSO
ods=new OracleOCIConnectionPool;
userDN=request.getHeader("Osso-User-DN");
ods.getProxyConnection(OracleOCIConnectionPool.PROXY_DISTINGUISHED_NAME,userDN);
ALTER USER ldap_user GRANT CONNECT THROUGH appuser AUTHENTICATED USING DISTINGUISHED NAME;
14
Прокси аутентификация
• Преимущества:
• Идентификаторы могут применяться для присвоения
ролей, срабатывания триггеров и VPD
• Приложение не знает пароли пользователей
• Может использовать EUS
• Конечные пользователи просто определяются на уровне
БД (Аудит + Роли)
• Недостатки:
• Каждый раз для выполнения действий пользователя в
БД необходимо организовывать сессию
Централизованное управление
пользователями (EUS)
• LDAP каталог используется в качестве центрального
хранилища учетных записей пользователей
• Называется Enterprise User Security (EUS)
• Требует Advanced Security Option (ASO)
Авторизация / Корпоративные роли
ENTERPRISE ROLE
DB role
FRCLERK
10g
DB roles
ANALYST
PARKADMIN
Enterprise Role
MANAGEMENT
Contains DB role
FRCLERK and DB
Role PARKADMIN
Enterprise Role
CLERK
Contains DB role
FRCLERK and DB
Role ANALYST
Привязка Глобальных Ролей
через Группы Каталога
Oracle Internet Directory
Oracle Internet Directory илиOVD+MS AD или OVD+SunOne
11g
Контекст сессии
• USERENV • Database sets up
• Attributes:
• Current_user
• Session_user
• Current_schema
• Client_identifier
• External_name
• Proxy_user
• Current_SQL
• ISDBA
• Db_name
• IP_Address
• Network_protocol
• Authentication_type
• SYS_LDAP_USER_DEFAULT • (inetOrgPerson from LDAP)
• Attributes:
• displayName
• o (organization)
• departmentNumber
• employeeNumber
• employeeType
• givenName
• homePhone
• mobile
• pager
• homePostalAddress
• manager
OID – EUS
OVD – EUS
Архитектура Oracle Virtual Directory
Прослушивателиустанавливают соединение с
клиентами
Engine выполняет преобразование
данных,
маршрутизацию, аудит и
обеспечивает безопасность.
Адаптеры обеспечивают
доступ к ID данным
Объединения
21
Enterprise Security Manager
22
Enterprise Security Manager
23
Структура LDAP каталога (EUS)
24
Прокси аутентификация – EUS
• Использование в системе SSO
ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1”,”jdbc:oracle:oci:@orcl”,null);
ods.getProxyConnection(OracleOCIConnectionPool.PROXY_USER_NAME,…);
create user connect_user identified by “Welcome1” ;
grant create session to connect user;
create user shared_user identified globally as ‘’;
alter user shared_user grant connect through connect_user using distinguished name;
Authentication 3rd Party Directory DB OID OVD
(Does Not Require
DIP or DAS)
Password
orapassword
AD + DIP + DAS 9.2.0.3+ 10g+
Password
orapassword
AD + DIP + Password
Filter
9.2.0.3+ 10g+
Password
authpassword
SUN + DIP 10.1+ 10.1.4
Password
authpassword
SUN + OID Server
Chaining
10.1+ 10.1.4
Certificate 8i+ 9i+
Kerberos AD + OID Server
Chaining
10.1+ 10.1.4
Password
authpassword
AD with oidpwdcn DLL 10.1+ 10.1.4.2+
Password
authpassword
Sun 10.1+ 10.1.4.2+
Kerberos AD 10.1+ 10.1.4.2+
Возможные схемы аутентификации
пользователей БД Oracle
27