Авторизация и доступ к объектам
В предыдущей лекции были рассмотрены примеры создания интерфейсов передачи данных без учета вопросов авторизации и доступа. WebSphere MQ имеет свой механизм предоставления прав доступа и аутентификации пользователя. Ограничения по доступу могут быть на уровне удаленного управления менеджером очередей и на уровне доступа к определенным объектам. Основной командой, предоставляющей права доступа к объектам, является команда 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. Соответствие между опциями команды setmqaut и объектами менеджера очередей
Authority
Queue
Process
Queue manager
Namelist
Authentication information
all
+
+
+
+
+
alladm
+
+
+
+
+
allmqi
+
+
+
+
+
none
+
+
+
+
+
altusr
-
-
+
-
-
browse
+
-
-
-
-
chg
+
+
+
+
+
clr
+
-
-
-
-
connect
-
-
+
-
-
crt
+
+
+
+
+
dlt
+
+
+
+
+
dsp
+
+
+
+
+
get
+
-
-
-
-
put
+
-
-
-
-
inq
+
+
+
+
+
set
+
-
-
-
-
Синтаксис команды имеет несколько особенностей. Если в названии объекта присутствует символ "_", то символы групповой замены (?, *, **) использовать не рекомендуется. Если имя объекта разделено символом ".", то каждая часть имени, разделенная точкой должна использовать свои символы групповой замены. Рассмотрим примеры применения команды setmqaut к объектам менеджера QM_Win2000 для учетной записи (пользователя) test1. Условиями выполнения команды является наличие учетной записи test1 и указанных в примерах очередей.
Авторизация подключения к менеджеру QM_Win2000
setmqaut -m QM_Win2000 -t qmgr
-p test1 +connect
Доступ на просмотр сообщений функцией MQGET, во всех очередях, начинающихся на Win2000_HPUX. и заканчивающихся на любой допустимый символ, если очередь открыта на просмотр с опцией BROWSE
setmqaut -m QM_Win2000 -n Win2000_HPUX.?
-t queue -p test1 +browse
Запрет на считывание сообщение из очередей, начинающихся на Vip, имеющим в имени символ "." и заканчивающиеся любыми допустимыми символами за исключением символов "_" и "."
setmqaut -m QM_Win2000 -n Vip*.* -t queue
-p test1 -get
Право на просмотр атрибутов и удаление очередей, начинающихся на Win2000_HPUX. и имеющим после точки два символа, причем левый символ может быть любым
setmqaut -m QM_Win2000 -n Win2000_HPUX.?Q
-t queue -p test1 +dlt +dsp
Предоставление всех прав на очередь A1
setmqaut -m QM_Win2000 -n A1 -t queue
-p test1 +all
Предоставление всех прав на очереди, состоящие из двух символов, имеющие любой первый символ и второй символ "2"
setmqaut -m QM_Win2000 -n ?2 -t queue
-p test1 +all
Предоставление всех прав на очереди, оканчивающиеся на .CQ и не имеющие перед символом "." символов "_" и "."
setmqaut -m QM_Win2000 -n **.CQ -t queue
-p test1 +all
Предоставление прав на считывание сообщений из очередей, начинающихся на NO, имеющих в имени символ "." и оканчивающихся на Q
setmqaut -m QM_Win2000 -n NO*.Q -t queue
-p test1 +get
Предоставление прав на помещение, просмотр и удаление сообщений в очереди DEAD_LETTER
setmqaut -m QM_Win2000 -n DEAD_LETTER
-t queue -p test1 +put +browse +get
Удаление прав на помещение сообщений в очередь A1
setmqaut -m QM_Win2000 -n A1 -t queue
-p test1 -put
С помощью команды setmqaut нельзя предоставлять доступ к объектам кластера, которые физически расположены на удаленных менеджерах.
Коды возврата команды setmqaut указаны в.
Таблица 5.2. Коды возврата команды setmqaut
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. Соответствие между опциями команды dspmqaut и объектами менеджера очередей
Authority
Queue
Process
Queue manager
Namelist
Authentication information
all
+
+
+
+
+
alladm
+
+
+
+
+
allmqi
+
+
+
+
+
altusr
-
-
+
-
-
browse
+
-
-
-
-
chg
+
+
+
+
+
clr
+
-
-
-
-
connect
-
-
+
-
-
crt
+
+
+
+
+
dlt
+
+
+
+
+
dsp
+
+
+
+
+
get
+
-
-
-
-
inq
+
+
+
+
+
put
+
-
-
-
-
set
+
+
+
-
+
Рассмотрим некоторые примеры применения команды dspmqaut к объектам менеджера QM_Win2000 для учетной записи test1. В скобках дана соответствующая команда setmqaut из рассмотренных выше примеров.
Рассмотрим некоторые примеры применения команды dspmqaut к объектам менеджера QM_Win2000 для учетной записи test1. В скобках дана соответствующая команда setmqaut из рассмотренных выше примеров.
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.
Настройка служб WebSphere MQ под Windows
WebSphere MQ в своей работе оперирует как своими внутренними данными, так и данными на уровне операционных систем. Так, например, в процессе первичной установки создается группа mqm. Все пользователи, входящие в эту группу имеют все права на все объекты WebSphere MQ. То есть для полного управления менеджером очередей достаточно того, чтобы учетная запись была включена либо в группу mqm либо в группу администраторов.
В среде Windows часто встречается случай, когда прикладная программа должна выполняться под нужной учетной записью (пользователем). В процессе установки WebSphere MQ на платформе Windows кроме группы mqm создается пользователь с учетной записью MUSR_MQADMIN под именем которого выполняются все процессы и все прикладные программы, указанные в атрибуте Application Identifier соответствующего процесса. Если удалить и создать вновь данную учетную запись, то WebSphere MQ работать не будет. Рассмотрим процедуру, позволяющую запускать сервис IBM MQSeries под другой учетной записью.
Установить тип запуска для IBM MQSeries Service в Manual.
Перегрузить компьютер.
Запустить dcomcnfg, и настроить форму, как показано на
В закладке Security добавить пользователя mquser@alfa.moscow.net для параметров:
Use custom access permissions (Allow access);
Use custom launch permissions (Allow access);
Use custom configuration permission (Full Control).
Установить тип запуска для MQSeries в Automatic.
Перегрузить компьютер.
Убедиться, что сервис IBM MQSeries стартовал от имени mquser@alfa.moscow.net.
Далее можно создавать службы сервиса WebSphere MQ Trigger Monitor (см. лекцию 4). Создать данные службы можно также с помощью команды amqmdain, синтаксис которой имеет вид:
amqmdain crttrm QmgrName InitQueue
где:
QmgrName - имя менеджера очередей,
InitQueue - имя очереди инициализации
После выполнения данной команды следует убедиться в появлении в MQSeries Services нового Trigger Monitor с нужной очередью инициализации.
Управлять объектами удаленного менеджера можно с помощью WebSphere MQ Explorer и с помощью команды runmqsc. Для удаленного управления менеджером очередей необходимо:
Создать трансмиссионные очереди на менеджере, с которого производится управление и на удаленном менеджере;
Создать и стартовать каналы в обе стороны между менеджерами;
Выполнить команду runmqsc -w TimeOut RemoteQmqrName где:
TimeOut - время в секундах, в течение которого от удаленного менеджера должен прийти положительный ответ на подключение. Если время истекло, то появится следующее сообщение
AMQ8416: MQSC timed out waiting for a
response from the command server.
RemoteQmqrName - имя удаленного менеджера.
Далее с помощью команд MQSC можно управлять объектами удаленного менеджера.
Командный процессор MQSC. Основные команды
Как говорилось в предыдущих лекциях, управлять объектами WebSphere MQ можно как с помощью команд, так и с помощью WebSphere MQ Explorer. Работа и возможности, предоставляемые WebSphere MQ Explorer были рассмотрены в предыдущих лекциях. Теперь рассмотрим работу команд MQSC (MQSeries Commands). Команды WebSphere MQ разделяются на внешние и внутренние. Внешние команды представляют собой программы, откомпилированные под конкретную платформу. Некоторые из внешних команд и их назначение представлены в
Таблица 5.4. Список внешних команд WebSphere MQ
Команда
Назначение
amqmcert
Управление сертификатами для использования механизма SSL
amqmdain
Создание WebSphere MQ services (только для платформыWindows)
crtmqcvx
Конвертация С кода в структуру WebSphere MQ
crtmqm
Создание локального менеджера очередей
dltmqm
Удаление локального менеджера очередей
dmpmqaut
Удаление (dump) авторизации к объекту
dmpmqlog
Преобразование лог-файлов менеджера в "читаемый" вид
dspmq
Просмотр состояния менеджера очередей
dspmqaut
Просмотр прав доступа к объектам
dspmqcap
Просмотр количества процессоров
dspmqcsv
Просмотр состояния командного сервера
dspmqfls
Вывод файловой структуры объектов
dspmqtrc
Вывод трассировки в файл (только для HP-UX, Linux, и Solaris)
dspmqtrn
Просмотр незавершенных транзакций
endmqcsv
Остановка командного сервера
endmqlsr
Остановка службы listener
endmqm
Остановка менеджера
endmqtrc
Остановка режима трассировки (кроме AIX платформы)
rcdmqimg
Запись состояния объектов в файл
rcrmqobj
Восстановление состояния объектов из файла
rsvmqtrn
Управление незавершенными транзакциями
runmqchi
Запуск службы channel initiator
runmqchl
Старт sender или requester каналов
runmqdlq
Восстановление сообщений из очереди недоставленных сообщений
runmqlsr
Запуск службы listener
runmqsc
Запуск командного процессора внутренних команд MQSC
runmqtmc
Запуск trigger monitor для клиентской части (только для AIX платформы)
runmqtrm
Запуск trigger monitor
setmqaut
Предоставление прав доступа к объектам
setmqcap
Установка количества процессоров
strmqcsv
Запуск командного сервера
strmqm
Запуск менеджера очередей
strmqtrc
Запуск режима трассировки
Из выделим команду runmqsc, которая является своего рода командным процессором для выполнения внутренних MQSC команд, позволяющих управлять объектами как локального, так и удаленного менеджера. Синтаксис команды:
runmqsc -e / -v /-w QmgrName
где:
-e - исключение вывода результата выполнения команд в отчет. Полезно для использования при вводе команд в интерактивном режиме.
-v - проверка синтаксиса команд без их выполнения. Если далее указана опция -w, то она игнорируется.
-w - время в секундах, в течение которого от удаленного менеджера должен прийти положительный ответ на подключение. С помощью данной опции возможно управление объектами удаленного менеджера. Если время истекло, то появится следующее сообщение:
AMQ8416: MQSC timed out waiting for a response from the command server.
QmgrName - имя менеджера очередей. Имя менеджера, являющегося менеджером по умолчанию указывать не обязательно.
Кроме непосредственного ввода внутренних команд из командной строки данная команда позволяет выполнять командный файл, содержащий различные сценарии создания и управления объектами. В таком случае синтаксис будет выглядеть
runmqsc QmgrName < create_obj.txt
где:
create_obj.txt - файл, содержащий внутренние команды MQSC. Внутренние команды могут состоять из нескольких операторов. На первом месте стоит оператор, указывающий действие. На втором месте указывается тип объекта, к которому применяется первый оператор. Типы объектов указываются следующими операторами:
CHANNEL - канал;
CHSTATUS - состояние канала;
CLUSQMGR - информация о кластерных каналах менеджера;
PROCESS - процесс;
NAMELIST - список кластеров;
QALIAS - очередь ALIAS;
QCLUSTER - кластерная очередь;
QLOCAL - локальная очередь;
QMGR - менеджер;
QMODEL - модельная очередь;
QREMOTE - локальная удаленная очередь.
Основные операторы, которые, как правило, стоят на первом месте внутренней команды.
ALTER - изменение свойств объекта;
CLEAR - удаление сообщений из очереди;
DEFINE - создание объекта;
DELETE - удаление объекта;
DISPLAY - вывод информации об объекте;
END - выход из командного процессора runmqsc;
PING - проверка соединения;
REFRESH - обновление информации;
RESET -
RESET CLUSTER - выводит менеджер очередей из кластера WebSphere MQ;
RESET CHANNEL - сбрасывает счетчики сообщений у канала;
RESOLVE - управление сообщениями с признаком незавершенной транзакции;
RESUME - оповещение кластера WebSphere MQ о том, что менеджер очередей снова включен в данный кластер;
START - оператор старта;
STOP - оператор останова;
SUSPEND - временное исключение менеджера из кластера WebSphere MQ;
Подробный синтаксис команд можно узнать из документации.
Пример создания интерфейсов передачи данных в обе стороны между двумя менеджерами QM_Win2000 и QM_HPUX с адресами 198.32.100.26 и 198.32.100.16(1421), причем на менеджере QM_HPUX канал отправитель должен переходить в состояние running как только в соответствующей трансмиссионной очереди появляется сообщение. Для этого создаются объекты на менеджере QM_Win2000:
HPUX_Win2000.Q - локальная очередь, в которую будут приходить сообщения от менеджера QM_HPUX;
HPUX_Win2000.CH - канал получатель;
Win2000_HPUX.TQ - трансмиссионная очередь передачи;
Win2000_HPUX.RQ - локальная удаленная очередь;
Win2000_HPUX.CH - канал отправитель.
При создании объектов с помощью команды DEFINE следует учитывать, что если имя объекта не "берется" в символы "'", то объект будет создан с именем, содержащим только заглавные буквы. То же относится и к другим командам.
Набор команд для создания объектов выглядит следующим образом.
DEFINE QLOCAL ('HPUX_Win2000.Q')
Эти команды можно поместить в два текстовых файла, а затем, выполнив команду runmqsc на каждом менеджере с указанием соответствующего файла, можно получить готовый интерфейс для передачи данных между двумя платформами: UNIX и Windows. Кроме этого, используя команды рестарта каналов, можно управлять их состоянием.