Разрешения IBM System i для представлений базы данных

8

У нас есть IBM System i под управлением IBM i OS v6r1. В этой системе я создал несколько представлений базы данных. То, что я хочу сделать, это дать определенной группе пользователей доступ ТОЛЬКО к этим представлениям и ничего больше в библиотеке, в которой находятся представления. Это возможно? У меня была группа пользователей, которая имела разрешения только на чтение для всех таблиц и представлений в библиотеке, в которой находятся мои представления, и доступ работает, когда пользователь находится в этой группе пользователей. Я попытался скопировать группу пользователей, а затем назначить разрешения только для тех представлений, которые я создал, и доступ запрещен. Должен ли пользователь или группа пользователей также иметь разрешения для таблицы, из которой происходит представление, для доступа к представлению?

Большой EMPin
источник
Рассмотрите возможность размещения этого на dba.stackexchange.com
WarrenT
@WarrenT, верьте, хотите это или нет, но на самом деле это такой же вопрос системного администрирования, как и вопрос БД для iSeries / midrange - база данных DB2 тесно интегрирована в OS / 400, и, судя по вопросу, это похоже на ее разрешения для OS / 400 библиотека, которая запутывает вещи. (К сожалению, прошло так много времени с тех пор, как я вошел в среднечастотную коробку, я не уверен на 100%, как решить проблему!)
voretaq7
@ voretaq7 Да. База данных не только вплетена в сущность операционной системы, она встроена в саму машину (интерфейс машины, MI). Прошло уже более десяти лет с тех пор, как я был QSECOFR, поэтому мне пришлось бы искать ответ. Но так как никто здесь еще не ответил, и это справедливая игра для обоих сайтов, я подумал, что в dba может быть кто-то, кто мог бы знать это по уши.
WarrenT

Ответы:

4

Да. Недостаточно предоставить полномочия для использования представления. Пользователь также должен иметь права доступа к базовой таблице.

Одним из способов разрешить доступ ограниченному пользователю является принятие полномочий. Для примера давайте предположим следующее:

Пользователь RESTRICTED не имеет доступа к каким-либо таблицам. Все библиотеки либо AUT (* EXCLUDE), либо пользователь RESTRICTED имеет полномочия * EXCLUDE для всех библиотек. ПОЛНОМОЧИЯ ПОЛЬЗОВАТЕЛЯ может получить доступ (или владеет) таблицами и библиотеками. Библиотека DATA имеет таблицы. Библиотека PROGRAMS имеет свои программы и хранимые процедуры.

ПОЗВОЛИТЕ создать хранимую процедуру RPG в библиотеке PROGRAMS. Убедитесь, что в программе указан USRPRF (* OWNER). Это означает, что при запуске программы она будет использовать полномочия владельца (РАЗРЕШЕНО), а не полномочия выполняющего ее профиля (ОГРАНИЧЕНО).

Предоставьте пользователю PERMITTED * USE права доступа к объекту программы RPG - или GRANT через SQL. Также предоставьте пользователю RESTRICTED * USE доступ к программным библиотекам. Это позволит RESTRICTED выполнить хранимую процедуру / программу.

Обратите внимание, что пользователь RESTRICTED не имеет прав доступа к таблицам в DATA, и вы хотите оставить его таким.

Теперь пользователь RESTRICTED использует SQL для вызова хранимой процедуры. У нее есть права на выполнение программы, потому что она имеет права * USE на библиотеку PROGRAMS, а также на скомпилированный программный объект. Хранимая процедура запускается с разрешения владельца PERMITTED, и, поскольку PERMITTED имеет полный доступ к библиотеке DATA и таблицам в ней, хранимая процедура может получать доступ к этим таблицам / обновлять их. Любой необработанный SQL, который пытается использовать RESTRICTED, потерпит неудачу из-за недостаточных прав доступа - единственное, что она может сделать, это вызвать хранимые процедуры, созданные для нее.

Если ваши программы хранятся в той же библиотеке, что и ваши данные, вам необходимо предоставить RESTRICTED * USE полномочия для библиотеки и конкретно ограничить ее (через * EXCLUDE) для всех таблиц в этой библиотеке. Может быть проще создать ОГРАНИЧЕННУЮ библиотеку, которая содержит только хранимые процедуры, и авторизовать ее для этой библиотеки. Это облегчает текущее обслуживание, потому что вам не нужно пытаться помнить, чтобы ограничивать ее только что созданными таблицами в DATA.

Бак Калабро
источник