Compartilhar via


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

Você pode usar essa regra nos Serviços de Federação do Active Directory (AD FS) quando precisar fazer 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 regras Lógica de regras
Permitir todos os usuários Se o tipo de declaração de entrada for igual a qualquer tipo de declaração e valor igual a qualquer valor, emita declaração com valor igual a Permissão
Permitir o acesso a usuários com esta declaraçã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, emita a declaração com valor igual a Permissão
Negar o acesso a usuários com esta declaraçã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, emita a declaração com valor igual a Deny

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

Sobre regras de declaração

Uma regra de declaração representa uma instância da lógica de negócios que usará 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 de condição. A lista a seguir descreve dicas importantes que você deve saber sobre regras de declaração antes de ler mais neste tópico:

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

  • Regras de declaração processam declarações de entrada diretamente de um provedor de declarações (como o Active Directory ou outro Serviço de Federação) ou da saída das regras de transformação de aceitação em uma relação de confiança com o provedor 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 precedência em regras, você pode refinar ou filtrar ainda mais as declarações geradas por regras anteriores dentro de um determinado conjunto de regras.

  • 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 declaração e conjuntos de regras de declaração, consulte a função de regras de declaração. 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, confira A função do pipeline de declarações.

Permitir todos os usuários

Quando você usa o modelo de regra Permitir todos os usuários, todos os usuários terão acesso à terceira 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 usuário será negado acesso.

Usuários com acesso à terceira parte confiável 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

Quando você usa 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 de permissão, é possível permitir acesso de um usuário específico à terceira parte confiável de acordo com o tipo e o valor de uma declaração de entrada. Por exemplo, você pode usar esse modelo de regra para criar uma regra que permitirá somente usuários que tenham um grupo de declaração com um valor de Admins do 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 usuário será negado acesso.

Usuários com permissão de acesso à terceira parte confiável do Serviço de Federação ainda podem ter o serviço negado pela terceira parte confiável. Se você quiser permitir que todos os usuários acessem a terceira parte confiável, use o modelo de regra Permitir Todos os Usuários.

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

Quando você usa 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 de permissão, pode permitir acesso de um usuário específico à terceira parte confiável de acordo com o tipo e o valor de uma declaração de entrada. Por exemplo, você pode usar esse modelo de regra para criar uma regra que rejeite todos os usuários que tenham uma declaração de grupo com um valor Usuários 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, mais tarde você 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 um usuário tiver acesso negado quando o mecanismo de emissão de declarações processar o conjunto de regras, mais regras de processamento serão desativadas, e o AD FS retorna 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 objetos de confiança da 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 em nome de uma terceira parte confiável e, portanto, ter acesso à terceira parte confiável.

  • Regras de autorização de delegação: essas regras determinam se um usuário pode atuar como outro usuário para a terceira parte confiável. Quando um usuário está atuando 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 é uma funcionalidade muito poderosa, pois 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 A função do mecanismo de emissão de declarações.

Tipos de declaração com suporte

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 Identifier) de tipo de declaração são os seguintes:

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

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

Como criar essa regra

Você pode criar ambas as regras de autorização usando a linguagem de regras de declaração ou usando o modelo de regra Permitir todos os usuários ou o modelo Permitir ou negar usuários com base em uma declaração de entrada no snap-in de gerenciamento do AD FS. O modelo de regra Permitir Todos os Usuários não fornece nenhuma opção de configuração. No entanto, a permissão ou negação de usuários com base em um modelo de regra de declaração de entrada fornece as seguintes opções de configuração:

  • Especificar um nome de regra de declaração

  • Especificar um tipo de solicitação de entrada

  • Digite um valor de reclamação recebida

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

  • Negar o acesso a usuários com esta declaraçã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 crie 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 linguagem de regra de declaraçã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 de 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 emitirá uma declaração de autorização somente se o usuário for membro dos Editores do grupo e tiver sido 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 regras de autorização que delegarão quem pode criar ou remover relações de confiança de proxy do 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, primeiro é necessário estabelecer uma relação de confiança entre o Serviço de Federação e o computador proxy do servidor de federação. Por padrão, uma 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 usada pelo Serviço de Federação que o proxy vai proteger

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

Quando você quiser especificar quais usuários ou usuários podem criar uma relação de confiança de proxy para um determinado Serviço de Federação, você pode usar qualquer um dos métodos de delegação a seguir. Essa lista de métodos está em ordem de prioridade, com base nas recomendações da equipe de produtos do AD FS dos métodos de delegação mais seguros e menos problemáticos. É necessário usar apenas um desses métodos, dependendo das necessidades da sua organização:

  1. Crie um grupo de segurança de domínio no Active Directory (por exemplo, FSProxyTrustCreators), adicione esse grupo ao grupo de 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 preferencial.

  2. Adicione a conta de domínio do usuário ao grupo de administradores em cada um dos servidores de federação no 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 recomendável, 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 Active Directory também podem criar ou até mesmo remover as relações de confiança entre todos os proxies do servidor de federação associados a um determinado Serviço de Federação.

    Se você escolher o método 3, poderá usar a sintaxe de regra a seguir para emitir uma declaração de autorização que permitirá que um usuário especificado (nesse caso, contoso\frankm) estabeleça relações de confiança para um ou mais proxies de servidores 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 );
    

    Posteriormente, se você quiser remover o usuário para que o usuário 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 do usuário de 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 a função da linguagem de regra de declaração.