Class RegExMethodAuthorizer
- All Implemented Interfaces:
MethodInvocationAuthorizer
MethodInvocationAuthorizer that only allows the execution of
those methods matching the configured regular expression.
Some known dangerous methods, like Object.getClass(), are also rejected by this
authorizer implementation, no matter whether the method matches the configured regular
expressions
or not (see RestrictedMethodAuthorizer.isPermanentlyForbiddenMethod(Method, Object)).
When correctly configured, this authorizer implementation addresses the four known security
risks: Java Reflection, Cache Modification, Region Modification and
Region Entry Modification.
For the above statement to remain true, however, the regular expressions used must be
exhaustively studied and configured so no mutator methods match. If the regular expressions are
not restrictive enough, the Region Entry Modification security risk still exists: users
with the DATA:READ:RegionName privileges will be able to execute methods (even those
modifying the entry) on the objects stored within the region and on instances used as bind
parameters of the query, so this authorizer must be used with extreme care.
Usage of this authorizer implementation is only recommended for scenarios on which the user or operator knows exactly what code is deployed to the cluster, how and when; allowing a correct configuration of the regular expressions. It might also be used on clusters on which the entries stored are immutable.
-
Constructor Summary
ConstructorsConstructorDescriptionRegExMethodAuthorizer(Cache cache, Set<String> allowedPatterns) Creates aRegExMethodAuthorizerobject and initializes it so it can be safely used in a multi-threaded environment.RegExMethodAuthorizer(RestrictedMethodAuthorizer restrictedMethodAuthorizer, Set<String> allowedPatterns) Creates aRegExMethodAuthorizerobject and initializes it so it can be safely used in a multi-threaded environment. -
Method Summary
Modifier and TypeMethodDescriptionbooleanExecutes the authorization logic to determine whether themethodis allowed to be executed on thetargetobject instance.Returns an unmodifiable view of the regular expressions used to configure this authorizer.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.geode.cache.query.security.MethodInvocationAuthorizer
initialize
-
Constructor Details
-
RegExMethodAuthorizer
Creates aRegExMethodAuthorizerobject and initializes it so it can be safely used in a multi-threaded environment.Applications can use this constructor as part of the initialization for custom authorizers (see
Declarable.initialize(Cache, Properties), when using a declarative approach.- Parameters:
cache- theCacheinstance that owns this authorizer, required in order to configure the defaultRestrictedMethodAuthorizer.allowedPatterns- the regular expressions that will be used to determine whether a method is authorized or not.
-
RegExMethodAuthorizer
public RegExMethodAuthorizer(RestrictedMethodAuthorizer restrictedMethodAuthorizer, Set<String> allowedPatterns) Creates aRegExMethodAuthorizerobject and initializes it so it can be safely used in a multi-threaded environment.- Parameters:
restrictedMethodAuthorizer- the defaultRestrictedMethodAuthorizerto use.allowedPatterns- the regular expressions that will be used to determine whether a method is authorized or not.
-
-
Method Details
-
getAllowedPatterns
Returns an unmodifiable view of the regular expressions used to configure this authorizer. This method can be used to get "read-only" access to the set containing the regular expressions that will be used to determine whether a method is allowed or not.- Returns:
- an unmodifiable view of the regular expressions used to configure this authorizer.
-
authorize
Executes the authorization logic to determine whether themethodis allowed to be executed on thetargetobject instance. If thetargetobject is an instance ofRegion, this methods also ensures that the user has theDATA:READpermission granted for the targetRegion.- Specified by:
authorizein interfaceMethodInvocationAuthorizer- Parameters:
method- theMethodthat should be authorized.target- theObjecton which theMethodwill be executed.- Returns:
trueif themethodcan be executed on on thetargetinstance,falseotherwise.- See Also:
-