Partilhar via


Quando usar uma regra de declaração de autorização

Você pode usar essa regra nos Serviços de Federação do Ative Directory (AD FS) quando precisar executar um tipo de declaração de entrada e, em seguida, aplicar uma ação que determinará se um usuário terá acesso permitido ou negado com base no valor especificado na regra. Ao usar essa regra, você passa ou transforma declarações que correspondem à seguinte lógica de regra, com base em qualquer uma das opções configuradas na regra:

Opção de regra Lógica da regra
Permitir todos os utilizadores Se o tipo de declaração de entrada for igual a qualquer tipo de declaração e o valor for igual a qualquer valor, então emita uma declaração com valor igual a Permissão
Permitir o acesso a usuários com esta declaração de entrada Se tipo de declaração de entrada for igual tipo de declaração especificado e o valor for igual valor de declaração especificado, emita uma declaração com valor igual Permissão
Negar acesso a utilizadores com esta reivindicação de entrada Se o tipo de declaração de entrada for igual ao tipo de declaração especificado e o valor for igual ao valor de declaração especificado , então emita uma declaração com o valor e negue.

As seções a seguir fornecem uma introdução básica às regras de reivindicação e fornecem mais detalhes sobre quando usar essa regra.

Sobre as regras de reclamação

Uma regra de declaração representa uma instância da lógica de negócios que aceitará uma declaração de entrada, aplicará uma condição a ela (se x então y) e produzirá uma declaração de saída com base nos parâmetros da condição. A lista a seguir descreve dicas importantes que você deve saber sobre as regras de sinistro antes de ler mais neste tópico:

  • No snap-in de Gestão do AD FS, as regras de declaração só podem ser criadas utilizando modelos de regras de declaração

  • As regras de declaração processam as declarações de entrada, quer diretamente de um fornecedor de declarações (como o Active Directory ou outro Serviço de Federação), quer a partir da saída das regras de transformação de aceitação numa relação de confiança do fornecedor de declarações.

  • As regras de declaração são processadas pelo mecanismo de emissão de declarações em ordem cronológica dentro de um determinado conjunto de regras. Ao definir a precedência nas regras, você pode refinar ou filtrar ainda mais as declarações geradas por regras anteriores dentro de um determinado conjunto de regras.

  • Os modelos de regra de declaração sempre exigirão que você especifique um tipo de declaração de entrada. No entanto, você pode processar vários valores de declaração com o mesmo tipo de declaração usando uma única regra.

Para obter informações mais detalhadas sobre regras de reivindicação e conjuntos de regras de reivindicação, consulte The Role of Claim Rules. Para obter mais informações sobre como as regras são processadas, consulte A função do mecanismo de declarações. Para obter mais informações sobre como os conjuntos de regras de declaração são processados, consulte The Role of the Claims Pipeline.

Permitir todos os usuários

Ao utilizar o modelo de regra Permitir Todos os Utilizadores, todos os utilizadores terão acesso à parte confiável. No entanto, você pode usar regras de autorização adicionais para restringir ainda mais o acesso. Se uma regra permitir que um usuário acesse a terceira parte confiável e outra regra negar o acesso do usuário à terceira parte confiável, o resultado da negação substituirá o resultado da permissão e o acesso será negado ao usuário.

Os usuários que têm acesso à terceira parte confiável a partir do Serviço de Federação ainda podem ter o serviço negado pela terceira parte confiável.

Permitir o acesso a usuários com esta declaração de entrada

Ao usar o modelo de regra Permitir ou Negar Usuários com Base em uma Declaração de Entrada para criar uma regra e definir a condição para permitir, você pode permitir o acesso de um usuário específico à terceira parte confiável com base no tipo e no valor de uma declaração de entrada. Por exemplo, você pode usar esse modelo de regra para criar uma regra que permitirá apenas os usuários que têm uma declaração de grupo com um valor de Administradores de Domínio. Se uma regra permitir que um usuário acesse a terceira parte confiável e outra regra negar o acesso do usuário à terceira parte confiável, o resultado da negação substituirá o resultado da permissão e o acesso será negado ao usuário.

Os usuários que têm permissão para acessar a terceira parte confiável a partir do Serviço de Federação ainda podem ter o serviço negado pela terceira parte confiável. Se quiser permitir que todos os usuários acessem a terceira parte confiável, use o modelo de regra Permitir Todos os Usuários.

Negar acesso a utilizadores com esta reivindicação de entrada

Ao usar o modelo de regra Permitir ou Negar Usuários com Base em uma Declaração de Entrada para criar uma regra e definir a condição para negar, você pode negar o acesso do usuário à terceira parte confiável com base no tipo e no valor de uma declaração de entrada. Por exemplo, pode usar este modelo de regra para criar uma regra que bloqueará todos os utilizadores que têm uma reivindicação de grupo com um valor de Utilizadores do Domínio.

Se você quiser usar a condição de negação, mas também habilitar o acesso à terceira parte confiável para usuários específicos, deverá adicionar explicitamente regras de autorização com a condição de permissão para permitir que esses usuários acessem a terceira parte confiável.

Se o acesso for negado a um usuário quando o mecanismo de emissão de declarações processar o conjunto de regras, o processamento de regras adicionais será encerrado e o AD FS retornará um erro "Acesso negado" à solicitação do usuário.

Autorizando usuários

No AD FS, as regras de autorização são usadas para emitir uma declaração de permissão ou negação que determinará se um usuário ou um grupo de usuários (dependendo do tipo de declaração usado) terá permissão para acessar recursos baseados na Web em uma determinada terceira parte confiável ou não. As regras de autorização só podem ser definidas em relações de confiança de terceira parte confiável.

Conjuntos de regras de autorização

Existem diferentes conjuntos de regras de autorização, dependendo do tipo de operação de permissão ou negação que você precisa configurar. Esses conjuntos de regras incluem:

  • Regras de Autorização de Emissão: Essas regras determinam se um usuário pode receber declarações para uma terceira parte confiável e, portanto, acesso à terceira parte confiável.

  • Regras de Autorização de Delegação: Estas regras determinam se um utilizador pode agir como outro utilizador para a entidade confiadora. Quando um usuário está agindo como outro usuário, as declarações sobre o usuário solicitante ainda são colocadas no token.

  • Regras de Autorização de Representação: Essas regras determinam se um usuário pode representar totalmente outro usuário para a terceira parte confiável. Representar outro usuário é um recurso muito poderoso, porque a terceira parte confiável não saberá que o usuário está sendo representado.

Para obter mais detalhes sobre como o processo de regra de autorização se encaixa no pipeline de emissão de declarações, consulte O papel do mecanismo de emissão de declarações.

Tipos de declaração suportados

O AD FS define dois tipos de declaração que são usados para determinar se um usuário é permitido ou negado. Esses URIs (Uniform Resource Identifiers) de tipo de declaração são os seguintes:

  1. Autorização: http://schemas.microsoft.com/authorization/claims/permit

  2. Negar: http://schemas.microsoft.com/authorization/claims/deny

Como criar esta regra

Você pode criar ambas as regras de autorização usando o idioma da regra de declaração ou usando o modelo de regra Permitir Todos os Usuários ou o modelo de regra Permitir ou Negar Usuários com Base em uma Declaração de Entrada no snap-in Gerenciamento do AD FS. O modelo de regra Permitir Todos os Usuários não fornece nenhuma opção de configuração. No entanto, o modelo de regra Permitir ou Negar Usuários com Base em uma Declaração de Entrada fornece as seguintes opções de configuração:

  • Especificar um nome de regra de declaração

  • Especificar um tipo de reclamação de entrada

  • Introduza um valor de reivindicação recebida

  • Permitir o acesso a usuários com esta declaração de entrada

  • Negar acesso a utilizadores com esta reivindicação de entrada

Para obter mais instruções sobre como criar esse modelo, consulte Criar uma regra para permitir que todos os usuários ou Criar uma regra para permitir ou negar usuários com base em uma declaração de entrada no Guia de Implantação do AD FS.

Usando a linguagem de regras de reivindicação

Se uma declaração deve ser enviada somente quando o valor da declaração corresponde a um padrão personalizado, você deve usar uma regra personalizada. Para obter mais informações, consulte Quando usar uma regra de declaração personalizada.

Exemplo de como criar uma regra de autorização com base em várias declarações

Ao usar a sintaxe da linguagem da regra de declaração para autorizar declarações, uma declaração também pode ser emitida com base na presença de várias declarações nas declarações originais do usuário. A regra a seguir emite uma declaração de autorização somente se o usuário for membro do grupo Editores e tiver autenticado usando a autenticação do 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");

Exemplo de como criar as regras de autorização que delegarão quem pode criar ou remover os trusts de proxy de servidor de federação

Antes que um Serviço de Federação possa usar um proxy de servidor de federação para redirecionar solicitações de cliente, uma relação de confiança deve primeiro ser estabelecida entre o Serviço de Federação e o computador proxy do servidor de federação. Por padrão, uma relação de confiança de proxy é estabelecida quando uma das seguintes credenciais é fornecida com êxito no Assistente de Configuração de Proxy do Servidor de Federação do AD FS:

  • A conta de serviço utilizada pelo Serviço de Federação que o proxy irá proteger

  • Uma conta de domínio do Active Directory que seja membro do grupo de administradores local em todos os servidores de federação em um farm de servidores de federação

Quando desejar especificar qual usuário ou usuários podem criar uma confiança de proxy para um determinado Serviço de Federação, você pode usar qualquer um dos seguintes métodos de delegação. Esta lista de métodos está em ordem de prioridade, com base nas recomendações da equipa de produto do AD FS sobre os métodos de delegação mais seguros e menos problemáticos. É necessário utilizar apenas um destes métodos, dependendo das necessidades da sua organização:

  1. Crie um grupo de segurança de domínio no Ative Directory (por exemplo, FSProxyTrustCreators), adicione esse grupo ao grupo Administradores local em cada um dos servidores de federação no farm e adicione apenas as contas de usuário às quais você deseja delegar esse direito ao novo grupo. Este é o método preferido.

  2. Adicione a conta de domínio do usuário ao grupo de administradores em cada um dos servidores de federação do farm.

  3. Se, por algum motivo, você não puder usar nenhum desses métodos, também poderá criar uma regra de autorização para essa finalidade. Embora não seja recomendado — devido a possíveis complicações que podem ocorrer se essa regra não for escrita corretamente — você pode usar uma regra de autorização personalizada para delegar quais contas de usuário de domínio do Ative Directory também podem criar ou até mesmo remover as relações de confiança entre todos os proxies de servidor de federação associados a um determinado Serviço de Federação.

    Se você escolher o método 3, poderá usar a sintaxe da regra a seguir para emitir uma declaração de autorização que permitirá que um usuário especificado (neste caso, contoso\frankm) crie relações de confiança para um ou mais proxies de servidor de federação para o Serviço de Federação. Você deve aplicar essa regra usando o comando do 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 );
    

    Mais tarde, se desejar remover o usuário para que ele não possa mais criar relações de confiança de proxy, você poderá reverter para a regra de autorização de confiança de proxy padrão para remover o direito de o usuário criar relações de confiança de proxy para o Serviço de Federação. Você também deve aplicar essa regra usando o comando do 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 );
    

Para obter mais informações sobre como usar o idioma da regra de declaração, consulte The Role of the Claim Rule Language.