RBAC does not replace DAC PDF Print E-mail
User Rating: / 1
PoorBest 
Written by Michael Felt   

No Looking Back:

Role Based Access Controls

RBAC is a mechanism for Access Control and that is the key to what is wrong
with most implementations using RBAC as an access control. Huh? Isn't RBAC meant to be
the next greatest thing in Access Control? What goes?
Yes. RBAC is meant to be the next step in Access Control - but it's effect as THE controlling mechanism is minimal as long as DAC is still active. DAC?? Discretionary Access Control.

Discretionalry Access Control, also known as DAC, is the traditional access control mechanism for UNIX and Linix based systems (so also OS/X and deep down NT-based systems). Actually, any access system where the owner of a "object" (file, device, directory, or any other names for "special" something) can modify the access permissions - at whim - is discretionary.

Focusing on UNIX/Linux based permissions there are 9 (nine) permission bits we need to
understand - actually - 3 sets of 3 bits - one each for read, write and execute (rwx). The three sets are referred to as "user", "group" and "other". Some call the "other" bits by the name "world". In this discussion we shall use the term "other".

On UNIX an identity at any given time is: euid,set of group ids. Normally the euid == ruid i.e. effective uid == real uid - where ruid is meant to be a login id. Using DAC mechanisms the OS looks at the active identity (try the command id to see your current identity) and the object permission sets. If the "owner id" and euid match, then those bits determine the current access. If the owner IDs do not match then the system looks at the "group ID" of the object and compares that with the set of active group ids and if there is a match then the group ID permissions are used to determine access control. If neither "owner" nor "group" IDs have a match then the "other" IDs determine access to the object (e.g., file, directory, device). This is where/why RBAC generally "fails". RBAC has been implemented as an additional access control mechanism - rather than as a replacement.

In other words, RBAC, by default, is always looking back - providing access the way it has always been done. The behavior is as if the OS is always looking back - determining access based on DAC first, and RBAC as a second thought.

That is all for today - next article I shall discuss how DAC is used to setup selective access control - user DAC being whatever the owner wants for themself - and other access for everyone (non-selective) else. And I'll also explain the command
"find / -group X -exec chmod 0 {} \;"
fully enables RBAC for group .

 
< Prev   Next >
109 queries executed
1
SET sql_mode = 'MYSQL40'
2 SELECT folder, element, published, params FROM jos_mambots WHERE published >= 1 AND access <= 0 AND folder = 'system' ORDER BY ordering
3 SELECT template FROM jos_templates_menu WHERE client_id = 0 AND ( menuid = 0 OR menuid = 169 ) ORDER BY menuid DESC LIMIT 1
4 DELETE FROM jos_session WHERE ( ( time < '1548313791' ) AND guest = 0 AND gid > 0 ) OR ( ( time < '1548313791' ) AND guest = 1 AND userid = 0 )
5 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 0
6 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 0
7 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 1
8 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 1
9 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'com' AND type = 2
10 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'com' AND type = 2
11 SELECT * FROM jos_menu WHERE id = 169
12 SELECT a.*, u.name AS author, u.usertype, cc.name AS category, s.name AS section, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access, s.id AS sec_id, cc.id as cat_id FROM jos_content AS a LEFT JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = cc.section AND s.scope = 'content' LEFT JOIN jos_users AS u ON u.id = a.created_by LEFT JOIN jos_groups AS g ON a.access = g.id WHERE a.id = 505 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:24' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:24' ) AND a.access <= 0
13 SELECT a.id FROM jos_content AS a WHERE a.catid = 51 AND a.state = 1 AND a.access <= 0 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:24' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:24' ) ORDER BY a.ordering
14 SELECT ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count FROM jos_content AS a LEFT JOIN jos_content_rating AS v ON a.id = v.content_id WHERE a.id = 505
15 UPDATE jos_content SET hits = ( hits + 1 ) WHERE id = '505'
16 SELECT hits FROM jos_core_log_items WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '505'
17 UPDATE jos_core_log_items SET hits = ( hits + 1 ) WHERE time_stamp = '2019-01-24' AND item_table = '#__content' AND item_id = '505'
18 SELECT folder, element, published, params FROM jos_mambots WHERE access <= 0 AND folder = 'content' ORDER BY ordering
19 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'urlkey'
20 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotactiv'
21 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotother'
22 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
23 SELECT * FROM jos_mambots WHERE id = '32'
24 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
25 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
26 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
27 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
28 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
29 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
30 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
31 SELECT * FROM jos_mambots WHERE id = '27'
32 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
33 SELECT * FROM jos_mambots WHERE id = '27'
34 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
35 SELECT * FROM jos_mambots WHERE id = '27'
36 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
37 SELECT * FROM jos_mambots WHERE id = '27'
38 SELECT a.* FROM jos_components AS a WHERE ( a.admin_menu_link = 'option=com_syndicate' OR a.admin_menu_link = 'option=com_syndicate&hidemainmenu=1' ) AND a.option = 'com_syndicate'
39 SELECT m.id FROM jos_modules AS m WHERE m.module = 'mod_rssfeed' AND m.published = 1
40 SELECT id, title, module, position, content, showtitle, params FROM jos_modules AS m INNER JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id != 1 AND ( mm.menuid = 0 OR mm.menuid = 169 ) ORDER BY ordering
41 SELECT a.id, a.introtext, a.fulltext , a.images, a.attribs, a.title, a.state FROM jos_content AS a INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE a.state = 1 AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:24' ) AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:24' ) AND a.catid = 44 AND cc.published = 1 AND s.published = 1 ORDER BY a.ordering LIMIT 15
42 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
43 SELECT * FROM jos_mambots WHERE id = '32'
44 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
45 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
46 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
47 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
48 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
49 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
50 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
51 SELECT * FROM jos_mambots WHERE id = '27'
52 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
53 SELECT * FROM jos_mambots WHERE id = '27'
54 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
55 SELECT * FROM jos_mambots WHERE id = '27'
56 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
57 SELECT * FROM jos_mambots WHERE id = '27'
58 SELECT id FROM jos_menu WHERE link = 'index.php?option=com_search' AND published = 1
59 SELECT m.*, sum(case when p.published=1 then 1 else 0 end) as cnt FROM jos_menu AS m LEFT JOIN jos_menu AS p ON p.parent = m.id WHERE m.menutype='rt_splitSuckerFish' AND m.published='1' AND m.access <= '0' GROUP BY m.id ORDER BY m.parent, m.ordering
60 SELECT m.* FROM jos_menu AS m WHERE menutype='rt_splitSuckerFish' AND m.published='1'
61 SELECT * FROM jos_banner WHERE showBanner=1
62 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
63 SELECT * FROM jos_mambots WHERE id = '32'
64 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
65 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
66 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
67 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
68 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
69 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
70 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
71 SELECT * FROM jos_mambots WHERE id = '27'
72 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
73 SELECT * FROM jos_mambots WHERE id = '27'
74 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
75 SELECT * FROM jos_mambots WHERE id = '27'
76 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
77 SELECT * FROM jos_mambots WHERE id = '27'
78 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
79 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
80 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
81 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
82 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
83 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
84 SELECT DISTINCT b.*, u.name AS username FROM jos_bookmarks_itemcat AS i LEFT JOIN jos_bookmarks AS b ON b.id = i.itemid LEFT JOIN jos_bookmarks_categories AS bc ON bc.id = i.catid LEFT JOIN jos_users AS u ON u.id = b.created_by WHERE ((b.published=1 AND b.approved=1) OR b.id IS NULL) AND i.catid IN (4) AND b.access <= '0' AND bc.published = '1' AND bc.access <= '0' AND ((b.private = 0) OR (b.private = 1 AND b.created_by = '0')) ORDER BY b.title ASC
85 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 298) ORDER BY bc.name ASC
86 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 265) ORDER BY bc.name ASC
87 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 297) ORDER BY bc.name ASC
88 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 296) ORDER BY bc.name ASC
89 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 248) ORDER BY bc.name ASC
90 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 246) ORDER BY bc.name ASC
91 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
92 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
93 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
94 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
95 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
96 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
97 SELECT DISTINCT b.*, u.name AS username FROM jos_bookmarks_itemcat AS i LEFT JOIN jos_bookmarks AS b ON b.id = i.itemid LEFT JOIN jos_bookmarks_categories AS bc ON bc.id = i.catid LEFT JOIN jos_users AS u ON u.id = b.created_by WHERE ((b.published=1 AND b.approved=1) OR b.id IS NULL) AND i.catid IN (34) AND b.access <= '0' AND bc.published = '1' AND bc.access <= '0' AND ((b.private = 0) OR (b.private = 1 AND b.created_by = '0')) ORDER BY b.title ASC LIMIT 6
98 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 142) ORDER BY bc.name ASC
99 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 289) ORDER BY bc.name ASC
100 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 242) ORDER BY bc.name ASC
101 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 294) ORDER BY bc.name ASC
102 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 284) ORDER BY bc.name ASC
103 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 293) ORDER BY bc.name ASC
104 SELECT a.id, a.title, a.sectionid, a.catid, a.created, a.hits FROM jos_content AS a LEFT JOIN jos_content_frontpage AS f ON f.content_id = a.id INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE ( a.state = 1 AND a.sectionid > 0 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:25' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:25' ) AND ((TO_DAYS('2019-01-24') - TO_DAYS(a.created)) <= '60') AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND s.published = 1 AND cc.published = 1 ORDER BY a.hits DESC LIMIT 3
105 SELECT m.* FROM jos_menu AS m WHERE menutype = 'Products' AND published = 1 AND access <= 0 ORDER BY parent, ordering
106 SELECT a.id, a.title, a.sectionid, a.catid FROM jos_content AS a LEFT JOIN jos_content_frontpage AS f ON f.content_id = a.id INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE ( a.state = 1 AND a.sectionid > 0 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2019-01-24 08:24' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2019-01-24 08:24' ) AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND s.published = 1 AND cc.published = 1 ORDER BY a.hits DESC LIMIT 3
107 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 174 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id
108 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 281 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id
109 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 431 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id