Когда XACML говорит о совпадении регулярного выражения, на какие правила регулярного выражения он ссылается?

Я потратил много времени на регулярные выражения, которые, как я думал, кратко и точно представляют URI ресурса и диапазоны строк действия, которые я хотел разрешить, но он возвращает Deny для каждого, казалось бы, допустимого совпадения. Мне еще предстоит увидеть полезный, реальный (в отличие от hello-world) пример регулярного выражения XACML, и многие из тех, что я видел, даже не экранируют точки в IP-адресе. !

Регулярные выражения означают разные вещи в разных контекстах, поэтому регулярные выражения Perl специально называются таковыми. Использование общего термина «регулярное выражение» ничего мне не говорит, как и многие примеры XACML, которые я видел, не говорят мне ничего, что было бы полезно для расширения.

Пропустил ли я явный набор правил или источник творческого использования для совпадения строкового регулярного выражения и / или совпадения с любымURI-регулярным выражением?

Спасибо, что терпел мою тираду.

Кстати, я не нашел парсеров для XACML, которые выдают простые предупреждения об отсутствующем DTD и продолжают анализировать на предмет реальных ошибок.

И последний вопрос: есть ли что-нибудь в этом отрывке из build.gradle о зависимостях, что могло бы помешать сопоставлению регулярных выражений даже для чего-то столь же слабого и простодушного, как некоторые из тех, что я видел в документации для XACML?

compile group: 'org.herasaf', name:"xacml-core", version: 'latest.integration'

person Jerry Miller    schedule 14.10.2015    source источник
comment
Так много вопросов в одном вопросе. Я бы порекомендовал вам разделить это. Кроме того, ваш вопрос очень широкий. Не лучший формат для качественного ответа, но вот оно.   -  person David Brossard    schedule 16.10.2015


Ответы (1)


Так много вопросов в одном вопросе. Я бы порекомендовал вам разделить это. Кроме того, ваш вопрос очень широкий. Не лучший формат для качественного ответа, но вот оно.

1. Почему в XACML используется функция соответствия регулярному выражению?

На самом деле вы попадаете в нужное место: хорошо написанная политика управления доступом на основе атрибутов с использованием XACML, вероятно, не должна использовать регулярные выражения. Обычно вы используете регулярные выражения, когда значения атрибутов, которые вы используете для принятия решений, не нормализованы. Например, представьте, что вы хотите сопоставить номер телефона с Роли, Северная Каролина (код города 919). Вы бы использовали регулярное выражение (или, может быть, проще stringIsIn). Но на самом деле вам следует сделать либо функцию, которая по номеру телефона возвращает код города, либо, что еще лучше, информация о политике, которая по номеру телефона возвращает город, которому он принадлежит.

Я пишу много политик для клиентов Axiomatics, и единственный раз, когда мне приходится использовать regexp-match, - это когда данные грязные и не нормализованы.

Еще один аргумент против использования regexp-match состоит в том, что это затрудняет понимание политик. Вы хотите, чтобы это было просто, например

Человек может просматривать медицинскую карту, если она принадлежит ему или если запись принадлежит иждивенцу.

Это значимое и понятное для человека. Регулярные выражения - нет.

В той же категории вы можете добавить селекторы атрибутов, эту возможность в XACML определять выражения XPath для извлечения информации из содержимого XML.

2. Парсеры XACML

По определению анализаторы XACML - это анализаторы XML, которые проверяют только структуру документа. Вот как работает синтаксический анализ XML. Вот как работает DTD (или XSD). Вы не получите предупреждения, если используете недопустимые значения. Например, в XACML, если вы используете поддельный тип данных, например bla: fake: NotBoolean, то простой синтаксический анализатор XML на схему XACML не будет жаловаться.

Вам нужна дополнительная логика для реализации. Я почти уверен, что движок SunXACML даст вам это. В качестве альтернативы будет работать движок Axiomatics. Он будет жаловаться на неизвестный тип данных, объединяющий алгоритм или функцию.

В любом случае ни один из парсеров не скажет вам, имеет ли смысл политика. Если вы напишете цель, которая говорит ›1 И a‹ 1 (этого никогда не произойдет), синтаксический анализатор не скажет вам, что существует недопустимое выражение. Это не недействительно с его точки зрения.

HerasAF довольно старый, если я правильно помню. Я бы попробовал любое из следующего:

  • SunXACML (Java / Open Source / активно не поддерживается), мать всех реализаций
  • ATT XACML Engine (Java / Open Source / new) новая реализация, написанная AT&T
  • Сервер политики Axiomatics (Java & .Net / Closed Source - коммерческий / активный) коммерческое решение для ABAC и XACML (отказ от ответственности: я работаю там).
person David Brossard    schedule 15.10.2015