понедельник, 2 июля 2012 г.

Policy

Приступая к описанию Policy, следует отметить, что Policy от SID это НЕ просто. По этой причине, я ограничу описание самыми необходимыми для понимания функциональности Policy аспектами, игнорируя такие вопросы как спецификация Policy и использование OCL, поскольку последние требуют отдельного изложения.
Для понимания базовой функциональности 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

Комментариев нет:

Отправить комментарий