Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
Сергей Б
Member

Откуда: Москва
Сообщений: 177
Informix 11.70.FC8
OS Red Hat Enterprise Linux Server release 6.8
СУБД настроена под двухфакторную идентификацию. Права раздаются/отзываются подразделением безопасности. Но при создании / удалении пользователей выдается ошибка SQL Error (-26703), хотя этот пользователь имеет привилегии DBA.
CREATE USER "S_BAZANOV" with properties user "inf_user";
DROP USER ‘S_BAZANOV’;

описание ошибки
-26703 User (<username>) is not authorized to create, alter, drop, or rename users.
Only a database server administrator (DBSA) can manage user accounts. In a
non-root installation, the DBSA is the user who installed the product. Log in as
the user who installed this database server to modify user accounts

В доке нашел вот это
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sec.doc/ids_da_004.htm
You cannot switch on role separation by resetting the environment after the server instance has been installed without role separation, and you cannot selectively implement role separation on only some of the databases of the same database server.

Подскажите пожалуйста (ссылка, совет, что угодно) как обойти возникшую ситуацию. Дать пароль Informix не приемлема.
5 фев 18, 14:49    [21167028]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
victor16
Member

Откуда:
Сообщений: 591
Сергей Б,

можно попробовать через SPL, если informix is DBSA
не уверен, возможно ли на версии 11.70.FC8,

CREATE DBA PROCEDURE "informix".create_user (
    p_logname  CHAR(40)
   ,p_password CHAR(40)
   ,p_sysuser  CHAR(40)
   ,p_homedir  CHAR(128)
) RETURNING SMALLINT AS res;
DEFINE sqlStr NCHAR(1000);
IF EXISTS (SELECT 1 FROM sysuser:sysintauthusers i WHERE i.username MATCHES TRIM(p_logname)) THEN
    RETURN 0;
END IF;
LET sqlStr = "CREATE USER " || 
             TRIM(p_logname) || " WITH PASSWORD '" || 
			 TRIM(p_password) || "' ACCOUNT unlock PROPERTIES USER " || 
			 TRIM(p_sysuser) || " HOME '" || 
			 TRIM(p_homedir) || "'";
EXECUTE immediate sqlStr;
RETURN 1;
END PROCEDURE;

GRANT EXECUTE ON FUNCTION 'informix'.create_user TO '<your_dba_user>';

Подробнее https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_1821.htm
5 фев 18, 22:55    [21168423]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
Сергей Б
Member

Откуда: Москва
Сообщений: 177
Виктор, спасибо большое. Но это не помогло. SQL Error (-26703): ok_adm

А можно ли как-то включить разделение ролей в уже в пронсталлированной системе (DBSA,DBSSO ..) ?
6 фев 18, 12:18    [21169497]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
victor16
Member

Откуда:
Сообщений: 591
Сергей Б
это не помогло. SQL Error (-26703): ok_adm


Определение процедуры именно такое, как в примере ?
Должна быть именно DBA процедура и владелец именно informix.
Это позволяет любому юзеру у кого есть гранты на выполнение выполнить процедуру от имени informix-а.
Проверено, даже файлы создаются с владельцем informix.
Во всяком случае, у меня в 12.10 работает нормально.

Сергей Б
А можно ли как-то включить разделение ролей в уже в пронсталлированной системе (DBSA,DBSSO ..) ?


Посмотрите в сторону параметра ADMIN_USER_MODE_WITH_DBSA, хотя мне кажется - он немного для других целей
6 фев 18, 14:46    [21170034]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
Сергей Б
Member

Откуда: Москва
Сообщений: 177
Еще раз спасибо Виктор.

автор
Определение процедуры именно такое, как в примере ?
Должна быть именно DBA процедура и владелец именно informix.
Это позволяет любому юзеру у кого есть гранты на выполнение выполнить процедуру от имени informix-а.
Проверено, даже файлы создаются с владельцем informix.
Во всяком случае, у меня в 12.10 работает нормально.


Так и делал.


автор
Посмотрите в сторону параметра ADMIN_USER_MODE_WITH_DBSA, хотя мне кажется - он немного для других целей


Я пробовал. Но это не совсем то, что нужно.


Сработало следующее. (Правда буду тестировать не повлияет ли это на другие учетки)

onmode -wf USERMAPPING=ADMIN
useradd -u xxx dbsa_user 

add in  /etc/informix/allowed.surrogates "USERS:dbsa_user"


CREATE USER "ok_dbsa" with properties user dbsa_user;
alter user "ok_dbsa" ADD PASSWORD "qwerty"
alter user "dbsa" MODIFY AUTHORIZATION (DBSA)
GRANT DBA TO 'ok_dbsa';

Еще раз спасибо Виктор
7 фев 18, 09:44    [21172015]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка SQL Error (-26703) при создании/удалении суррогатного пользователя  [new]
Сергей Б
Member

Откуда: Москва
Сообщений: 177
Плюс пришлось накатить скрипты

select distinct 'grant select on '||trim(tabname)||' to ok_dbsa with grant option as '|| trim(a.owner) || ' ;'
from systables a , systabauth b
where a.tabid = b.tabid and a.tabid > 99
7 фев 18, 15:57    [21173606]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить