27
<Insert Picture Here> Применение Enterprise User Security Игорь Минеев , ведущий консультант в области информационной безопасности

- Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

<Insert Picture Here>

Применение Enterprise User Security Игорь Минеев ,

ведущий консультант в области

информационной безопасности

Page 2: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

3. БД не выполняет

авторизацию и аудит

действий конкретных

пользователей

Типичная схема аутентификации

2. Сервер приложений

открывает сессию от имени

служебного пользователя БД

Служебный пользователь “A”

Служебный пользователь “A”

Служебный пользователь “A”

1. Пользователь

проходит

аутентификацию на

сервере приложений

Пул соединений

Oracle DB

Page 3: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

3. БД не выполняет

авторизацию и аудит

действий конкретных

пользователей

Типичная схема аутентификации

2. Сервер приложений

открывает сессию от имени

служебного пользователя БД

Служебный пользователь “A”

Служебный пользователь “A”

Служебный пользователь “A”

1. Пользователь

проходит

аутентификацию на

сервере приложений

Пул соединений

Oracle DB

Анонимный доступ негарантирует безопасности !

Page 4: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

3. БД выполняет

авторизацию и аудит

действий конкретных

пользователей

Сохранение информации о пользователе

2. Сервер приложений

открывает сессию от имени

служебного пользователя БД и

передает информацию о

пользователе

Служебный пользователь “A”

Служебный пользователь “A”

Служебный пользователь “A”

1. Пользователь

проходит

аутентификацию на

сервере приложений

Пул соединений

Oracle DB

Page 5: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

5

Сохранение информации о пользователе

• Существуют три способа передачи учетных

данных пользователей через пул соединений в

базу данных

• Выделенные сессии (Dedicated Sessions)

• Идентификаторы сессии (Session identifiers)

• Прокси аутентификация (Proxy authentication)

Page 6: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

6

Выделенные сессии

• Физическое соединение с базой данных

устанавливается на уровне пула соединений

• Соединения могут использоваться многократно

различными сессиями

ods=new OracleOCIConnectionPool;conn=ods.getConnection("scott","tiger");

// код программыconn.close(); conn=ods.getConnection(«imineev",“Welcome1");

Page 7: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

7

Выделенные сессии

• Преимущества:

• Сам пользователь и все его действия легко

отслеживаются на уровне БД

• Не надо устанавливать физическое соединение с БД

для каждого пользователя

• Недостатки:

• Каждый раз для выполнения действий пользователя в

БД необходимо организовывать сессию

• Приложение должно иметь информацию о паролях

пользователей в БД

Page 8: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

8

Идентификаторы сессии

• Физическое соединение с базой данных и сессии

устанавливаются на уровне пула соединений

• Приложение изменяет контекстконтекст сессии для

каждого пользователя

ods=new OracleOCIConnectionPool;conn=ods.getConnection(“service”,”Welcome1”);

DBMS_SESSION.SET_IDENTIFIER(‘imineev’);// код программы

DBMS_SESSION.SET_IDENTIFIER(‘scott’);

Page 9: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

9

Идентификаторы сессии

• Преимущества:

• Идентификаторы могут применяться для присвоения

ролей, срабатывания триггеров и VPD

• Не надо устанавливать даже сессионные соединения с

БД для пользователей

• Приложение не знает пароли пользователей

• Возможен аудит действий пользователя

• Недостатки:

• Для использования механизма ролей в БД необходимо

написание дополнительного программного кода

Page 10: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

10

Прокси аутентификация

• Физическое соединение с базой данных и сессии

устанавливаются на уровне пула соединений

• Соединения повторно используются сессиями

Базы Данных

• Прокси аутентификация может проходить тремя

способами:

• Доверительная (Trusted)

• Аутентификация с помощью пароля (Password)

• Аутентификация на основе DN (distinguished name)

Page 11: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

11

Прокси Аутентификация - Доверительная

• БД передаются только имена пользователей

• Наиболее простой способ для внедрения

ods=new OracleOCIConnectionPool;

ods.getProxyConnection(OracleOCIConnectionPool.PROXY_USER_NAME,‘imineev');

ALTER USER imineev GRANT CONNECT THROUGH appuser;

Page 12: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

12

Прокси аутентификация - Пароль

• Приложение передает имя пользователя и его

пароль БД

ods=new OracleOCIConnectionPool;

ods.getProxyConnection(OracleOCIConnectionPool.PROXY_USER_PASSWORD,’imineev’,’Welcome1’);

ALTER USER imineev GRANT CONNECT THROUGH appuser AUTHENTICATED USING PASSWORD;

Page 13: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

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;

Page 14: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

14

Прокси аутентификация

• Преимущества:

• Идентификаторы могут применяться для присвоения

ролей, срабатывания триггеров и VPD

• Приложение не знает пароли пользователей

• Может использовать EUS

• Конечные пользователи просто определяются на уровне

БД (Аудит + Роли)

• Недостатки:

• Каждый раз для выполнения действий пользователя в

БД необходимо организовывать сессию

Page 15: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

Централизованное управление

пользователями (EUS)

• LDAP каталог используется в качестве центрального

хранилища учетных записей пользователей

• Называется Enterprise User Security (EUS)

• Требует Advanced Security Option (ASO)

Page 16: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

Авторизация / Корпоративные роли

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

Page 17: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

Контекст сессии

• 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

• mail

• manager

Page 18: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

OID – EUS

Page 19: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

OVD – EUS

Page 20: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

Архитектура Oracle Virtual Directory

Прослушивателиустанавливают соединение с

клиентами

Engine выполняет преобразование

данных,

маршрутизацию, аудит и

обеспечивает безопасность.

Адаптеры обеспечивают

доступ к ID данным

Объединения

Page 21: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

21

Enterprise Security Manager

Page 22: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

22

Enterprise Security Manager

Page 23: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

23

Структура LDAP каталога (EUS)

Page 24: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

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;

Page 25: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

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

Page 26: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1
Page 27: - Oracle · 2009-03-02 · 24 Проксиаутентификация–EUS •ИспользованиевсистемеSSO ods=new OracleOCIConnectionPool(“connect_user”,”Welcome1

27