Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
Коллеги, к db2 имею отношение совершенно косвенное - мне нужно просто считать из базы несколько строк, путём запуска vbs скрипта на Windows сервере. Задача реализуется просто, но не могу никак найти информацию о том, как можно подключиться к базе, используя встроенную авторизацию. Сейчас всё работает, если использую строку подключения: "Hostname=Server001;Port=50000;Protocol=TCPIP;Database=MAINDATA;uid=UserVasya;pwd=PASSWORD123" Можно ли не указывать пользователя и пароль (uid, pwd) а подключаться к базе с правами того пользователя, который запускает скрипт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 16:07 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelot, Только для локальных соединений в предположении, что локальный экземпляр имеет имя DB2: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 17:16 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Спасибо за вариант, но к сожалаению соединение не локальное - база лежит на удалённом сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 17:22 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelotMark Barinstein, Спасибо за вариант, но к сожалаению соединение не локальное - база лежит на удалённом сервере.Вы можете в этом случае доверить клиентам аутентифицировать пользователей. Имейте ввиду, что такой подход может быть дырой в безопасности, если в сети есть другие компьютеры, с которых есть возможность соединяться с этим сервером. На сервере из-под владельца экземпляра из командной строки (db2cwadmin, если windows): Код: plaintext 1. 2. Authentication methods for your server Строка соединения при этом: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 17:45 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelot, В догонку - у DB2 нет понятия "встроенная авторизация". Пользовалели аутентифицируются во внешних по отношению к DB2 источниках. По-умолчанию это ОС, где установлена DB2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2013, 17:58 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelot, Второй вариант - перевести базу в режим аутентификации по kerberos'у (пользователь доменный?). На authentication client владельцы базы могут не согласиться - совсем не секъюрно. Но на authentication по керберосу тоже могут не согласится - уж больно много там приколов может повылезать :) (в том числе можно настроить всё так, что тоже получится не секъюрно). В любом случае - что говорят "владельцы" базы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 08:42 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, CawaSPb, Действительно, владельцы базы считают недопустимым использование authentication client. Пользователь, которого я указываю в строке подключения к базе, является доменным. Это означает, что используется аутентификация kerberos? (по мне так это просто LDAP) Если да, то как сформировать строку подключения к базе, используя kerberos? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 10:12 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelotПользователь, которого я указываю в строке подключения к базе, является доменным. Это означает, что используется аутентификация kerberos? (по мне так это просто LDAP) Если да, то как сформировать строку подключения к базе, используя kerberos? Если сервер db2 и клиентский компьютер в домене, то на сервере db2: Код: plaintext 1. 2. Строка соединения: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 13:14 |
|
||
|
Авторизация текущего пользователя при коннекте к базе
|
|||
|---|---|---|---|
|
#18+
kamelot, Про Керберос - внутре у неё неонка... виндовая доменная аутентификация работает, собственно, по Керберос протоколу (внутри себя Керберос реализует) и к нему можно подключаться из тех же *NIX'ов Kerberos клиентами. У DB2 тип аутентификации определяет для работающего экземпляра СУБД, где и с помощью каких механизмов будет эта аутентификация происходить. Далее берётся username идентифицированного пользователя и от него уже внутри СУБД определяются права на объекты базы. Наиболее часто употребимый тип - SERVER. В этом случае клиент (или DB2'шный драйвер) отправляет имя пользователя и пароль DB2 серверу (в рамках DRDA handshake), а тот обращается к операционной системе за проверкой, валидны ли userid/password. В Вашем случае ОС с DB2 сервера лезет к контроллеру домена за этой самой проверкой (ну или на сервере, если он не в домене/не под виндами надо заводить пользователей с идентичными доменным именами и паролями). Для аутентификации типа CLIENT, все проверки происходят на стороне клиента. Т.е. для того, чтобы пробраться в базу под чужим именем достаточно завести локального пользователя с нужным userid и ломиться под ним к базе. При аутентификации по типу KERBEROS СУБД и клиент обмениваются только полученными от KDC (домен-контроллера) тикетами и обращаются к KDC за проверками/формированием тикетов. Для аппликух, обращающихся через полноценного DB2 клиента (в том числе JDBC type 2) изменение аутентификации с SERVER на KERBEROS прозрачно. Есть ньюанс - когда каталогизируем базу, тип аутентификации должен быть либо пропущен, либо указан как KERBEROS вместе с TARGET PRINCIPAL (не будем показывать пальцами, но скажем, что некоторая аппликуха, название которой начинается с Quest и заканчивается на Central, любит навязывать проставить чего-нибудь в качестве типа аутентификации, предлагая по дефолту "SERVER", закаталогизированную таким образом базу нужно сначала uncatalog'изировать и затем добавить по-человечески). Для обращающихся напрямую в connection string добавляем: - для .Net аппликух и подобного - ";Authentication=KERBEROS" - для Java аппликух - ";securityMechanism=11" или ";securityMechanism=KERBEROS_SECURITY". Там ещё очень много других проблем и проблемок: - если друг с другом общаются несколько DB2 серверов, работающих под виндами, то надо всех их пускать под различными аккаунтами - в виндах в формировании principal name отсутствует имя хоста :O, а за одинаковое имя они в некоторых случаях "подерутся" - для возможности обращения к виндовому DB2 серверу по Керберосу с *NIX'ов и из Java необходимо от доменного администратора выполнить: Код: plaintext - в обязательном порядке использовать последние JDBC драйвера (сейчас это от 9.7.7), в них _значительно_ более вменяемая диагностика проблем по сравнению с чуть более старыми (от 9.7.6). - коннект из Java приложений без указания пары логин+пароль требует предварительного формирования тикета сам по себе не происходит, а требует предварительного формирования тикета со своими особенностями. - необходимо представлять, какой реально encription type используется, а то от secure'ности кербероса может остаться одни пшик (в то время когда будете думать, что всё "круто"). - свои проблемы/особенности с коннектом к DB2 for LUW со стороны AS/400 аппликух (здесь пока не всё ясно, но есть, вроде, внятные гайды по этому делу). - свои хитрости с прозрачной аутентификацией в распределённых базах (при работе с никнеймами). - при работе SAS с AIX'а столкнулись с проблемой - эта тварь на запросах одного типа (не помню уже, INSERT или DELETE, на других нормально) всегда преобразует имя пользователя в upper case, какой бы он ни был указан в конфигурации источника данных. AIX'овый Kerberos клиент (клиентская часть его стандартного NAS) - case sensitive, виндовый - в общем-то тоже (просто внутри себя всегда преобразует регистр перед отправкой к KDC, но в другую сторону), единственный предполагаемый work around на настоящий момент - специальные аккаунты для SAS из одних цифр :/ Есть сильное подозрение, что всё это лишь верхушка айсберга. Т.е. затея "взять и перейти на Керберос аутентификацию" - это большое мероприятие с гарантированным геморроем для всех (но и со своими плюсаим по завершении). Есть ещё один тип аутентификации - KRB_SERVER_ENCRYPT, который для клиентов, поддерживающих Керберос будет идентичен KERBEROS, а для остальных - SERVER_ENCRYPT (идентичен SERVER, только логин с паролем по сетке не в открытом виде гоняются). Чем определяется это "поддерживающих" - параметрами connection string/каталогизации на клиенте (т.е. сами выбираем) или ОС клиента - не могу сказать, не проверял. Скорее первое. Для целенаправленного перевода системы на Kerberos это не очень годится - у всех найдётся 1000 причин, почему именно им сейчас этот переход делать не нужно (сроки, ресурсы, наседающий с требованиями бизнес и прочие, действительно объективные причины), но, возможно, Вам этот метод как раз подойдёт. PS для проверки "connectivity" .Net аппликух к базе с заданной connection string удобно использовать тулзы из DB2 клиента: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2013, 18:47 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38103657&tid=1601571]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 436ms |

| 0 / 0 |
