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

Misty Stanley-Jones commented on HBASE-11791:
---------------------------------------------

First level of notes based on slides. Any corrections of misunderstandings or 
things that have changed since the slide deck appreciated. Organization is very 
rough and I haven't actually looked at the existing docs on this yet (I am sure 
they are completely out of date).

Notes on ACLs / Tags

Security Model
        Definitions
                Tags - metadata on a cell, distinct from the key and value. 
Compressed when persisted to HFiles. Server-side only -- clients cannot get or 
send. Replicated correctly if cross-cluster replication enabled.

                Role-Based Access Control - uses groups and ACLs to control 
access
                Attribute-Based Access Control - uses labels to control access

                Cell ACLs (HBASE-7662) - ability to set ACLs (RWXAC) at cell 
level (NS -> Table -> CF -> Cell). WOrks same as other ACLs. Scoped to same 
point in time as the cell. Union of user's table perms, CF perms, and cell 
perms grants permission for the mutation (CRUD). Can be used with labels 
(VisibilityController).

                Groups
                
                Cell Labels (HBASE-7663) - arbitrary strings (such as secret, 
topsecret) and boolean expressions. Admin API and shell commands for 
management. Schema / set of labels defined up front. Users label cells during 
Puts, authorization is checked on gets and scans. Effective set of auths for a 
user are built uper request. Scan results are filtered according to user's 
authorizations. Can be used with ACLs (Access Controller).

                Transparent Encryption (HBASE-7544) - HFile blocks are 
encrypted during write and decrypted for read. WAL serialization pluggable -- 
secure readers and writers provided. Simple key management, default provider 
integrates with Java keystore. Per-CF configuration, to allow placement of 
sensitive info in a subset of CFs.

                Endpoint EXEC Grants (HBASE-6104) - RWXCA granted to users / 
groups - X is new in 0.98. Coprocessor endpoints can be controlled 
global/table/CF.

        Components of a Security Policy
                Groups
                        Employee
                        Developer
                        Test Account
                        Service Account
                        Admin
                Permission Hierarchy
                        Global
                        Table
                        Column Family
                        Cell
                Grants Table (slide 14/15)
                Cell Labels
Server Configuration
        1. Enable hfile v3 (hfile.fmrlat.version=3)
        2. Enable SASL + Kerberos authentication
                RPC: https://hbase.apache.org/book/security.html
                ZooKeeper: https://hbase.apache.org/book/zk.sasl.auth.html
        3. Install security coprocessors:
                
hbase.coprocessor.region.classes=org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.visibility.VisibilityController,
 org.apache.hadoop.hbase.security.token.TokenProvider
                
hbase.coprocessor.master.classes=org.apache.hadoop.hbase.security.access.AccessController,
 org.apache.hadoop.hbase.security.visibility.VisibilityController
                
hbase.coprocessor.regionserver.classes=org.apache.hadoop/hbase.security.access.AccessController
        4. Enable endpoint exec checks: 
hbase.security.exec.permission.checks=true
        5. Enable transport security (optional): hbase.rpc.protection=auth-conf

RBAC: Hadoop Group Mapping Service and ACLs
        1. Map each role to an LDAP entity
        2. Set up a Hadoop group mapper (core-site.xml)
        3. Use hbase shell "whoami" command to confirm
        4. Grant permission to groups

Labels:
        1. Define labels to correspond to groups
        2. Express access rules as visibility expressions (admin|service, 
admin|service|developer, etc)
        3. Define labels in HBase Shell
        4. Assign labels to users using set_auths (set_auths 'qa', [ 'test', 
'developer' ]) (slide 24)
        5. Apply visibility expressions to cells using set_visibility (slide 25)


Administration
        Preventing data leaks:
                1. Protect data at rest
                        a. HFiles
                                1. create keystore, deploy it to all nodes with 
appropriate permissions
                                2. Enable hfile v3
                                3. Set key provider config (slide 33)
                                4. Restrict access to hbase-site.xml
                                5. You can store the password in an external 
file
                        b. WAL (slide 34)
                        c. Transparent encryption for columns which contain 
sensitive data, major compact to do the transform
                                - real-time modifiable and reversible
                                - Stored in each HFile, wrapped by master key. 
Re-keying can be done per region via major compact operation
                                - Master key rotation is possible (slide 37)
        Using a different key provider
        Using a different cipher provider

Performance Considerations
        WAL encryption 8-10% lower depending on JVM
        ACLs - table and CF are inexpensive compared to cell-level
                - Caching
                - Table or CF grant allows us to stop checking early
                - If a user will always be granted cell-level perms, give them 
CF or table level grant


> Update docs on visibility tags and ACLs
> ---------------------------------------
>
>                 Key: HBASE-11791
>                 URL: https://issues.apache.org/jira/browse/HBASE-11791
>             Project: HBase
>          Issue Type: Task
>          Components: documentation
>            Reporter: Misty Stanley-Jones
>            Assignee: Misty Stanley-Jones
>         Attachments: HBase Security Features Operators Guide - HBaseCon 2014 
> - v5.pptx
>
>
> Do a pass on the ACL and tag docs and make sure they are up to date and 
> accurate, expand to cover HBASE-10885, HBASE-11001, HBASE-11002, HBASE-11434



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to