private boolean hasFamilyQualifierPermission(User user, Action perm,
    RegionCoprocessorEnvironment env, Map<byte[], ? extends Collection<byte[]>> familyMap)
    throws IOException {
    RegionInfo hri = env.getRegion().getRegionInfo();
    TableName tableName = hri.getTable();

    if (user == null) {
      return false;
    }

    if (familyMap != null && familyMap.size() > 0) {
      // at least one family must be allowed
      for (Map.Entry<byte[], ? extends Collection<byte[]>> family : familyMap.entrySet()) {
        if (family.getValue() != null && !family.getValue().isEmpty()) {
          for (byte[] qualifier : family.getValue()) {
            if (
              getAuthManager().authorizeUserTable(user, tableName, family.getKey(), qualifier, perm)
            ) {
              return true;
            }
          }
        } else {
          if (getAuthManager().authorizeUserFamily(user, tableName, family.getKey(), perm)) {
            return true;
          }
        }
      }
    } else if (LOG.isDebugEnabled()) {
      LOG.debug("Empty family map passed for permission check");
    }

    return false;
  }
Returns <code>true</code> if the current user is allowed the given action over at least one of
the column qualifiers in the given column families.
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java