Package xyz.cofe.trambda.sec
Class SecurityFilters<MESSAGE,SCOPE>
- java.lang.Object
-
- xyz.cofe.trambda.sec.SecurityFilters<MESSAGE,SCOPE>
-
- Type Parameters:
MESSAGE- Сообщение генерируемое фильтромSCOPE- Область проверяемых данных
- All Implemented Interfaces:
SecurityFilter<MESSAGE,SCOPE>
public class SecurityFilters<MESSAGE,SCOPE> extends Object implements SecurityFilter<MESSAGE,SCOPE>
Создание фильтров безопасности.Пример:
import xyz.cofe.trambda.sec.SecurAccess; import xyz.cofe.trambda.sec.SecurityFilters; ... server = new TcpServer<IEnv>( ssocket, session -> new LinuxEnv(), // Задаем ряд фильтров которые проверяют на безопасный код // Фильтры проверяют байт-код на наличие определенных инструкций: // Вызов метода или чтение/изменение поля SecurityFilters.create(s -> { // Фильтры деляться на две группы: //allow() - разрешающие// иdeny() - запрещающие// Каждая группа может указана несколько раз // Фильтры применяются в порядке их указания // Применяется первый совпавший фильтр s.allow( a -> { // Здесь задаются разрешающие вызовы // Проверяет вызов методов публичного сервиса a.invoke("demo api", c->c.getOwner() .matches("xyz\\.cofe\\.trambda\\.tcp\\.demo\\.([\\w\\d]+)")); // Так же разрешено вызывать методы Java Collection a.invoke("java collections api", c->c.getOwner().matches( "java\\.util\\.(List)|java\\.util\\.stream\\.([\\w\\d]+)")); // Это разрешение на вызов методов класса String a.invoke("java lang api", c->c.getOwner().matches("java\\.lang\\.(String)")); // Это разрешение на вызов стандартных BootStrap методов, // которые генериурует javaс a.invoke("java compiler", c->c.getOwner().matches("java\\.lang\\.invoke\\.(LambdaMetafactory|StringConcatFactory)")); }); // Все остальные вызовы запрещены s.deny().any("by default"); }) );
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSecurityFilters.AllowBuilder<MESSAGE,SCOPE>Строитель разрешающего фильтраstatic classSecurityFilters.Builder<MESSAGE,SCOPE>Строитель фильтровstatic classSecurityFilters.DenyBuilder<MESSAGE,SCOPE>Строитель запрещающего фильтраstatic classSecurityFilters.PredicateBuilder<MESSAGE,SCOPE,SELF extends SecurityFilters.PredicateBuilder<MESSAGE,SCOPE,SELF>>Строитель фильтра-предиката
-
Constructor Summary
Constructors Constructor Description SecurityFilters(List<Function<SecurAccess<?,SCOPE>,Optional<xyz.cofe.fn.Tuple2<MESSAGE,Boolean>>>> validators)Конструктор
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SecurityFilters.Builder<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>>create()СозданиеSecurityFilters.Builderstatic <MESSAGE,SCOPE>
SecurityFilters.Builder<MESSAGE,SCOPE>create(Class<MESSAGE> cMsg, Class<SCOPE> cScope)СозданиеSecurityFilters.Builderstatic SecurityFilters<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>>create(Consumer<SecurityFilters.Builder<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>>> conf)Создание списка фильтровList<SecurMessage<MESSAGE,SCOPE>>validate(List<SecurAccess<?,SCOPE>> secur)Проверка инструкций на предмет безопасности
-
-
-
Method Detail
-
validate
public List<SecurMessage<MESSAGE,SCOPE>> validate(List<SecurAccess<?,SCOPE>> secur)
Проверка инструкций на предмет безопасности- Specified by:
validatein interfaceSecurityFilter<MESSAGE,SCOPE>- Parameters:
secur- инструкции- Returns:
- отчет о безопасности вызовов
-
create
public static <MESSAGE,SCOPE> SecurityFilters.Builder<MESSAGE,SCOPE> create(Class<MESSAGE> cMsg, Class<SCOPE> cScope)
СозданиеSecurityFilters.Builder- Type Parameters:
MESSAGE- Класс сообщенийSCOPE- Область проверки- Parameters:
cMsg- Класс сообщенийcScope- Область проверки- Returns:
- Cтроитель фильтров
-
create
public static SecurityFilters.Builder<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>> create()
СозданиеSecurityFilters.Builder- Returns:
- Cтроитель фильтров
-
create
public static SecurityFilters<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>> create(Consumer<SecurityFilters.Builder<String,xyz.cofe.fn.Tuple2<LambdaDump,LambdaNode>>> conf)
Создание списка фильтров- Parameters:
conf- конфигурация фильтров- Returns:
- фильтр безопасности
-
-