Поделиться через


Использование правила для утверждений авторизации

Это правило можно использовать в службы федерации Active Directory (AD FS) (AD FS), когда необходимо принять тип входящего утверждения, а затем применить действие, которое определит, будет ли пользователь разрешен или запрещен доступ на основе значения, указанного в правиле. При использовании этого правила вы проходите или преобразуете утверждения, которые соответствуют следующей логике правила, на основе параметров, которые настраиваются в правиле.

Параметр правила Логика правила
Разрешить всем пользователям Если входящее утверждение имеет тип любой тип утверждения и значение равно любое значение, выдается утверждение со значением Разрешить.
Разрешить доступ пользователям с данным входящим утверждением Если входящее утверждение имеет тип заданный тип утверждения и значение равно заданное значение утверждения, выдается утверждение со значением Разрешить.
Отказать в доступе пользователям с данным входящим утверждением Если входящее утверждение имеет тип заданный тип утверждения и значение равно заданное значение утверждения, выдается утверждение со значением Отказать.

В следующих разделах содержатся основные сведения о правилах утверждений и предоставляются дополнительные сведения об использовании этого правила.

Общие сведения о правилах утверждения

Правило утверждения представляет экземпляр бизнес-логики, который предусматривает применение к входящему утверждению условия (если X, то Y) и создание исходящего утверждения на основе параметров условия. В следующем списке перечислены важные рекомендации в отношении правил утверждений, с которыми следует ознакомиться перед прочтением дальнейших сведений в этом разделе.

  • В оснастке управления AD FS правила утверждений можно создавать только с помощью шаблонов правил утверждений.

  • Правила утверждений обрабатывают входящие утверждения непосредственно от поставщика утверждений (например, Active Directory или другой службы федерации) или из выходных данных правил преобразования принятия для отношения доверия с поставщиком утверждений.

  • Правила утверждений обрабатываются подсистемой выдачи утверждений в хронологическом порядке в пределах заданного набора правил. Установив приоритет правил, можно дополнительно уточнить или отфильтровать утверждения, созданные предыдущими правилами в данном наборе правил.

  • Шаблоны правил утверждения всегда требуют указывать тип входящего утверждения. Тем не менее, можно обрабатывать несколько значений утверждений с одним типом утверждения, используя одно правило.

Дополнительные сведения о правилах утверждений и наборах правил утверждений см. в разделе "Роль правил утверждений". Дополнительные сведения о том, как обрабатываются правила, см. в разделе "Роль обработчика утверждений". Дополнительные сведения об обработке наборов правил утверждений см. в разделе "Роль конвейера утверждений".

Разрешить всем пользователям

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

Пользователи, которым разрешен доступ к проверяющей стороне из службы федерации, все еще могут получить отказ в обслуживании проверяющей стороной.

Разрешить доступ пользователям с данным входящим утверждением

Если вы используете шаблон правила разрешения или запрета пользователей на основе шаблона правила входящего утверждения, чтобы создать правило и задать условие для разрешения, вы можете разрешить конкретному пользователю доступ к проверяющей стороне на основе типа и значения входящего утверждения. Например, можно использовать этот шаблон правила, чтобы создать правило, которое разрешает доступ только пользователям, имеющим утверждение о группе со значением «Администраторы домена». Если одно правило разрешает пользователю доступ к проверяющей стороне, а другое правило запрещает этот доступ, результат «запретить» переопределяет результат «разрешить» и пользователь получает отказ в доступе.

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

Отказать в доступе пользователям с данным входящим утверждением

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

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

Если пользователю запрещен доступ, когда обработчик выдач утверждений обрабатывает набор правил, дальнейшая обработка правил завершает работу, а AD FS возвращает ошибку "Доступ запрещен" запросу пользователя.

Авторизация пользователей

В AD FS правила авторизации используются для выдачи разрешения или запрета утверждения, которое определяет, будет ли пользователь или группа пользователей (в зависимости от используемого типа утверждений) иметь доступ к веб-ресурсам в заданной проверяющей стороне или нет. Правила авторизации можно настроить только в отношениях доверия с проверяющей стороной.

Наборы правил авторизации

Разные наборы правил авторизации существуют в зависимости от типа операций разрешения или запрещения, которые требуется настроить. Эти наборы правил включают следующие правила.

  • Правила авторизации выдачи. Эти правила определяют, может ли пользователь получать утверждения для проверяющей стороны и, таким образом, получать доступ к ней.

  • Правила авторизации делегирования. Эти правила определяют, может ли пользователь выступать от имени другого пользователя для проверяющей стороны. Когда пользователь действует в качестве другого пользователя, утверждения о запрашивающем пользователе по-прежнему помещаются в токен.

  • Правила авторизации олицетворения. Эти правила определяют, может ли пользователь полностью олицетворять другого пользователя для проверяющей стороны. Олицетворение другого пользователя — очень мощная возможность, поскольку проверяющая сторона не знает, что пользователь олицетворяется.

Дополнительные сведения о том, как процесс правил авторизации применяется в конвейере выдачи утверждений, см. в разделе «Роль подсистемы выдачи утверждений».

Поддерживаемые типы утверждений

AD FS определяет два типа утверждений, которые используются для определения того, разрешено ли пользователю или запрещено. Эти типы утверждений имеют следующие универсальные коды ресурсов (URI).

  1. Разрешение: http://schemas.microsoft.com/authorization/claims/permit

  2. Запретить: http://schemas.microsoft.com/authorization/claims/deny

Создание правила

Вы можете создать оба правила авторизации с помощью языка правила утверждения или с помощью шаблона правила разрешения всех пользователей или разрешения или запрета пользователей на основе шаблона правила входящего утверждения в оснастке управления AD FS. Шаблон правила «Разрешить всем пользователям» не поддерживает все параметры конфигурации. Однако шаблон правила «Разрешать или запрещать пользователям на основании входящего утверждения» предоставляет следующие параметры конфигурации.

  • указание имени правила утверждения;

  • Укажите тип входящего утверждения

  • Введите значение входящего утверждения

  • Разрешить доступ пользователям с данным входящим утверждением

  • Отказать в доступе пользователям с данным входящим утверждением

Дополнительные инструкции по созданию этого шаблона см. в разделе "Создание правила для разрешения всех пользователей " или "Создание правила для разрешения или запрета пользователей на основе входящего утверждения " в руководстве по развертыванию AD FS.

С помощью языка правил утверждений

Если утверждение должно отправляться только в том случае, когда его значение соответствует настраиваемому шаблону, необходимо использовать настраиваемое правило. Дополнительные сведения см. в разделе When to Use a Custom Claim Rule.

Пример создания правила авторизации на основе нескольких утверждений

При использовании синтаксиса языка правила утверждений для авторизации утверждений утверждение также может быть выдано на основе наличия нескольких утверждений в исходных утверждениях пользователя. Следующее правило выдает утверждение авторизации только в том случае, если пользователь является членом группы редакторов и прошел проверку подлинности Windows:

[type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod",
value == "urn:federation:authentication:windows" ]
&& [type == "http://schemas.xmlsoap.org/claims/Group ", value == "editors"]
=> issue(type = "http://schemas.xmlsoap.org/claims/authZ", value = "Granted");

Пример создания правил авторизации, которые будут делегировать, кто может создавать или удалять отношения доверия прокси-сервера федерации

Прежде чем служба федерации сможет использовать прокси-сервер федерации для перенаправления клиентских запросов, должны быть установлены отношения доверия между службой федерации и компьютером прокси-сервера федерации. По умолчанию отношение доверия прокси-сервера устанавливается при успешном предоставлении каких-либо из следующих учетных данных в мастер настройки прокси-сервера федерации:

  • учетной записи службы, используемой службой федерации, которую будет защищать прокси-сервер;

  • учетной записи домена Active Directory, которая является членом локальной группы администраторов на всех серверах федерации в ферме серверов федерации.

Если вы хотите указать, какие пользователи могут создавать доверие прокси-сервера для конкретной службы федерации, то можете использовать любой из следующих методов делегирования. Этот список методов находится в порядке приоритета, основываясь на рекомендациях группы продуктов AD FS наиболее безопасных и наименее проблемных методов делегирования. Необходимо использовать только один из этих методов, в зависимости от потребностей вашей организации.

  1. Создайте группу безопасности домена в Active Directory (например, FSProxyTrustCreators), добавьте ее в группу локальных администраторов на каждом из серверов федерации в ферме, а затем добавьте в эту новую группу только учетные записи пользователей, которым хотите делегировать это право. Это является предпочтительным методом.

  2. Добавьте учетную запись домена пользователя в группу администраторов на каждом из серверов федерации в ферме.

  3. Если по некоторым причинам вы не можете использовать один из этих методов, то можно также создать правило авторизации для этой цели. Хотя это не рекомендуется — из-за вероятных сложностей, которые могут возникнуть, если это правило не записано правильно — правило настраиваемой авторизации можно использовать для делегирования определенным доменным учетным записям пользователей Active Directory прав создания или даже удаления отношений доверия между всеми прокси-серверами федерации, связанными с данной службой федерации.

    При выборе метода 3 вы можете использовать следующий синтаксис правила для выдачи утверждения авторизации, которое позволит указанному пользователю (в данном случае contoso\frankm) создавать отношения доверия для одного или нескольких прокси-серверов федерации в службе федерации. Вы должны применить это правило с помощью команды Windows PowerShell Set-ADFSProperties AddProxyAuthorizationRules.

    c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", issuer=~"^AD AUTHORITY$" value == "contoso\frankm" ] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true")
    
    exists([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == "S-1-5-32-544", Issuer =~ "^AD AUTHORITY$"])
    => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
    
    c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid", Issuer =~ "^AD AUTHORITY$" ] => issue(store="_ProxyCredentialStore",types=("https://schemas.microsoft.com/authorization/claims/permit"),query="isProxyTrustManagerSid({0})", param= c.Value );
    
    c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/proxytrustid", Issuer =~ "^SELF AUTHORITY$" ] => issue(store="_ProxyCredentialStore",types=("https://schemas.microsoft.com/authorization/claims/permit"),query="isProxyTrustProvisioned({0})", param=c.Value );
    

    Если позднее вы захотите удалить этого пользователя, чтобы он больше не мог создавать отношения доверия прокси-сервера, можно вернуться к правилу авторизации доверия прокси-сервера по умолчанию, чтобы удалить право этого пользователя на создание отношений доверия прокси-сервера для службы федерации. Это правило вы так же должны применить с помощью команды Windows PowerShell Set-ADFSProperties AddProxyAuthorizationRules.

    exists([Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == "S-1-5-32-544", Issuer =~ "^AD AUTHORITY$"])
    => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "true");
    
    c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid", Issuer =~ "^AD AUTHORITY$" ] => issue(store="_ProxyCredentialStore",types=("https://schemas.microsoft.com/authorization/claims/permit"),query="isProxyTrustManagerSid({0})", param= c.Value );
    
    c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/proxytrustid", Issuer =~ "^SELF AUTHORITY$" ] => issue(store="_ProxyCredentialStore",types=("https://schemas.microsoft.com/authorization/claims/permit"),query="isProxyTrustProvisioned({0})", param=c.Value );
    

Дополнительные сведения об использовании языка правил утверждений см. в разделе "Роль языка правил утверждений".