Преобразование заявки с использованием нескольких совпадений RegEx - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над подключением нашей предварительной AD к AWS, следуя этой статье . У нас есть группы AD, которые должны быть переведены в группы AWS, написанные в формате AWS # Account # Role # AccountNumber в AD. В ADFS я пишу пользовательское утверждение, которое должно принять это конкретное утверждение и преобразовать его в arn, для которого требуется роль и номер учетной записи, определенные в имени группы AD. Я надеялся использовать RegExReplace с типом совпадения ((? I) ([-_ a-z0-9] +), которое должно точно дать мне несколько совпадений с входящего токена.

Мой вопрос, есть ли способ, которым я могу использовать несколько совпадений, сгенерированных там, чтобы сгенерировать одну строку ("arn: aws: iam :: saml-provider / ADFS, arn: aws: iam :: role /"), которая использует несколько совпадений длясгенерировать нужный мне формат AWS?

Обычно я не работаю с ADFS, но мне нужно было это выяснить, и любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 07 ноября 2019

В моем правиле ролей (выполняется после сбора правила групп AD) я обновил свое преобразование языка правил утверждений:

c:[Type=="http://temp/variable", 
Value=~"(?i)(^AWS)#([-_a-z0-9]+)#([-_a-z0-9]+)#([-_a-z0-9]+)"] => 
issue(Type="https://aws.amazon.com/SAML/Attributes/Role", 
Value=RegExReplace(c.Value, 
                   "(?i)(^AWS)#(?<accountname>[-_a-z0-9]+)#(?<role>[-_a-z0-9]+)#(?<accountnumber>[-a-z0-9]+)", 
                   "arn:aws:iam:${accountnumber}:saml-provider/ADFS,arn:aws:iam:${accountnumber}:role/${role}))

Это в основном говорит, что для любой группы AD, которая была добавлена ​​впеременная temp и соответствует этому регулярному выражению, выдать заявку такого типа. В RegExReplace я назначил имена переменных для совпадений групп, а затем получил доступ к этим совпадениям, используя синтаксис $ {}. Это сработало, и теперь я вижу список ролей в формате arn.

...