Интеграция приложений на основе WebSphere MQ

Авторизация и доступ к объектам


В предыдущей лекции были рассмотрены примеры создания интерфейсов передачи данных без учета вопросов авторизации и доступа. 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. указано соответствие между опциями и объектами.

Таблица 5.1. Соответствие между опциями команды setmqaut и объектами менеджера очередейAuthorityQueueProcessQueue managerNamelistAuthentication information
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

  • Запрет на считывание сообщение из очередей, начинающихся на 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.

    Таблица 5.2. Коды возврата команды setmqaut
    0Successful operationОшибок нет
    36Invalid arguments suppliedСодержится неправильный аргумент
    40Queue manager not availableМенеджер очередей недоступен
    49Queue manager stoppingМенеджер очередей остановлен
    69Storage not availableНевозможно сохранить изменения
    71Unexpected errorНепредвиденная ошибка
    72Queue manager name errorОшибка в имени менеджера
    133Unknown object nameНеизвестное имя объекта
    145Unexpected object nameНепредвиденное имя объекта
    146Object name missingОтсутствует имя объекта
    147Object type missingОтсутствует тип объекта
    148Invalid object typeНеправильный тип объекта
    149Entity name missingОтсутствует имя объекта
    150Authorization specification missingОтсутствует опция авторизации
    151Invalid 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. указано соответствие между опциями и объектами.

    Таблица 5.3. Соответствие между опциями команды dspmqaut и объектами менеджера очередейAuthorityQueueProcessQueue managerNamelistAuthentication information
    all +++++
    alladm +++++
    allmqi +++++
    altusr --+--
    browse +----
    chg +++++
    clr +----
    connect --+--
    crt+++++
    dlt +++++
    dsp +++++
    get +----
    inq +++++
    put +----
    set +++-+
    Рассмотрим некоторые примеры применения команды dspmqaut к объектам менеджера QM_Win2000 для учетной записи test1. В скобках дана соответствующая команда setmqaut из рассмотренных выше примеров.



    1. C:\>dspmqaut -m QM_Win2000 -t q -n A -p test1 Entity test1 has the following authorizations for object A: (К данному объекту учетная запись test1 не имеет авторизации, так как не было соответствующей команды setmqaut)



    2. 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)



    3. 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)



    4. 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)



    5. 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 )



    6. 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)



    7. 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)



    8. 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)



    9. 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)



    10. 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)



    11. 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)



    12. 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)



    13. 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.


    Содержание раздела