Appendix D. Access Control Matrix

The following matrix shows the minimum permission set required to perform operations in HBase. Before using the table, read through the information about how to interpret it.

Interpreting the ACL Matrix Table

The following conventions are used in the ACL Matrix table:

Scopes

Permissions are evaluated starting at the widest scope and working to the narrowest scope. A scope corresponds to a level of the data model. From broadest to narrowest, the scopes are as follows::

  • Global

  • Namespace (NS)

  • Table

  • Column Family (CF)

  • Column Qualifier (CQ)

  • Cell

For instance, a permission granted at table level dominates any grants done at the Column Family, Column Qualifier, or cell level. The user can do what that grant implies at any location in the table. A permission granted at global scope dominates all: the user is always allowed to take that action everywhere.

Permissions

Possible permissions include the following:

  • Superuser - a special user that belongs to group "supergroup" and has unlimited access

  • Admin (A)

  • Create (C)

  • Write (W)

  • Read (R)

  • Execute (X)

For the most part, permissions work in an expected way, with the following caveats:

The following table is sorted by the interface that provides each operation. In case the table goes out of date, the unit tests which check for accuracy of permissions can be found in hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java, and the access controls themselves can be examined in hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java.

Table D.1. ACL Matrix

InterfaceOperationMinimum ScopeMinimum Permission

Master

createTable

Global

C

modifyTable

Table

A|C

deleteTable

Table

A|C

truncateTable

Table

A|C

addColumn

Table

A|C

modifyColumn

Table

A|C

deleteColumn

Table

A|C

disableTable

Table

A|C

disableAclTable

None

Not allowed

enableTable

Table

A|C

move

Global

A

assign

Global

A

unassign

Global

A

regionOffline

Global

A

balance

Global

A

balanceSwitch

Global

A

shutdown

Global

A

stopMaster

Global

A

snapshot

Global

A

clone

Global

A

restore

Global

A

deleteSnapshot

Global

A

createNamespace

Global

A

deleteNamespace

Namespace

A

modifyNamespace

Namespace

A

flushTable

Table

A|C

getTableDescriptors

Global|Table

A

mergeRegions

Global

A

RegionopenGlobalA

openRegion

Global

A

closeGlobalA

closeRegion

Global

A

stopRegionServer

Global

A

rollHLog

Global

A

mergeRegions

Global

A

appendTable|CF|CQW
deleteTable|CF|CQ|Cell (if the user has write permission for all cells)W
existsTable|CF|CQR
getTable|CF|CQR
getClosestRowBeforeTable|CF|CQR
incrementTable|CF|CQW
putTable|CF|CQW

flush

Global|Table

A|C

split

Global|Table

A

compact

Global|Table

A|C

bulkLoadHFileTableW
prepareBulkLoadTableC
cleanupBulkLoadTableW
checkAndDeleteTable|CF|CQRW
checkAndPutTable|CF|CQRW
incrementColumnValueTable|CF|CQRW
scannerCloseTableR
scannerNextTableR
scannerOpenTable|CQ|CFR 

Endpoint

invoke

Endpoint

X

AccessController

grant

Global|Table|NS

A

revoke

Global|Table|NS

A

getUserPermissions

Global|Table|NS

A

checkPermissions

Global|Table|NS

A


comments powered by Disqus