ЗАДНИЙ ПЛАН: Я пытаюсь настроить единый вход между локальной AD и AWS через ADFS. У меня нет доступа к нашему экземпляру ADFS, и я действительно мало что знаю о ADFS, поэтому мне остается только гадать, как решить эту проблему. К счастью, я близок к тому, что мне нужно решить только один перевод правила утверждений, прежде чем я верю, что все будет работать должным образом.
ВЫПУСК: Проблема, с которой я столкнулся, заключается в том, что мне нужно перевести группу AD в роль AWS, используя язык правил утверждений (с которым у меня также нет большого опыта), но созданное мной правило не работает должным образом.
Что я пробовал: Я получил группы AD, чтобы заполнить тип временной / переменной и перейти к следующему этапу конвейера, на котором выдаются токены. Формат группы AD, которую мне нужно проанализировать, следующий: AWS # AWS_AccountName # AWS_RoleName # AWS_AccountNumber (например, AWS # Sandbox # SecurityAuditor # 1234567890).
Мне нужно использовать AWS_RoleName и AWS_AccountNumber в этом имени группы, чтобы сгенерировать arn, который должен быть передан в AWS. Я попытался использовать RegExReplace, чтобы сделать это с этим правилом: c: [Type == "http: // temp / variable", Value = ~ "(? I) (^ AWS) # ([-_ a-z0-9] +) # ([-_ a-z0-9] +) # ([-_ a-z0-9] +) "] => проблема (Type =" https://aws.amazon.com/SAML/Attributes/Role ", Значение = RegExReplace (c.Value," (? I) (^ AWS) # ([-_ a-z0-9] +) # ([-_ a-z0-9] +) # ([-a-z0-9] +) "," arn: aws: iam: $ 4: saml-provider / ADFS, arn: aws: iam: $ 4: роль / AWSReservedSSO3 доллара))
Идея состоит в том, что я бы использовал $ для заполнения имени роли AWS, необходимого для получения доступа. Однако я не думаю, что это работает, потому что я только что прочитал, что RegExReplace заменяет ВСЕ совпадения RegEx в исходной строке на строку, сгенерированную третьим параметром.
Может ли кто-нибудь указать на недостатки этого правила утверждения или лучшего правила, которое нужно написать, чтобы получить желаемый результат?
заранее спасибо
Итак, по какой-то причине моя конструкция $ index не работала. Когда я заменил их именованными переменными в моем регулярном выражении, он начал работать правильно. Итак, мое обновленное правило утверждений выглядит так:
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}))