@Override public void removeAllPaths(String authzObj, List<String> childObjects) { LOGGER.debug("#### HMS Path Update [" + "OP : removeAllPaths, " + "authzObj : " + authzObj.toLowerCase() + ", " + "childObjs : " + (childObjects == null ? "[]" : childObjects) + "]"); PathsUpdate update = createHMSUpdate(); if (childObjects != null) { for (String childObj : childObjects) { update.newPathChange(authzObj.toLowerCase() + "." + childObj).addToDelPaths( Lists.newArrayList(PathsUpdate.ALL_PATHS)); } } update.newPathChange(authzObj.toLowerCase()).addToDelPaths( Lists.newArrayList(PathsUpdate.ALL_PATHS)); notifySentryAndApplyLocal(update); }
@Override public void removePath(String authzObj, String path) { if ("*".equals(path)) { removeAllPaths(authzObj.toLowerCase(), null); } else { List<String> pathTree = PathsUpdate.parsePath(path); if(pathTree == null) { return; } LOGGER.debug("#### HMS Path Update [" + "OP : removePath, " + "authzObj : " + authzObj.toLowerCase() + ", " + "path : " + path + "]"); PathsUpdate update = createHMSUpdate(); update.newPathChange(authzObj.toLowerCase()).addToDelPaths(pathTree); notifySentryAndApplyLocal(update); } }
/** * Removes a given authzObj and all paths belongs to it from the * authzObj -> [Paths] mapping as well as persist the corresponding * delta path change to Sentry DB. * * @param authzObj the given authzObj to be deleted * @param event the NotificationEvent object from where authzObj and locations were obtained */ private void removeAllPaths(String authzObj, NotificationEvent event) throws Exception { // AuthzObj is case insensitive authzObj = authzObj.toLowerCase(); LOGGER.debug("HMS Path Update [" + "OP : removeAllPaths, " + "authzObj : " + authzObj + ", " + "notification event ID: " + event.getEventId() + "]"); UniquePathsUpdate update = new UniquePathsUpdate(event, false); update.newPathChange(authzObj).addToDelPaths( Lists.newArrayList(PathsUpdate.ALL_PATHS)); sentryStore.deleteAllAuthzPathsMapping(authzObj, update); }
+ "path : " + location + ", " + "notification event ID: " + event.getEventId() + "]"); update.newPathChange(authzObj).addToDelPaths(splitPath(pathTree)); paths.add(pathTree);
@Override public void renameAuthzObject(String oldName, String oldPath, String newName, String newPath) { if (oldName != null) { oldName = oldName.toLowerCase(); } if (newName != null) { newName = newName.toLowerCase(); } PathsUpdate update = createHMSUpdate(); LOGGER.debug("#### HMS Path Update [" + "OP : renameAuthzObject, " + "oldName : " + oldName + "," + "newPath : " + oldPath + "," + "newName : " + newName + "," + "newPath : " + newPath + "]"); List<String> newPathTree = PathsUpdate.parsePath(newPath); if( newPathTree != null ) { update.newPathChange(newName).addToAddPaths(newPathTree); } List<String> oldPathTree = PathsUpdate.parsePath(oldPath); if( oldPathTree != null ) { update.newPathChange(oldName).addToDelPaths(oldPathTree); } notifySentryAndApplyLocal(update); }
private void updateAuthzPathsMapping(String oldAuthzObj, String oldPathTree, String newAuthzObj, String newPathTree, NotificationEvent event) throws Exception { if (oldPathTree != null) { UniquePathsUpdate update = new UniquePathsUpdate(event, false); update.newPathChange(oldAuthzObj).addToDelPaths(splitPath(oldPathTree)); sentryStore.deleteAuthzPathsMapping(oldAuthzObj, Collections.singleton(oldPathTree), update); } else if (newPathTree != null) { UniquePathsUpdate update = new UniquePathsUpdate(event, false); update.newPathChange(newAuthzObj).addToAddPaths(splitPath(newPathTree)); sentryStore.addAuthzPathsMapping(newAuthzObj, Collections.singleton(newPathTree), update); } }
update.newPathChange(oldAuthzObj).addToDelPaths(splitPath(oldPathTree)); update.newPathChange(newAuthzObj).addToAddPaths(splitPath(newPathTree)); if (oldLocation.equals(newLocation)) { update.newPathChange(oldAuthzObj).addToDelPaths(splitPath(oldPathTree)); update.newPathChange(oldAuthzObj).addToAddPaths(splitPath(newPathTree)); sentryStore.updateAuthzPathsMapping(oldAuthzObj, oldPathTree,
UniquePathsUpdate renameUpdate = new UniquePathsUpdate("u1", notificationID, false); renameUpdate.newPathChange("db3.table1") .addToDelPaths(Arrays.asList("another-warehouse", "db3.db", "table1.1")); renameUpdate.newPathChange("db1.newTable1") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); UniquePathsUpdate update = new UniquePathsUpdate("u2", notificationID, false); update.newPathChange("db1.newTable1") .addToDelPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); update.newPathChange("db1.newTable1") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable2"));
delUpdate.newPathChange("db2.table").addToDelPaths(Arrays.asList("db2", "tbl1")); sentryStore.deleteAuthzPathsMapping("db2.table", Sets.newHashSet("db2/tbl1"), delUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes);
UniquePathsUpdate renameUpdate = new UniquePathsUpdate("u1", lastNotificationId, false); renameUpdate.newPathChange("db1.table1") .addToDelPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "table1")); renameUpdate.newPathChange("db1.newTable1") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1"));
.addToDelPaths(Arrays.asList("db1", "tbl1")); localSentryStore.deleteAuthzPathsMapping("db1.table", Sets.newHashSet("db1/tbl1"), delUpdate); pathsUpdate = localSentryStore.retrieveFullPathsImageUpdate(prefixes); .addToDelPaths(Lists.newArrayList(PathsUpdate.ALL_PATHS)); localSentryStore.deleteAllAuthzPathsMapping("db1.table", delAllupdate); pathsUpdate = localSentryStore.retrieveFullPathsImageUpdate(prefixes);
.addToDelPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "table1")); renameUpdate.newPathChange("db1.newTable1") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); .addToDelPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); renameUpdate.newPathChange("db1.newTable2") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); .addToDelPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable1")); update.newPathChange("db1.newTable1") .addToAddPaths(Arrays.asList("user", "hive", "warehouse", "db1.db", "newTable2"));
.addToDelPaths(Arrays.asList("db1", "tbl1")); sentryStore.deleteAuthzPathsMapping("db1.table", Sets.newHashSet("db1/tbl1"), delUpdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes); .addToDelPaths(Lists.newArrayList(PathsUpdate.ALL_PATHS)); sentryStore.deleteAllAuthzPathsMapping("db1.table", delAllupdate); pathsUpdate = sentryStore.retrieveFullPathsImageUpdate(prefixes);