John Omernik created DRILL-4129:
-----------------------------------

             Summary: Ability to Secure Storage plugins
                 Key: DRILL-4129
                 URL: https://issues.apache.org/jira/browse/DRILL-4129
             Project: Apache Drill
          Issue Type: Improvement
          Components: Storage - Other
    Affects Versions: 1.3.0
         Environment: All
            Reporter: John Omernik
             Fix For: Future


With more storage plugins hitting other data stores with their own 
authentication schemes, (and thus having to embed credentials into the plugin 
for access) Drill thus needs the ability to put security around these plugins.  
Two approaches, perhaps both are needed, one is to somehow challenge the user 
during the session for credentials and pass those credentials to the underlying 
storage system. This would involve caching and may or may not be useable for 
all cases .

The other is to provide a way to secure storage plugins, similar to how we 
secure views (i.e. using filesystem permissions).  There was some discussion on 
the user list,  I copied one of my posts here as a potential idea: 

Then I think the idea of securing each storage plugin may be a good idea.  Just 
an off the cuff idea: What if we had an option to enable security for storage 
plugins (an opt in process) that specified a filesystem location as a root 
location for storage plugins. 

Each storage plugin created would get a directory under that root.  

STORAGE_PLUGIN_SECURITY_ROOT="maprfs://data/storage_plugins"


Then if I had a Mongo plugin named labmongo,  a jdbc plugin named labmysql, and 
a hbase plugin named labhbase it would create directories that would be world 
readable as such:

/data/storage_plugins/labmongo
/data/storage_plugins/labmysql
/data/storage_plugins/labhbase

These would be "world readable" as to be "visible"  If you didn't want them to 
be visible to users, you could change the root permissions to be limiting, but 
only users who can read them will have them shown in "show databases"

In those directories there would be an automatically created a directory called 
"security" or "default"  

Permissions and ownership (for impersonation) for the plugin would be set by 
setting the filesystem permissions on that directory (default/security)

Then you could create views for the storage plugin itself that would be located 
in the root:
/data/storage_plugins/labmobgo/view_limited.json
/data/storage_plugins/labmongo/view_other_limited.json

And use permissions on those views like we do with permissions on filesystem 
locations. 

In addition, this model would allow us to create workspaces that are specific 
to certain tables within the storage plugin (because now we'd have a place to 
store those workspaces) and those works spaces could have permissions too.  

I can see potential pitfalls here, however, this gives flexibility and it 
matches the security model for the filesystem plugin in that people wouldn't 
have "one" way to do security for filesystem plugins, and another for 
non-filesystem plugins. It could help increase adoption and ease people into 
using it through familiarity. 




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

Reply via email to