@Override
  public void postStartMaster(ObserverContext<MasterCoprocessorEnvironment> c) throws IOException {
    if (!initialized) {
      return;
    }
    try (Admin admin = c.getEnvironment().getConnection().getAdmin()) {
      if (admin.tableExists(PermissionStorage.ACL_TABLE_NAME)) {
        // Check if acl table has 'm' CF, if not, add 'm' CF
        TableDescriptor tableDescriptor = admin.getDescriptor(PermissionStorage.ACL_TABLE_NAME);
        boolean containHdfsAclFamily = Arrays.stream(tableDescriptor.getColumnFamilies()).anyMatch(
          family -> Bytes.equals(family.getName(), SnapshotScannerHDFSAclStorage.HDFS_ACL_FAMILY));
        if (!containHdfsAclFamily) {
          TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableDescriptor)
            .setColumnFamily(ColumnFamilyDescriptorBuilder
              .newBuilder(SnapshotScannerHDFSAclStorage.HDFS_ACL_FAMILY).build());
          admin.modifyTable(builder.build());
        }
        aclTableInitialized = true;
      } else {
        throw new TableNotFoundException(
          "Table " + PermissionStorage.ACL_TABLE_NAME + " is not created yet. Please check if "
            + getClass().getName() + " is configured after " + AccessController.class.getName());
      }
    }
  }
Provider for mapping principal names to Users
hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/SnapshotScannerHDFSAclController.java