public void requireTablePermission(User user, String request, TableName tableName, byte[] family,
    byte[] qualifier, Action... permissions) throws IOException {
    AuthResult result = null;

    for (Action permission : permissions) {
      if (authManager.authorizeUserTable(user, tableName, permission)) {
        result = AuthResult.allow(request, "Table permission granted", user, permission, tableName,
          null, null);
        result.getParams().setFamily(family).setQualifier(qualifier);
        break;
      } else {
        // rest of the world
        result = AuthResult.deny(request, "Insufficient permissions", user, permission, tableName,
          family, qualifier);
        result.getParams().setFamily(family).setQualifier(qualifier);
      }
    }
    logResult(result);
    if (!result.isAllowed()) {
      throw new AccessDeniedException("Insufficient permissions " + result.toContextString());
    }
  }
Authorizes that the current user has any of the given permissions for the given table, column
family and column qualifier.
@param user      Active user to which authorization checks should be applied
@param request   Request type
@param tableName Table requested
@param family    Column family param
@param qualifier Column qualifier param
@throws IOException           if obtaining the current user fails
@throws AccessDeniedException if user has no authorization
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessChecker.java