Для
понимания базовой функциональности Policy, рассмотрим следующую диаграмму:
Для понимания функциональности PolicyRule можно выделить следующие три подсистемы:
Класс
|
Назначение
|
PolicyEvent
|
Представляет собой контекст выполнения Policy, предоставляя доступ к своим атрибутам, как на чтение,
так и на запись. Может быть представлено PolicyEventComposite, содержащим вложенные PolicyEvent
|
PolicyCondition
|
Определяет булевское выражение, при выполнении которого Policy считается успешно выполненным
|
PolicyAction
|
Определяет последовательность действий, выполняемых над PolicyEvent при выполнении PolicyCondition
|
Таким образом, можно видеть, что PolicyRule позволяет декларативно связать произвольное булевское выражение,
определяемое PolicyCondition с
набором действий, определяемых PolicyAction, выполняемых над PolicyEvent в случае, если это булевское выражение истинно по отношению к PolicyEvent. Следующая
диаграмма показывает, что Policy представляет собой набор именованных PolicyRule:
Являясь наследником абстрактных классов Policy и PolicySet, PolicyRule определяет
следующие атрибуты:
Атрибут
|
Назначение
|
policyName
|
Уникальное имя, которое может использоваться для идентификации Policy
|
keywords
|
Набор ключевых слов (таких как: Security, Authentication, Accounting, Audit,
Error и т.п.), используемых для разделения Policy по категориям
|
isMandatoryEvaluation
|
Булевский флаг показывающий, является ли Policy обязательным для выполнения
|
usage
|
Строка, описывающая функциональность Policy в свободной форме
|
isCNF
|
Булевский признак, показывающий, что PolicyCondition строится как конъюнктивная нормальная форма (набор конъюктов, соединенных
логическим оператором “и”)
|
hasSubRules
|
Булевский флаг, показывающий наличие вложенных PolicyRule
|
Метод isPolicySetWellFormed позволяет
выполнить проверку корректности построения PolicySet. Прежде чем переходить к описанию построения PolicyCondition и PolicyAction, следует рассказать о PolicyStatement, используемом двумя этими сущностями:
Если говорить просто, PolicyStatement связывает PolicyVariable (позволяющую
получить некоторое значение из PolicyEvent, например, по имени) со значениями PolicyValue некоторым оператором PolicyOperator. Для opType, определяющего тип выполняемой операции, в рамках
SID? предопределены
следующие значения:
Значение
|
Назначение
|
1
|
Match
|
2
|
Greater than
|
3
|
Greater than
or equals
|
4
|
Less than
|
5
|
Less than or
equals
|
6
|
Equals
|
7
|
Not equals
|
8
|
IN
|
9
|
NOT IN
|
10
|
SET
|
11
|
CLEAR
|
PolicyStatement предоставляет метод isStatementWellFormed, позволяющий выполнить проверку корректности
построения оператора. Использование PolicyStatement при построении PolicyCondition
описывается следующей диаграммой:
Исходя из этой диаграммы, мы видим, что PolicyCondition может быть представлен как PolicyConditionComposite (представляющей собой набор вложенных PolicyCondition объединенных в конъюнктивную или дизъюнктивную нормальную форму), так и PolicyConditionAtomic,
непосредственно соединенный с некоторым PolicyStatement. Для PolicyCondition определены следующие атрибуты:
Атрибут
|
Назначение
|
isNegated
|
Признак логического отрицания
|
groupNumber
|
Порядковый номер PolicyCondition в упорядоченном списке, в рамках PolicyRule
|
conditionIsCNF
|
Определяется в PolicyConditionComposite и является признаком того, что используется конъюнктивная нормальная
форма
|
conditionSequenceNumber
|
Порядковый номер PolicyConditionAtomic в
упорядоченном списке в рамках PolicyConditionComposite
|
hasEvaluated
|
Текущее состояние PolicyConditionAtomic:
0 – не вычислено
1 – TRUE
2 – FALSE
|
PolicyAction строится в соответствии со следующей диаграммой:
К уже знакомым классам Composite и Atomic добавляется PolicyActionVendor,
позволяющий разработчику определить некоторое произвольное действие. В качестве
PolicyStatement могут
использоваться операторы, построенные на основе SET и CLEAR PolicyOperator. Для PolicyAction определяются
следующие атрибуты:
Атрибут
|
Назначение
|
actionSequence
|
Определяется в PolicyActionComposite и показывает, как должна использоваться упорядоченность вложенных PolicyAction:
0 – Unknown
1 – Mandatory
2 – Recommended
3 – Best Effort
|
actionExecutionStrategy
|
Определяется в PolicyActionComposite и показывает, как должна выполняться обработка вложенных PolicyAction:
0 – Unknown
1 – Do until success
2 – Do all
3 – Do until failure
4 – Do all without failure or Do Nothing
|
hasSubPolicyActions
|
Булевский флаг, показывающий наличие вложенных PolicyAction
|
actionSequenceNumber
|
Порядковый номер PolicyAction в рамках упорядоченного списка PolicyActionComposite
|
hasExecuted
|
Состояние выполнения PolicyActionAtomic:
0 – not yet executed
1 – executed with no errors
2 – executed with errors but successfully rollback
3 - executed with errors
and did not rollback
4 - did not complete execution but successfully rolled back
5 - did not complete execution and did not roll back
|
actionData
|
Этот атрибут предоставляет стандартную возможность расширения
функциональности PolicyAction разработчиком.
Формат этого атрибута определяется значением OID, передаваемым в actionEncoding
|
actionEncoding
|
OID определяющий формат и семантику значения атрибута actionData
|
actionResponse
|
Логическое значение, передаваемое в PolicyRule при выполнении PolicyActionVendor
|
Комментариев нет:
Отправить комментарий