@Override public void grantNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte permission) throws ThriftSecurityException, ThriftTableOperationException { Namespace.ID namespaceId = checkNamespaceId(context, ns, TableOperation.PERMISSION); security.grantNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(permission)); }
@Override public boolean hasNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte perm) throws ThriftSecurityException, ThriftTableOperationException { Namespace.ID namespaceId = checkNamespaceId(context, ns, TableOperation.PERMISSION); return security.hasNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(perm)); }
@Override public void revokeNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte permission) throws ThriftSecurityException, ThriftTableOperationException { Namespace.ID namespaceId = checkNamespaceId(context, ns, TableOperation.PERMISSION); security.revokeNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(permission)); }
@Override public boolean checkNamespaceClass(TInfo tinfo, TCredentials credentials, String ns, String className, String interfaceMatch) throws TException, ThriftTableOperationException, ThriftSecurityException { security.authenticateUser(credentials, credentials); Namespace.ID namespaceId = checkNamespaceId(context, ns, null); ClassLoader loader = getClass().getClassLoader(); Class<?> shouldMatch; try { shouldMatch = loader.loadClass(interfaceMatch); AccumuloConfiguration conf = context.getServerConfFactory() .getNamespaceConfiguration(namespaceId); String context = conf.get(Property.TABLE_CLASSPATH); ClassLoader currentLoader; if (context != null && !context.equals("")) { currentLoader = AccumuloVFSClassLoader.getContextManager().getClassLoader(context); } else { currentLoader = AccumuloVFSClassLoader.getClassLoader(); } Class<?> test = currentLoader.loadClass(className).asSubclass(shouldMatch); test.newInstance(); return true; } catch (Exception e) { log.warn("Error checking object types", e); return false; } }
private void alterNamespaceProperty(TCredentials c, String namespace, String property, String value, TableOperation op) throws ThriftSecurityException, ThriftTableOperationException { Namespace.ID namespaceId = null; namespaceId = ClientServiceHandler.checkNamespaceId(master.getContext(), namespace, op); if (!master.security.canAlterNamespace(c, namespaceId)) throw new ThriftSecurityException(c.getPrincipal(), SecurityErrorCode.PERMISSION_DENIED); try { if (value == null) { NamespacePropUtil.removeNamespaceProperty(master.getContext(), namespaceId, property); } else { NamespacePropUtil.setNamespaceProperty(master.getContext(), namespaceId, property, value); } } catch (KeeperException.NoNodeException e) { // race condition... namespace no longer exists? This call will throw an exception if the // namespace was deleted: ClientServiceHandler.checkNamespaceId(master.getContext(), namespace, op); log.info("Error altering namespace property", e); throw new ThriftTableOperationException(namespaceId.canonicalID(), namespace, op, TableOperationExceptionType.OTHER, "Problem altering namespaceproperty"); } catch (Exception e) { log.error("Problem altering namespace property", e); throw new ThriftTableOperationException(namespaceId.canonicalID(), namespace, op, TableOperationExceptionType.OTHER, "Problem altering namespace property"); } }
String newName = validateNamespaceArgument(arguments.get(1), tableOp, null); Namespace.ID namespaceId = ClientServiceHandler.checkNamespaceId(master.getContext(), oldName, tableOp); if (!master.security.canRenameNamespace(c, namespaceId)) Namespaces.NOT_DEFAULT.and(Namespaces.NOT_ACCUMULO)); Namespace.ID namespaceId = ClientServiceHandler.checkNamespaceId(master.getContext(), namespace, tableOp); if (!master.security.canDeleteNamespace(c, namespaceId))
@Override public boolean hasNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte perm) throws ThriftSecurityException, ThriftTableOperationException { String namespaceId = checkNamespaceId(instance, ns, TableOperation.PERMISSION); return security.hasNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(perm)); }
@Override public void revokeNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte permission) throws ThriftSecurityException, ThriftTableOperationException { String namespaceId = checkNamespaceId(instance, ns, TableOperation.PERMISSION); security.revokeNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(permission)); }
@Override public void grantNamespacePermission(TInfo tinfo, TCredentials credentials, String user, String ns, byte permission) throws ThriftSecurityException, ThriftTableOperationException { String namespaceId = checkNamespaceId(instance, ns, TableOperation.PERMISSION); security.grantNamespacePermission(credentials, user, namespaceId, NamespacePermission.getPermissionById(permission)); }
@Override public boolean checkNamespaceClass(TInfo tinfo, TCredentials credentials, String ns, String className, String interfaceMatch) throws TException, ThriftTableOperationException, ThriftSecurityException { security.authenticateUser(credentials, credentials); String namespaceId = checkNamespaceId(instance, ns, null); ClassLoader loader = getClass().getClassLoader(); Class<?> shouldMatch; try { shouldMatch = loader.loadClass(interfaceMatch); AccumuloConfiguration conf = context.getServerConfigurationFactory() .getNamespaceConfiguration(namespaceId); String context = conf.get(Property.TABLE_CLASSPATH); ClassLoader currentLoader; if (context != null && !context.equals("")) { currentLoader = AccumuloVFSClassLoader.getContextManager().getClassLoader(context); } else { currentLoader = AccumuloVFSClassLoader.getClassLoader(); } Class<?> test = currentLoader.loadClass(className).asSubclass(shouldMatch); test.newInstance(); return true; } catch (Exception e) { log.warn("Error checking object types", e); return false; } }
private void alterNamespaceProperty(TCredentials c, String namespace, String property, String value, TableOperation op) throws ThriftSecurityException, ThriftTableOperationException { String namespaceId = null; namespaceId = ClientServiceHandler.checkNamespaceId(master.getInstance(), namespace, op); if (!master.security.canAlterNamespace(c, namespaceId)) throw new ThriftSecurityException(c.getPrincipal(), SecurityErrorCode.PERMISSION_DENIED); try { if (value == null) { NamespacePropUtil.removeNamespaceProperty(namespaceId, property); } else { NamespacePropUtil.setNamespaceProperty(namespaceId, property, value); } } catch (KeeperException.NoNodeException e) { // race condition... namespace no longer exists? This call will throw an exception if the // namespace was deleted: ClientServiceHandler.checkNamespaceId(master.getInstance(), namespaceId, op); log.info("Error altering namespace property", e); throw new ThriftTableOperationException(namespaceId, namespace, op, TableOperationExceptionType.OTHER, "Problem altering namespaceproperty"); } catch (Exception e) { log.error("Problem altering namespace property", e); throw new ThriftTableOperationException(namespaceId, namespace, op, TableOperationExceptionType.OTHER, "Problem altering namespace property"); } }
String newName = validateNamespaceArgument(arguments.get(1), tableOp, null); String namespaceId = ClientServiceHandler.checkNamespaceId(master.getInstance(), oldName, tableOp); if (!master.security.canRenameNamespace(c, namespaceId, oldName, newName)) Namespaces.NOT_DEFAULT.and(Namespaces.NOT_ACCUMULO)); String namespaceId = ClientServiceHandler.checkNamespaceId(master.getInstance(), namespace, tableOp); if (!master.security.canDeleteNamespace(c, namespaceId))