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

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

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

Я пропустил явный набор правил или источник творческого использования для string-regexp-match и / или anyURI-regexp-match?

Спасибо за терпение моей напыщенной речи.

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

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

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

1 ответ

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

1. Почему функция регулярного выражения в XACML?

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

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

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

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

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

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

2. XACML парсеры

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

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

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

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

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