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

Brian Towles commented on SENTRY-2225:
--------------------------------------

Its not really about re-storage of attributes.  This is about collection of 
attributes (not persistence in the long term) for use in other parts of Sentry.

So lets step back a bit and look at what an ABAC system needs, not just for the 
column masking subsystem.  I think we have a bit of a disconnect on the 
relation of attributes to things like access control and column masking.

The ability for a user to tie different sources of attributes into their access 
control decisions and data presentation systems is very powerful and desired.  
The [Guide to Attribute Based Access Control (ABAC) Definition and 
Considerations|https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-162.pdf]
 talks about this and is a good reference.

One of the key parts of this is that the Policy Information Point (PIP) is 
about the retrieval of attributes and not the system of record for those 
attributes and the attributes themselves could be volatile and potentially 
change frequently.  

For the general collection and aggregation of attributes I do not feel that the 
permanent storage of attributes is needed or desired.  What the PIP side of 
this becomes is a attribute collection, aggregation, and distribution source 
but not outright persistence.  It collects the attributes from multiple sources 
based on the plugins developed for attribute collection.  It aggregates this 
into a central attribute collection that it is able to distribute to the 
bindings or Policy Decision Points (PDP).  This allows the access control 
engine or column masking decision engine to have access to the attributes where 
the decision is being made for speed and easy lookup.

The different attribute collection mechanisms would allow attributes that have 
a different valid life spans to be taken into account. User or Subject level 
attributes might have a different valid life span then HMS Object data.  It 
allows for the ability to implement different collection patterns that may need 
to be put into place, push versus pull as needed by the system providing the 
attributes.

Implementation of attribute collection can be done with a pluggable solution 
using Java Service Loader SPI framework to allow for multiple attribute 
collection sources at one time.  It would also provide set interfaces and 
loading mechanism for end user custom provided attribute loading mechanisms as 
well as additional attribute collection that could come from the project.

Once attributes are ingested, column masking and other components in the system 
can make use of the attributes in order to make decisions.  The aggregated set 
of attributes can be distributed to the server or bindings, what ever is being 
the decision point and allow for quick local access quickly.

The way I see it the initial sources can be the HMS Table Properties I 
mentioned above as well as the Static File mechanism that could be used more 
for development and testing.

 

> Generic Attribute Ingestion and Default Implementation
> ------------------------------------------------------
>
>                 Key: SENTRY-2225
>                 URL: https://issues.apache.org/jira/browse/SENTRY-2225
>             Project: Sentry
>          Issue Type: Sub-task
>          Components: Core
>    Affects Versions: 2.1.0
>            Reporter: Anthony Young-Garner
>            Priority: Major
>              Labels: ABAC
>
> As discussed in the design document linked on SENTRY-2140, attributes and 
> their mapping to columns are created and stored in an external system. In 
> order for Sentry to make masking decisions based upon these attributes and 
> mappings, this information must be ingested from the external system. The 
> scope of this Jira is to :
>  # implement the generic extensible framework by which different external 
> systems may contribute attributes (the specific details of the design are 
> still under discussion on the parent Jira; whether there is a full plugin 
> model implemented in Sentry or whether the ingestion process will run 
> entirely external to Sentry and send the information to Sentry via Thrift API 
> is not yet decided).
>  # Implement at least one default implementation (whether this will be an 
> example implementation only for reference like a static text file or a 
> full-featured implementation more suitable for production use is under 
> discussion) 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to