@InterfaceAudience.Private public class AccessControlLists extends Object
AccessController.
 
 Access control lists are stored in an "internal" metadata table named
 _acl_. Each table's permission grants are stored as a separate row,
 keyed by the table name. KeyValues for permissions assignments are stored
 in one of the formats:
 
Key Desc -------- -------- user table level permissions for a user [R=read, W=write] group table level permissions for a group user,family column family level permissions for a user group,family column family level permissions for a group user,family,qualifier column qualifier level permissions for a user group,family,qualifier column qualifier level permissions for a group
All values are encoded as byte arrays containing the codes from the org.apache.hadoop.hbase.security.access.TablePermission.Action enum.
| Modifier and Type | Field and Description | 
|---|---|
| static byte[] | ACL_GLOBAL_NAME | 
| static char | ACL_KEY_DELIMITERDelimiter to separate user, column family, and qualifier in
 _acl_ table info: column keys | 
| static byte[] | ACL_LIST_FAMILY | 
| static String | ACL_LIST_FAMILY_STRColumn family used to store ACL grants | 
| static TableName | ACL_TABLE_NAMEInternal storage table for access control lists | 
| static byte | ACL_TAG_TYPEKV tag to store per cell access control lists | 
| private static int | LIST_CODE | 
| private static org.slf4j.Logger | LOG | 
| static char | NAMESPACE_PREFIX | 
| private static int | WRITABLE_CODE | 
| private static int | WRITABLE_NOT_ENCODED | 
| Constructor and Description | 
|---|
| AccessControlLists() | 
| Modifier and Type | Method and Description | 
|---|---|
| (package private) static void | addUserPermission(org.apache.hadoop.conf.Configuration conf,
                 UserPermission userPerm,
                 Table t) | 
| (package private) static void | addUserPermission(org.apache.hadoop.conf.Configuration conf,
                 UserPermission userPerm,
                 Table t,
                 boolean mergeExistingPermissions)Stores a new user permission grant in the access control lists table. | 
| static byte[] | fromNamespaceEntry(byte[] namespace) | 
| static String | fromNamespaceEntry(String namespace) | 
| static List<Permission> | getCellPermissionsForUser(User user,
                         Cell cell) | 
| static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> | getNamespacePermissions(org.apache.hadoop.conf.Configuration conf,
                       String namespace) | 
| (package private) static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> | getPermissions(org.apache.hadoop.conf.Configuration conf,
              byte[] entryName,
              Table t)Reads user permission assignments stored in the  l:column
 family of the first table row in_acl_. | 
| static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> | getTablePermissions(org.apache.hadoop.conf.Configuration conf,
                   TableName tableName) | 
| (package private) static List<UserPermission> | getUserNamespacePermissions(org.apache.hadoop.conf.Configuration conf,
                           String namespace) | 
| (package private) static List<UserPermission> | getUserPermissions(org.apache.hadoop.conf.Configuration conf,
                  byte[] entryName) | 
| (package private) static List<UserPermission> | getUserTablePermissions(org.apache.hadoop.conf.Configuration conf,
                       TableName tableName)Returns the currently granted permissions for a given table as a list of
 user plus associated permissions. | 
| (package private) static boolean | isAclRegion(Region region)Returns  trueif the given region is part of the_acl_metadata table. | 
| (package private) static boolean | isAclTable(TableDescriptor desc)Returns  trueif the given table is_acl_metadata table. | 
| static boolean | isNamespaceEntry(byte[] entryName) | 
| static boolean | isNamespaceEntry(String entryName) | 
| (package private) static Map<byte[],org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission>> | loadAll(org.apache.hadoop.conf.Configuration conf)Load all permissions from the region server holding  _acl_,
 primarily intended for testing purposes. | 
| (package private) static Map<byte[],org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission>> | loadAll(Region aclRegion)Loads all of the permission grants stored in a region of the  _acl_table. | 
| private static Pair<String,TablePermission> | parsePermissionRecord(byte[] entryName,
                     Cell kv) | 
| private static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> | parsePermissions(byte[] entryName,
                Result result) | 
| static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> | readPermissions(byte[] data,
               org.apache.hadoop.conf.Configuration conf)Reads a set of permissions as  Writableinstances from the input
 stream. | 
| private static List<TablePermission> | readWritablePermissions(DataInput in,
                       org.apache.hadoop.conf.Configuration conf) | 
| (package private) static void | removeNamespacePermissions(org.apache.hadoop.conf.Configuration conf,
                          String namespace,
                          Table t)Remove specified namespace from the acl table. | 
| private static void | removePermissionRecord(org.apache.hadoop.conf.Configuration conf,
                      UserPermission userPerm,
                      Table t) | 
| (package private) static void | removeTablePermissions(org.apache.hadoop.conf.Configuration conf,
                      TableName tableName,
                      byte[] column,
                      Table t)Remove specified table column from the acl table. | 
| (package private) static void | removeTablePermissions(org.apache.hadoop.conf.Configuration conf,
                      TableName tableName,
                      Table t)Remove specified table from the _acl_ table. | 
| private static void | removeTablePermissions(TableName tableName,
                      byte[] column,
                      Table table,
                      boolean closeTable) | 
| (package private) static void | removeUserPermission(org.apache.hadoop.conf.Configuration conf,
                    UserPermission userPerm,
                    Table t)Removes a previously granted permission from the stored access control
 lists. | 
| static byte[] | toNamespaceEntry(byte[] namespace) | 
| static String | toNamespaceEntry(String namespace) | 
| (package private) static byte[] | userPermissionKey(UserPermission userPerm)Build qualifier key from user permission:
  username
  username,family
  username,family,qualifier | 
| (package private) static byte[] | userPermissionRowKey(UserPermission userPerm) | 
| static byte[] | writePermissionsAsBytes(org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> perms,
                       org.apache.hadoop.conf.Configuration conf)Writes a set of permissions as  Writableinstances
 and returns the resulting byte array. | 
public static final TableName ACL_TABLE_NAME
public static final byte[] ACL_GLOBAL_NAME
public static final String ACL_LIST_FAMILY_STR
public static final byte[] ACL_LIST_FAMILY
public static final byte ACL_TAG_TYPE
public static final char NAMESPACE_PREFIX
public static final char ACL_KEY_DELIMITER
private static final org.slf4j.Logger LOG
private static final int LIST_CODE
private static final int WRITABLE_CODE
private static final int WRITABLE_NOT_ENCODED
public AccessControlLists()
static void addUserPermission(org.apache.hadoop.conf.Configuration conf, UserPermission userPerm, Table t, boolean mergeExistingPermissions) throws IOException
conf - the configurationuserPerm - the details of the permission to be grantedt - acl table instance. It is closed upon method return.IOException - in the case of an error accessing the metadata tablestatic void addUserPermission(org.apache.hadoop.conf.Configuration conf, UserPermission userPerm, Table t) throws IOException
IOExceptionstatic void removeUserPermission(org.apache.hadoop.conf.Configuration conf, UserPermission userPerm, Table t) throws IOException
TablePermission being removed must exactly match what
 is stored -- no wildcard matching is attempted.  Ie, if user "bob" has
 been granted "READ" access to the "data" table, but only to column family
 plus qualifier "info:colA", then trying to call this method with only
 user "bob" and the table name "data" (but without specifying the
 column qualifier "info:colA") will have no effect.conf - the configurationuserPerm - the details of the permission to be revokedt - acl tableIOException - if there is an error accessing the metadata tableprivate static void removePermissionRecord(org.apache.hadoop.conf.Configuration conf, UserPermission userPerm, Table t) throws IOException
IOExceptionstatic void removeTablePermissions(org.apache.hadoop.conf.Configuration conf, TableName tableName, Table t) throws IOException
IOExceptionstatic void removeNamespacePermissions(org.apache.hadoop.conf.Configuration conf, String namespace, Table t) throws IOException
IOExceptionprivate static void removeTablePermissions(TableName tableName, byte[] column, Table table, boolean closeTable) throws IOException
IOExceptionstatic void removeTablePermissions(org.apache.hadoop.conf.Configuration conf, TableName tableName, byte[] column, Table t) throws IOException
IOExceptionstatic byte[] userPermissionRowKey(UserPermission userPerm)
static byte[] userPermissionKey(UserPermission userPerm)
static boolean isAclRegion(Region region)
true if the given region is part of the _acl_
 metadata table.static boolean isAclTable(TableDescriptor desc)
true if the given table is _acl_ metadata table.static Map<byte[],org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission>> loadAll(Region aclRegion) throws IOException
_acl_
 table.aclRegion - IOExceptionstatic Map<byte[],org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission>> loadAll(org.apache.hadoop.conf.Configuration conf) throws IOException
_acl_,
 primarily intended for testing purposes.IOExceptionpublic static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> getTablePermissions(org.apache.hadoop.conf.Configuration conf, TableName tableName) throws IOException
IOExceptionpublic static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> getNamespacePermissions(org.apache.hadoop.conf.Configuration conf, String namespace) throws IOException
IOExceptionstatic org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> getPermissions(org.apache.hadoop.conf.Configuration conf, byte[] entryName, Table t) throws IOException
l: column
 family of the first table row in _acl_.
 
 See class documentation for the key structure
 used for storage.
 
IOExceptionstatic List<UserPermission> getUserTablePermissions(org.apache.hadoop.conf.Configuration conf, TableName tableName) throws IOException
IOExceptionstatic List<UserPermission> getUserNamespacePermissions(org.apache.hadoop.conf.Configuration conf, String namespace) throws IOException
IOExceptionstatic List<UserPermission> getUserPermissions(org.apache.hadoop.conf.Configuration conf, byte[] entryName) throws IOException
IOExceptionprivate static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> parsePermissions(byte[] entryName, Result result)
private static Pair<String,TablePermission> parsePermissionRecord(byte[] entryName, Cell kv)
public static byte[] writePermissionsAsBytes(org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> perms, org.apache.hadoop.conf.Configuration conf)
Writable instances
 and returns the resulting byte array.
 Writes a set of permission [user: table permission]private static List<TablePermission> readWritablePermissions(DataInput in, org.apache.hadoop.conf.Configuration conf) throws IOException, ClassNotFoundException
IOExceptionClassNotFoundExceptionpublic static org.apache.hbase.thirdparty.com.google.common.collect.ListMultimap<String,TablePermission> readPermissions(byte[] data, org.apache.hadoop.conf.Configuration conf) throws DeserializationException
Writable instances from the input
 stream.DeserializationExceptionpublic static boolean isNamespaceEntry(String entryName)
public static boolean isNamespaceEntry(byte[] entryName)
public static String toNamespaceEntry(String namespace)
public static String fromNamespaceEntry(String namespace)
public static byte[] toNamespaceEntry(byte[] namespace)
public static byte[] fromNamespaceEntry(byte[] namespace)
public static List<Permission> getCellPermissionsForUser(User user, Cell cell) throws IOException
IOExceptionCopyright © 2007–2019 The Apache Software Foundation. All rights reserved.