Авторизация и доступ к объектам
В предыдущей лекции были рассмотрены примеры создания интерфейсов передачи данных без учета вопросов авторизации и доступа. WebSphere MQ имеет свой механизм предоставления прав доступа и аутентификации пользователя [10]. Ограничения по доступу могут быть на уровне удаленного управления менеджером очередей и на уровне доступа к определенным объектам. Основной командой, предоставляющей права доступа к объектам, является команда setmqaut. Синтаксис команды следующий:
setmqaut -m QMgrName -n Profile -t ObjectType -s ServiceComponent -remove -p PrincipalName [-g GroupName] MQI authorizations [Administration authorizations] [Generic authorizations]
-m QmgrName - имя менеджера очередей.
-n Profile - имя объекта менеджера, к которому применяется команда. В имени могут использоваться символы групповой замены (?, *, **). Например, если необходимо произвести авторизацию ко всем очередям, начинающимся на PAY, то опция Profile будет выглядеть
-n PAY*
-t ObjectType - тип объекта менеджера. Может иметь значения q или queue для очередей, prcs или process для процессов, nl или namelist для списков кластеров, authinfo для использования механизма SSL.
-s ServiceComponent - имя установленного сервиса авторизации, с помощью которого будут произведены изменения прав доступа. Параметр не является обязательным.
-remove - лишает прав доступа к объектам, указанным перед ним.
-p PrincipalName или -g GroupName - имя пользователя или группы, для которой производится изменение прав доступа к объектам. Для платформы Windows возможно указание доменной учетной записи в формате userid@domain.
Рассмотрим опции авторизации: MQI authorizations, Administration authorizations и Generic authorizations. Перед данными опциями должны указываться символы "+" или "-", разрешающие или запрещающие соответствующие действия.
MQI authorizations - опции команды для авторизации MQI. Может принимать значения:
- altusr - дает возможность использовать имя другой учетной записи для функций MQOPEN и MQPUT1;
- browse - разрешает просмотр сообщений в очереди функцией MQGET, если очередь открыта на просмотр с опцией BROWSE;
- connect - разрешает подключение к менеджеру очередей;
- get - разрешает считывание сообщение из очереди;
- inq - разрешает считывание значения атрибутов очереди;
- put - разрешает помещать сообщения в очередь;
- set - разрешает изменять атрибуты очереди.
Administration authorizations - опции команды для авторизации на выполнение действий. Может принимать значения:
- chg - изменение атрибутов объекта;
- clr - удаление сообщений из очереди (доступно только для PCF команд);
- crt - создание объектов;
- dsp - просмотр атрибутов объекта
Generic authorizations - опции авторизации для групповых операций. Может принимать значения:
- all - предоставляет все права на объект;
- alladm - предоставляет все административные права на объект;
- allmqi - предоставляет возможность MQI вызова на объект;
- none - создает в своем механизме аутентификации запись для профиля пользователя не предоставляя ему никаких прав;
Опции команды setmqaut применяются не ко всем объектам менеджера очередей. В таблице 5.1. указано соответствие между опциями и объектами.
all | + | + | + | + | + |
alladm | + | + | + | + | + |
allmqi | + | + | + | + | + |
none | + | + | + | + | + |
altusr | - | - | + | - | - |
browse | + | - | - | - | - |
chg | + | + | + | + | + |
clr | + | - | - | - | - |
connect | - | - | + | - | - |
crt | + | + | + | + | + |
dlt | + | + | + | + | + |
dsp | + | + | + | + | + |
get | + | - | - | - | - |
put | + | - | - | - | - |
inq | + | + | + | + | + |
set | + | - | - | - | - |
setmqaut -m QM_Win2000 -n Win2000_HPUX.? -t queue -p test1 +browse
setmqaut -m QM_Win2000 -n Vip*.* -t queue -p test1 -get
setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q -t queue -p test1 +dlt +dsp
setmqaut -m QM_Win2000 -n A1 -t queue -p test1 +all
setmqaut -m QM_Win2000 -n ?2 -t queue -p test1 +all
setmqaut -m QM_Win2000 -n **.CQ -t queue -p test1 +all
setmqaut -m QM_Win2000 -n NO*.Q -t queue -p test1 +get
setmqaut -m QM_Win2000 -n DEAD_LETTER -t queue -p test1 +put +browse +get
setmqaut -m QM_Win2000 -n A1 -t queue -p test1 -put
С помощью команды setmqaut нельзя предоставлять доступ к объектам кластера, которые физически расположены на удаленных менеджерах.
Коды возврата команды setmqaut указаны в таблице 5.2.
0 | Successful operation | Ошибок нет |
36 | Invalid arguments supplied | Содержится неправильный аргумент |
40 | Queue manager not available | Менеджер очередей недоступен |
49 | Queue manager stopping | Менеджер очередей остановлен |
69 | Storage not available | Невозможно сохранить изменения |
71 | Unexpected error | Непредвиденная ошибка |
72 | Queue manager name error | Ошибка в имени менеджера |
133 | Unknown object name | Неизвестное имя объекта |
145 | Unexpected object name | Непредвиденное имя объекта |
146 | Object name missing | Отсутствует имя объекта |
147 | Object type missing | Отсутствует тип объекта |
148 | Invalid object type | Неправильный тип объекта |
149 | Entity name missing | Отсутствует имя объекта |
150 | Authorization specification missing | Отсутствует опция авторизации |
151 | Invalid authorization specification | Неправильная опция авторизации |
Просмотреть права учетной записи (пользователя) к объекту на локальном менеджере можно с помощью команды dspmqaut. Синтаксис команды
dspmqaut -m QMgrName -n ObjectName -t ObjectType -s ServiceComponent -p PrincipalName [-g GroupName]
-m QmgrName - имя менеджера очередей.
-n ObjectName - имя объекта менеджера, к которому применяется команда.
-t ObjectType - тип объекта менеджера. Может иметь значения q или queue для очередей, prcs или process для процессов, nl или namelist для списков кластеров, authinfo для использования механизма SSL.
-s ServiceComponent - имя установленного сервиса авторизации, с помощью которого будет произведен просмотр прав доступа. Параметр не является обязательным.
-p PrincipalName или -g GroupName - имя пользователя или группы, для которой производится просмотр прав доступа к объектам. Для платформы Windows возможно указание доменной учетной записи в формате userid@domain.
Опции команды dspmqaut также доступны не для всех объектов менеджера очередей. В таблице 5.3. указано соответствие между опциями и объектами.
all | + | + | + | + | + |
alladm | + | + | + | + | + |
allmqi | + | + | + | + | + |
altusr | - | - | + | - | - |
browse | + | - | - | - | - |
chg | + | + | + | + | + |
clr | + | - | - | - | - |
connect | - | - | + | - | - |
crt | + | + | + | + | + |
dlt | + | + | + | + | + |
dsp | + | + | + | + | + |
get | + | - | - | - | - |
inq | + | + | + | + | + |
put | + | - | - | - | - |
set | + | + | + | - | + |
C:\>dspmqaut -m QM_Win2000 -t q -n A -p test1 Entity test1 has the following authorizations for object A: (К данному объекту учетная запись test1 не имеет авторизации, так как не было соответствующей команды setmqaut)
C:\>dspmqaut -m QM_Win2000 -t q -n Win2000_HPUX.Q -p test1 Entity test1 has the following authorizations for object Win2000_HPUX.Q:
browse
(setmqaut -m QM_Win2000 -n Win2000_HPUX.? -t queue -p test1 +browse)
C:\>dspmqaut -m QM_Win2000 -t q -n Win2000_HPUX.TQ - p test1 Entity test1 has the following authorizations for object Win2000_HPUX.TQ:
dlt dsp
(setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q -t queue -p test1 +dlt +dsp)
C:\>dspmqaut -m QM_Win2000 -t q -n Win2000_HPUX.RQ -p test1 Entity test1 has the following authorizations for object Win2000_HPUX.RQ:
dlt dsp
(setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q -t queue -p test1 +dlt +dsp)
C:\>dspmqaut -m QM_Win2000 -t q -n A1 -p test1 Entity test1 has the following authorizations for object A1:
get browse inq set dlt chg dsp passid passall setid setall clr
(setmqaut -m QM_Win2000 -n A1 -t queue -p test1 +all setmqaut -m QM_Win2000 -n A1 -t queue -p test1 -put )
C:\>dspmqaut -m QM_Win2000 -t q -n A2 -p test1 Entity test1 has the following authorizations for object A2:
get browse put inq set dlt chg dsp passid passall setid setall clr
(setmqaut -m QM_Win2000 -n ?2 -t queue -p test1 +all)
C:\>dspmqaut -m QM_Win2000 -t q -n HPUX.CQ -p test1 Entity test1 has the following authorizations for object HPUX.CQ:
get browse put inq set dlt chg dsp passid passall setid setall clr
(setmqaut -m QM_Win2000 -n **.CQ -t queue -p test1 +all)
C:\>dspmqaut -m QM_Win2000 -t q -n NOTEPAD.Q -p test1 Entity test1 has the following authorizations for object NOTEPAD.Q:
get
(setmqaut -m QM_Win2000 -n NO*.Q -t queue -p test1 +get)
C:\>dspmqaut -m QM_Win2000 -t q -n WIN2000_HPUX2.TQ -p test1 Entity test1 has the following authorizations for object WIN2000_HPUX2.TQ:
put
(setmqaut -m QM_Win2000 -n WIN*.* -t queue -p test1 +put)
C:\>dspmqaut -m QM_Win2000 -t q -n WIN2000HPUX3.TQ -p test1 Entity test1 has the following authorizations for object WIN2000HPUX3.TQ:
put
(setmqaut -m QM_Win2000 -n WIN*.* -t queue -p test1 +put)
C:\>dspmqaut -m QM_Win2000 -t q -n WIN2000hpux4.tq -p test1 Entity test1 has the following authorizations for object WIN2000hpux4.tq:
put
(setmqaut -m QM_Win2000 -n WIN*.* -t queue -p test1 +put)
C:\>dspmqaut -m QM_Win2000 -t q -n Vip2000.CQ - p test1 Entity test1 has the following authorizations for object Win2000.CQ:
browse put inq set dlt chg dsp passid passall setid setall clr
(setmqaut -m QM_Win2000 -n **.CQ -t queue -p test1 +all setmqaut -m QM_Win2000 -n Vip*.* -t queue -p test1 -get)
C:\>dspmqaut -m QM_Win2000 -t q -n DEAD_LETTER -p test1 Entity test1 has the following authorizations for object DEAD_LETTER:
get browse put
(setmqaut -m QM_Win2000 -n DEAD_LETTER -t queue -p test1 +put +browse +get )
Отметим, что к выполнению команды setmqaut, содержащей символы групповой замены следует относиться с осторожностью и всегда проверять результат выполнения командой dspmqaut.