I was wondering why our Sentry Server, which is, essentially, a wrapper
around the storage layer is so complex. It seems that a lot of complexity
(putting HDFS sync aside) is coming from the fact that the Sentry Server
knows too much about HMS semantics. For example, the only reason we need to
have synchronization between HMS and Sentry in Sentry HA is because Sentry
actually modifies permissions on tables and databases when some permissions
actions are performed.  Also it is very smart about understanding composite
ALL permissions.

I think we can simplify this model a *LOT* if  we separate the knowledge.
Sentry Server should be just a storage of information - it shouldn't have
any smartness in it. It should store roles an groups and permissions and
allow callers to store and modify these objects but it shouldn't understand
what they actually mean. It is up to the consumers (HMS, for example) to
make smart decisions about what is ALL permissions, or what should change
when a table is dropped. Sentry server shouldn't be in the business of
changing permissions on drop table event - HMS should do that instead.

This will also simplify us to use one truly generic model for HMS and all
other components - the model would be just the data representation for
roles groups and permissions.

I think this will untangle a lot of the current complexity mess.

Any thoughts on this?

- Alex

Reply via email to