[ 
https://issues.apache.org/jira/browse/HADOOP-11335?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Arun Suresh updated HADOOP-11335:
---------------------------------
    Attachment: HADOOP-11335.re-design.patch

[~dian.fu], I really do apologize for the delay.

Am posting a patch.. which is not really complete.. but I think It would help 
me illustrate how to use the {{KeyACLs}} interface

* I have split the {{KMSACLs}} logic into 2 parts.. one that handles the KMS 
level acls and the default and whitelist.. and another interface {{PerKeyAcls}} 
that handles key level acls.
* I was thinking that The {{PerKeyAcls}} can have multiple implementations. The 
default one that is configuration driven (I have a 
{{ConfigurationBasedPerKeyAcls}} in the patch).... Similarly, you can have a 
{{MetadataBasedPerKeyAcls}} that is initialized with a {{KeyProvider}} so that 
the ACLs can be stored within the KeyProvider metadata attributes.

With regard to the KeyProvider changes :
* I feel we should not put in Typed ACL information in the key provider 
itself.. the basic {{KeyProvider}} is meant for storing keys and associated 
metadata. I propose we store the ACLs as just another <String, String> key 
value based Metadata attribute. 
* The create / delete ACL can thus be translated to adding / removing 
attributed from the Metadata.
* This also means we dont have to modify the {{KeyProvider}} / {{Metadata}} 
classes much.. we would limit modification to 2 methods, 
{{addMetadataAttribute()}} and {{deleteMetadataAttribute}}
* The CLI keytool can still expose the same commands.. but it will translate it 
into {{addMetadata}} and {{deleteMetadata}} method invocations.

Hope this addresses most of your concers.
Please note.. I have not flushed out some of the methods (I have left it as 
TODO's) to basically dicuss the design )before we move forward.


> KMS ACL in meta data or database
> --------------------------------
>
>                 Key: HADOOP-11335
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11335
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: kms
>    Affects Versions: 2.6.0
>            Reporter: Jerry Chen
>            Assignee: Dian Fu
>              Labels: Security
>         Attachments: HADOOP-11335.001.patch, HADOOP-11335.002.patch, 
> HADOOP-11335.003.patch, HADOOP-11335.004.patch, HADOOP-11335.005.patch, 
> HADOOP-11335.re-design.patch, KMS ACL in metadata or database.pdf
>
>   Original Estimate: 504h
>  Remaining Estimate: 504h
>
> Currently Hadoop KMS has implemented ACL for keys and the per key ACL are 
> stored in the configuration file kms-acls.xml.
> The management of ACL in configuration file would not be easy in enterprise 
> usage and it is put difficulties for backup and recovery.
> It is ideal to store the ACL for keys in the key meta data similar to what 
> file system ACL does.  In this way, the backup and recovery that works on 
> keys should work for ACL for keys too.
> On the other hand, with the ACL in meta data, the ACL of each key can be 
> easily manipulate with API or command line tool and take effect instantly.  
> This is very important for enterprise level access control management.  This 
> feature can be addressed by separate JIRA. While with the configuration file, 
> these would be hard to provide.



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

Reply via email to