Предоставить разрешение на предоставление пользователю только определенных ролей - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть роль A и роль B, я хочу дать разрешение некоторым пользователям передавать роль A другому пользователю, но не роль B. На самом деле я использую GRANT GRANT ANY ROLE TO user, но это позволяет пользователю назначать любую роль, какую он хочет.

Так что в основном мне нужно что-то вроде GRANT GRANT A TO username.

РЕДАКТИРОВАТЬ: роль, которую пользователь должен предоставить другому пользователю, это не роль, которой он принадлежит

1 Ответ

0 голосов
/ 09 ноября 2018

Если те пользователи, которым вы пытаетесь дать это разрешение, могут принадлежать к обеим ролям, вы можете использовать WITH GRANT OPTION при предоставлении роли, которую вы хотите разрешить грантополучателю:

GRANT A TO user WITH GRANT OPTION;
GRANT B TO user;

Следовательно, user сможет предоставить роль A, но не роль B (хотя он будет принадлежать обоим).

РЕДАКТИРОВАТЬ: Указанный вами сценарий (позволяющий пользователю предоставлять роль другим лицам, не принадлежащим ей) невозможен в Oracle, за исключением случая, когда этот пользователь создал роль. Согласно Oracle Docs (https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm#SQLRF01603) «Чтобы предоставить роль, вы должны были либо получить роль с ADMIN OPTION, либо получить системную привилегию GRANT ANY ROLE, либо вы должны были создать роль».

...