[ 
https://issues.apache.org/jira/browse/RANGER-606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14992808#comment-14992808
 ] 

Yan commented on RANGER-606:
----------------------------

[~bganesan] Thanks for explanation. I'm sorry that I did not make my points, 
which are rephrased/reorganised below clear. Please take a look.

1) I'm not sure about the role of Ranger Policies. If they represent the 
current *state* of the security system, they should capture and persistent the 
final state of the security system which will be consulted when the 
authorization requests come in. 
2) If the policies represent series of *actions* that are performed to 
(re)establish the final state, then some rules need to be present to perform 
these actions to ascertain the final state, either behind scenes at policy 
creation/modification and persistent on disk, or at the authorization request 
time, which would be very inefficient. Examples of such rules are execution in 
time sequence, or priority-based (like priority of DENY over GRANT).
3) My guess is that the policies now represent the states, and not actions. 
Please correct me if I am wrong here. This is also what FS(HDFS) and many SQL 
products seem to adopt, namely their authorization decisions are  based on 
security states that are changed by actions that are *not* recorded after 
execution once.
4) If policies are states,  there could be various actions to work on them. The 
actions do not need to be recorded or persistent after executed once. They 
could be recorded, however, for future auditing/analysis purposes.

Given these points, my opinions in my last comment are:
1) Separate action clearly from states. Currently, the GRANT/REVOKE action is 
actually realised through adding/removing the states, i.e., the policy items. 
If more convenient ways of manipulating the states are desired, they might be 
better to be added somewhere else from the Policies representing states.
2) The suggestion of using more fields as keys to guarantee privilege 
uniqueness is really to guarantee the self-consistence of the "states" of the 
security system. Otherwise either chaos would arise over time or some extra 
conflict resolution mechanism would need to be introduced. This is not a novel 
idea. Note that, for instance, FS ACLs are keyed on the (user/group, disk 
entry) pair; while the SQL privileges are keyed on a triplet of (user/role, 
object, privilege type(insert, select, update, ...)).
3) The "policy tagging" I referred last time is really not a new "policy type" 
I introduced, but just my realisation of how the policy can be viewed 
conceptually, even on the basis of the current Ranger codes.
4) An observation is that one challenge is to bridge the gaps among different 
privilege systems in a least intrusive way. Notably HDFS and Hive have some 
striking differences of their privilege models; they also share many common 
features. If Ranger can bridge the gaps between HDFS and Hive further, for 
which it has already done great I believe, it would become even more attractive.

The changes we could do, as I can perceive now, are:

1) To the minimum, add the sanity check to the policy items per policy. That 
is, to add uniqueness check beyond just the check on "resource". This is 
probably a must; otherwise, I am afraid, chaos might reign in the future. Note 
that this will probably require disparate sanity checks for different service 
types, particularly for HDFS and Hive, which is seemingly absent now.
2) Next, a "DENY" action, not a policy, is introduced to facilitate easy 
removals of granted privileges. Different derivatives of DENY such as 
DENY...EXCLUDE are optional.
3) Further closing/messaging of the remaining gaps among various privilege 
models may be introduced. New concepts such as "default policies" might be 
introduced.   And further disparate policy evaluation might be needed as well.
4) Policy versioning may be introduced to support more advanced 
auditing/analysis.

3) and 4)  probably are long term goals, and of course are subject to future 
discussions.

We are very interested in Ranger. Once the scopes are finalised and approved by 
you, we will definitely help in implementation.  Thanks.

> Add support for deny policies 
> ------------------------------
>
>                 Key: RANGER-606
>                 URL: https://issues.apache.org/jira/browse/RANGER-606
>             Project: Ranger
>          Issue Type: Bug
>          Components: admin, plugins
>    Affects Versions: 0.5.0
>            Reporter: Madhan Neethiraj
>            Assignee: Madhan Neethiraj
>             Fix For: 0.5.0
>
>
> Currently Ranger supports creation of policies that can allow access when 
> specific conditions are met (for example, resources, user, groups, 
> access-type, custom-conditions..). In addition to this, having the ability to 
> create policies that deny access for specific conditions will help address 
> many usecases, like:
> - deny access for specific users/groups/ip-addresses/time-of-day
> - deny access when specific conditions are met - like 
> resources/users/groups/access-types/custom-conditions



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to