Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Linguagem de regras de transformação de reivindicações

Em toda a floresta afirma habilita recurso de transformação a ponte afirma para controle de acesso dinâmico através dos limites da floresta, definindo a reivindicações políticas de transformação em relações de confiança em toda a floresta. O componente principal de todas as políticas é regras escritas em linguagem de regras de transformação de reivindicações. Este tópico fornece detalhes sobre essa linguagem e fornece orientação sobre a criação de regras de transformação de reivindicações.

Os cmdlets do Windows PowerShell para políticas de transformação através da floresta confia em opções para definir as diretivas simples exigido em comum cenários. Esses cmdlets traduzir a entrada do usuário em condições e regras na língua de regras de transformação de reivindicações e, em seguida, armazená-los no Active Directory no formato prescrito. Para obter mais informações sobre cmdlets para transformação de reivindicações, consulte Cmdlets de AD DS para controle de acesso dinâmico.

Dependendo da configuração de reivindicações e as exigências colocadas sobre a confiança através da floresta em sua floresta do Active Directory, as políticas de transformação de reivindicações podem ter que ser mais complexa do que as políticas compatíveis com os cmdlets do Windows PowerShell para o Active Directory. Para efetivamente criar tais condições, é essencial compreender a sintaxe de linguagem de regras de transformação de reivindicações e a semântica. Isso afirma a linguagem de regras de transformação ("a língua") no Active Directory é um subconjunto da linguagem usada pelos Serviços de Federação do Active Directory para fins semelhantes, e tem uma sintaxe muito semelhante e a semântica. No entanto, existem menos operações permitidas, e são impostas restrições de sintaxe adicional na versão da linguagem do Active Directory.

Este tópico explica brevemente a sintaxe e a semântica da linguagem de regras de transformação de reivindicações no Active Directory e considerações a ser feita quando as condições de criação. Ele fornece vários conjuntos de regras de exemplo para você começar e exemplos de sintaxe incorreta e as mensagens que eles geram, para ajudá-lo a decifrar as mensagens de erro quando você criar as regras.

Cmdlets do Windows PowerShell para o Active Directory: Esta é a maneira preferida e recomendada para autor e conjunto de reivindicações políticas de transformação. Esses cmdlets prever condições simples de interruptores e verificar as regras definidas para condições mais complexas.

LDAP: condições de transformação de reivindicações podem ser editadas no Active Directory através de LDAP Lightweight Directory Access Protocol (). No entanto, isso não é recomendado porque as políticas têm vários componentes complexos, e as ferramentas que você usa não podem validar a política antes de gravá-la para o Active Directory. Posteriormente, este pode exigir uma quantidade considerável de tempo para diagnosticar problemas.

Hh848274.collapse(pt-br,WS.11).gif Sintaxe geral

Aqui está uma breve visão geral da sintaxe e semântica da linguagem:

  • O conjunto de regras de transformação de reivindicações consiste de zero ou mais regras. Cada regra tem duas partes activas: Selecione a lista de condição e Ação da regra. Se Selecionar lista de condição for avaliada como TRUE, a ação de regra correspondente é executada.

  • Selecione lista de condição tem zero ou mais Condições de selecionar. Todas as Condições de selecionar devem ser avaliada como TRUE para Selecionar a lista de condição a ser avaliada como TRUE.

  • Cada Condição de selecionar tem um conjunto de zero ou mais Condições de correspondência. Todas as Condições de correspondência deve ser avaliada como verdadeiro para a condição de selecionar, avaliar para TRUE. Todas estas condições são avaliadas em relação um único sinistro. Uma reivindicação que corresponde a uma Condição de selecionar pode ser marcada por um identificador e refere a Ação da regra.

  • Cada Condição de correspondência especifica a condição para coincidir com o tipo ou o valor ou o ValueType de uma reivindicação por meio de diferentes Operadores de condição e Literais de seqüência de caracteres.

    • Quando você especificar uma Condição de correspondência para um valor, você também deve especificar uma Condição de correspondência para um específico ValueType e vice-versa. Essas condições devem ser ao lado do outro na sintaxe.

    • ValueType correspondentes condições deve usar literais de ValueType específicos apenas.

  • Uma Ação de regra pode copiar uma reivindicação que está marcada com um identificador ou emitir uma declaração com base em uma declaração que é marcada com um identificador e/ou dada de literais de cadeia de caracteres.

Regra de exemplo

Este exemplo mostra uma regra que pode ser usada para traduzir as reivindicações tipo entre duas florestas, desde que eles usam as mesmas reivindicações ValueTypes e tem as mesmas interpretações para reivindicações de valores para este tipo. A regra tem uma condição correspondente e uma instrução de edição que usa literais de seqüência de caracteres e uma referência de créditos correspondente.



C1: [tipo = = "EmployeeType"] = >QUESTÃO (tipo = "EmpType", valor = C1.VALOR, VALUETYPE = C1.VALUETYPE);[Tipo = = "EmployeeType"] = = selecione lista de condição com uma condição de correspondência para declarações tipo.

QUESTÃO (tipo = "EmpType", valor = C1.VALOR, VALUETYPE = C1.VALUETYPE) = = ação de regra que emite um intentadas usando a seqüência de caracteres literal e correspondente pedido com o identificador.

Hh848274.collapse(pt-br,WS.11).gif Operação de tempo de execução

É importante entender a operação de tempo de execução de transformações de reivindicações ao autor as regras efetivamente. A operação de tempo de execução usa três conjuntos de reivindicações:

  1. Entrada afirma conjunto: O conjunto de entrada de pedidos que são dadas para a operação de transformação de reivindicações.

  2. Conjunto de trabalho de reivindicações: intermediar reivindicações que são ler e gravadas durante a transformação de reivindicações.

  3. Saída afirma conjunto: saída da operação de transformação de reivindicações.

Aqui vai um breve resumo da operação de transformação de reivindicações de tempo de execução:

  1. Declarações de entrada para a transformação de reivindicações são usadas para inicializar o conjunto de sinistros de trabalho.

    1. Quando cada regra de processamento, o conjunto de declarações de trabalho é usado para as declarações de entrada.

    2. A lista de condição de seleção em uma regra é comparada com todos os possíveis conjuntos de reivindicações do conjunto de sinistros de trabalho.

    3. Cada conjunto de reivindicações de correspondência é usado para executar a ação em que a regra.

    4. Executando uma regra resultados da ação, em uma declaração, que é acrescentado à saída afirma conjunto e o conjunto de sinistros de trabalho. Assim, a saída de uma regra é usada como entrada para regras subseqüentes no conjunto de regras.

  2. As regras no conjunto de regras são processadas em ordem seqüencial, começando com a primeira regra.

  3. Quando o conjunto de toda regra é processado, o conjunto de declarações de saída é processado para remover os créditos duplicados e para outras questões de segurança. As reclamações resultantes são a saída do processo de transformação de reivindicações.

É possível escrever transformações complexas reivindicações com base no comportamento de tempo de execução anterior.

Exemplo: Operação de tempo de execução

Este exemplo mostra a operação de tempo de execução de uma transformação de reivindicações que usa duas regras.



C1: [tipo = = "EmpType", valor = = "FullTime", ValueType = = "string"] = >Questão (tipo = = "EmployeeType", valor = = "FullTime", ValueType = = "string");[Tipo = = "EmployeeType"] = >Questão (tipo = = "AccessType", valor = = "Privilegiado", ValueType = = "string"); declarações e o contexto de avaliação inicial de entrada: {(tipo = "EmpType"), (valor = "FullTime"), (ValueType = "String")} {(tipo = "Organização"), (valor = "Marketing"), (ValueType = "String")} após processamento regra 1: contexto de avaliação: {(tipo = "EmpType"), (valor = "FullTime"), (ValueType = "String")} {(tipo = "Organização"), (Value="Marketing"),(ValueType="String")} {(tipo = "EmployeeType"), (valor = "FullTime"), (ValueType = "String")} contexto de saída: {(tipo = "EmployeeType"), (valor = "FullTime"), (ValueType = "String")} após processamento regra 2: Contexto avaliação: {(tipo = "EmpType"), (valor = "FullTime"), (ValueType = "String")} {(tipo = "Organization"),(Value="Marketing"),(ValueType="String")} {(tipo = "EmployeeType"),(Value="FullTime"),(ValueType="String")} {(tipo = "AccessType"), (valor = "Privilegiados"), (ValueType = "String")} contexto de saída: {(tipo = "EmployeeType"),(Value="FullTime"),(ValueType="String")} {(tipo = "AccessType"), (valor = "Privilegiados"), (ValueType = "String")} saída Final: {(tipo = "EmployeeType"),(Value="FullTime"),(ValueType="String")} {(tipo = "AccessType"),(Value="Privileged"),(ValueType="String")}

Hh848274.collapse(pt-br,WS.11).gif Semântica de regras especiais

Seguem uma sintaxe especial para as regras:

  1. Esvaziar o conjunto de regras = = nenhuma reivindicação de saída

  2. Selecione lista de condição de vazio = = partidas cada reivindicação lista Selecionar condição

    Exemplo: Lista de condição seleção vazia

    A regra a seguir corresponde a cada reclamação no conjunto de trabalho.

    
    
    = >Questão (tipo = "UserType", valor = "Externo", ValueType = "string")
    
    
  3. Esvaziar a lista de correspondência selecione = = cada reivindicação jogos lista Selecionar condição

    Exemplo: Condições de correspondência vazia

    A regra a seguir corresponde a cada reclamação no conjunto de trabalho. Esta é a regra básica "permitir tudo", se é utilizado sozinho.


    
    
    C1: [] = >Issule (reivindicar = C1);
    
    

Alega que entra em uma floresta

As reivindicações apresentadas por entidades de segurança que são a entrada para uma floresta precisam ser inspecionadas cuidadosamente para garantir que podemos permitir ou emitir somente as declarações corretas. Reivindicações inadequadas podem comprometer a segurança de floresta, e isso deve ser uma consideração superior ao criar condições de transformação para reivindicações que entrar em uma floresta.

Do Active Directory tem as seguintes características para evitar a configuração incorreta de declarações que introduza uma floresta:

  • Se nenhuma política de transformação de reivindicações definida para as declarações que entrar em uma floresta, para fins de segurança, uma confiança de floresta do Active Directory cai todas as principais reivindicações que entram na floresta.

  • Se executar a regra definida em reivindicações que entra um resultados de floresta em declarações que não são definidas na floresta, as reivindicações indefinidas são retiradas as declarações de saída.

Afirmações que deixam uma floresta

Reivindicações que deixam uma floresta apresentam uma menor preocupação de segurança para a floresta do que as declarações que entrar na floresta. Reivindicações são autorizadas a deixar a floresta como-é mesmo quando não há nenhuma reivindicação a correspondente política de transformação no lugar. Também é possível a emissão de declarações que não são definidas na floresta como parte de transformar declarações que deixam a floresta. Isso é facilmente configurar relações de confiança em toda a floresta com reivindicações. Um administrador pode determinar se alega que entra a floresta precisa ser transformado e configurar a diretiva apropriada. Por exemplo, um administrador pode definir uma política se há necessidade de esconder a pretensão de impedir a divulgação de informações.

Erros de sintaxe em regras de transformação de reivindicações

Se uma política de transformação de reivindicações determinado tem um conjunto de regras que é sintaticamente incorreto ou se há outros problemas de sintaxe ou armazenamento, a política é considerada inválida. Este é tratado de forma diferente do que as condições de padrão mencionadas anteriormente.

Active Directory é incapaz de determinar a intenção nesse caso e entra em um modo de falhas, onde não há declarações de saída são geradas em que a confiança + direção transversal. Intervenção do administrador é necessária para corrigir o problema. Isso pode acontecer se o LDAP é usado para editar a política de transformação de reivindicações. Cmdlets do Windows PowerShell para o Active Directory tem validação no lugar para evitar escrever uma política com questões de sintaxe.

  1. Existem várias palavras-chave ou caracteres são especiais nesta língua (referido como terminais). Estes são apresentados na tabela de terminais da língua neste tópico. As mensagens de erro usam as tags para estes terminais para desambiguação.

  2. Terminais, por vezes, podem ser usados como cadeia de caracteres literais. No entanto, essa utilização pode entrar em conflito com a definição de idioma ou ter consequências inesperadas. Este tipo de uso não é recomendado.

  3. A ação de regra não é possível executar qualquer conversões de tipo em reivindicam valores, e um conjunto de regras que contém uma ação de regra será considerado inválido. Isso causaria um erro de tempo de execução, e não há declarações de saída são produzidas.

  4. Se uma ação de regra refere-se a um identificador que não foi usado na parte de selecionar lista de condição da regra, é um uso inválido. Isso causaria um erro de sintaxe.

    Exemplo: Referência de identificador incorreto
    A regra a seguir ilustra um identificador incorreto usado na ação da regra.


    
    
    C1: [] = >Questão (reivindicar = C2);
    
    

  • Permitir que todas as reivindicações de um determinado tipo


    Tipo exato

    
    
    C1: [tipo = = "XYZ"] = >Questão (reivindicar = C1);
    
    
    Usando o Regex

    
    
    C1: [tipo = ~ "XYZ *"] = >Questão (reivindicar = C1);
    
    
  • Não permitir um certo tipo de reivindicação

    Tipo exato

    
    
    C1: [tipo! = "XYZ"] = >Questão (reivindicar = C1);
    
    
    Usando o Regex

    
    
    C1: [tipo! ~ "XYZ?"] = >Questão (reivindicar = C1);
    
    

Regras de transformação de reivindicações são analisadas por um analisador personalizado para verificar se há erros de sintaxe. Este analisador é executado por relacionados cmdlets do Windows PowerShell antes de guardar as regras no Active Directory. Erros na análise das regras, incluindo erros de sintaxe, são impressos no console. Controladores de domínio também executar o analisador antes de usar as regras para a transformação de reivindicações, e log de erros no log de eventos (adicionar números de log de eventos).

Esta seção ilustra alguns exemplos de regras que são escritas com sintaxe incorreta e a sintaxe correspondente erros que são gerados pelo analisador.

  1. Exemplo:

    
    
    C1;[] = > Issue(claim=c1);
    
    
    Este exemplo tem uma ponto e vírgula incorretamente usada no lugar de dois-pontos.
    Mensagem de erro:
    POLICY0002: Não foi possível analisar dados de política.
    Número da linha: 1, número de coluna: símbolo de erro 2,:;. Linha: ' c1;[] = > Issue(claim=c1);'.
    Erro do analisador: ' POLICY0030: erro de sintaxe, inesperado ';', esperando um dos seguintes: ':'.'


  2. Exemplo:

    
    
    C1: [] = > Issue(claim=c2);
    
    
    Neste exemplo, a tag identificador na instrução de emissão de cópia é indefinida.
    Mensagem de erro:
    POLICY0011: Sem condições na reivindicação regra coincidir com a marca de condição especificada na CopyIssuanceStatement: 'c2'.


  3. Exemplo:

    
    
    C1: [tipo = = "x 1", valor = = "1", valuetype = = "bool"] = > Issue(claim=c1)
    
    
    "bool" não é um Terminal na língua, e não é um válido ValueType. Terminais válidos estão listados na seguinte mensagem de erro.
    Mensagem de erro:
    POLICY0002: Não foi possível analisar dados de política.
    Número da linha: 1, número de coluna: 39, token de erro: "bool". Linha: ' c1: [tipo = = "x 1", valor = = "1", valuetype = = "bool"] = > Issue(claim=c1);'.
    Erro do analisador: ' POLICY0030: erro de sintaxe, inesperado 'STRING', esperando um dos seguintes: 'INT64_TYPE' 'UINT64_TYPE' 'STRING_TYPE' 'BOOLEAN_TYPE' 'Identificador'


  4. Exemplo:

    
    
    C1: [tipo = = "x 1", valor = = 1, valuetype = = "boolean"] = > Issue(claim=c1);
    
    
    O numeral 1 neste exemplo não é um token válido na linguagem, e tal uso não é permitido em uma condição correspondente. Tem que ser entre aspas duplas para torná-lo uma seqüência de caracteres.
    Mensagem de erro:
    POLICY0002: Não foi possível analisar dados de política.
    Número da linha: 1, número de coluna: 23, token de erro: 1. Erro do analisador: ' POLICY0029: entrada inesperada. Linha: ' c1: [tipo = = "x 1", valor = = 1, valuetype = = "bool"] = > Issue(claim=c1);'. Erro do analisador: ' POLICY0029: entrada inesperada.


  5. Exemplo:

    
    
    
    C1: [tipo = = "x 1", valor = = "1", valuetype = = "boolean"] = >
    
    
    
    
    Questão (tipo = c1.type, valor = 0, valuetype = = "boolean");
    
    
    
    Este exemplo usou um duplo sinal de igual (= =) em vez de um único sinal de igual (=).
    Mensagem de erro:
    POLICY0002: Não foi possível analisar dados de política.
    Número da linha: 1, número de coluna: 91, token de erro: = =. Linha: ' c1: [tipo = = "x 1", valor = = "1",
    ValueType = = "boolean"] = > questão (type=c1.type, valor = 0, valuetype = = "boolean");'.
    Erro do analisador: ' POLICY0030: erro de sintaxe, inesperado '= =', esperando um dos seguintes: '='


  6. Exemplo:

    
    
    
    C1: [tipo = = "x 1", valor = = "boolean", valuetype = = "string"] = >
    
    
    
    
    Questão (type=c1.type, value=c1.value, valuetype = "string");
    
    
    
    Este exemplo é sintaticamente e semanticamente correto. No entanto, usando o "boolean" como um valor de seqüência de caracteres é vinculado a causar confusão, e deve ser evitado. Como mencionado anteriormente, usando terminais de linguagem como valores de créditos devem ser evitados sempre que possível.

A tabela a seguir lista o conjunto completo do terminais de seqüências de caracteres e os terminais de idioma associado que são usados na linguagem de regras de transformação de reivindicações. Essas definições usam seqüências de caracteres de maiúsculas e minúsculas UTF-16.

Seqüência de caracteres Terminal

"= >"

IMPLICA

";"

PONTO E VÍRGULA

":"

DOIS PONTOS

","

VÍRGULA

"."

DOT

"["

O_SQ_BRACKET

"]"

C_SQ_BRACKET

"("

O_BRACKET

")"

C_BRACKET

"=="

EQ

"!="

NEQ

"=~"

REGEXP_MATCH

"!~"

REGEXP_NOT_MATCH

"="

ATRIBUIR

"& &"

E

"problema"

Assunto

"tipo"

Tipo

"valor"

Valor

"valuetype"

VALUE_TYPE

"reclamação"

REIVINDICAÇÃO

"[_A-Za-z][_A-Za-z0-9]*"

identificador

"\"[^\"\n]*\""

String

"uint64"

UINT64_TYPE

"int64"

INT64_TYPE

"string"

STRING_TYPE

"boolean"

BOOLEAN_TYPE

A seguir linguagem de regras de transformação de reivindicações é especificada no formulário ABNF. Esta definição utiliza os terminais que são especificados na tabela anterior, além das produções de ABNF definidos aqui. As regras devem ser codificadas em UTF-16, e as comparações de seqüência de caracteres devem ser tratadas como diferencia maiúsculas de minúsculas.



Rule_set =; / * vazio * / / regrasarquivos = regra / regra RulesRule = Rule_bodyRule_body = (condições implicam Rule_action-e-vírgula) condições =; / * vazio * / / Sel_condition_listSel_condition_list = Sel_condition / (Sel_condition_list e Sel_condition) Sel_condition = Sel_condition_body / Sel_condition_body (identificador CÓLON Sel_condition_body) = O_SQ_BRACKET Opt_cond_list C_SQ_BRACKETOpt_cond_list = / * vazio * / / Cond_listCond_list = Cond / Cond (Cond_list vírgula Cond) = Value_cond / Type_condType_cond = Literal_exprValue_cond de Cond_oper do tipo = (Val_cond vírgula Val_type_Cond) /(Val_type_cond COMMA Val_cond) Val_cond = valor Cond_oper Literal_exprVal_type_cond = Value_type_literalclaim_prop de Cond_oper de VALUE_TYPE = tipo / VALUECond_oper = EQ / NEQ / REGEXP_MATCH / REGEXP_NOT_MATCHLiteral_expr = Literal / Value_type_literalExpr = Literal / Value_type_expr / (identificador DOT claim_prop) Value_type_expr = Value_type_literal/Value_type_literal (identificador VALUE_TYPE DOT) = INT64_TYPE / UINT64_TYPE / STRING_TYPE / BOOLEAN_TYPELiteral = STRINGRule_action = questão O_BRACKET Issue_params C_BRACKETIssue_params = claim_copy / claim_newclaim_copy = atribuir crédito IDENTIFIERclaim_new = claim_prop_assign_listclaim_prop_assign_list = (claim_value_assign vírgula claim_type_assign) / (claim_type_assign vírgula claim_value_assign) claim_value_assign = (claim_val_assign vírgula claim_val_type_assign) / claim_val_assign (claim_val_type_assign claim_val_assign de vírgula) = Exprclaim_val_type_assign valor atribuir = VALUE_TYPE atribuir Value_type_exprClaim_type_assign = Expr tipo atribuir

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft