Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-08-31 GMT+08:00

Sintaxe das regras de conversão de identidade

Uma regra de conversão de identidade é um objeto JSON que pode ser modificado. O seguinte é um exemplo de objeto JSON:
[
          {
                    "local": [
                              {
                                        "<user> or <group> or <groups>"
                              }
                    ],
                    "remote": [
                              {
                                        "<condition>"
                              }
                    ]
          }
]

Descrição do parâmetro:

  • local: informações de identidade de um usuário federado mapeado para o IAM. O valor desse campo pode conter espaços reservados, como {0...n}. Os atributos {0} e {1} representam o primeiro e o segundo atributos remotos das informações do usuário, respectivamente.
  • remote: informações sobre um usuário federado do IdP. Esse campo é uma expressão que consiste em atributos e operadores de asserção. O valor deste campo é determinado pela asserção.
    • condition: condições para que a regra de conversão de identidade entre em vigor. Os três tipos de condições a seguir são suportados:
      • empty: a regra corresponde a todas as declarações que contêm o tipo de atributo. Essa condição não precisa ser especificada. O resultado da condição é o argumento que é passado como entrada.
      • any_one_of: a regra é correspondida somente se qualquer uma das cadeias de caracteres especificadas aparecer no tipo de atributo. O resultado da condição é Boolean, não o argumento que é passado como entrada.
      • not_any_of: a regra não é correspondida se qualquer uma das cadeias de caracteres especificadas aparecer no tipo de atributo. O resultado da condição é Boolean, não o argumento que é passado como entrada.

As informações do usuário mapeadas para o IAM podem conter apenas letras, dígitos, espaços, hifens (-), sublinhados (_) e pontos (.) e não podem começar com um dígito.

Exemplos da condição empty

A condição empty retorna cadeias de caracteres para substituir os atributos locais {0..n}.

  • No exemplo a seguir, o nome de usuário de um usuário federado será "o valor do primeiro atributo remoto+espaço+o valor do segundo atributo remoto" no IAM, ou seja, FirstName LastName. O grupo ao qual o usuário pertence é o valor do terceiro atributo remoto Group. Este atributo tem apenas um valor.
    [ 
            { 
                "local": [ 
                    { 
                        "user": { 
                            "name": "{0} {1}" 
                        } 
                    }, 
                    { 
                        "group": { 
                            "name": "{2}" 
                        } 
                    } 
                ], 
                "remote": [ 
                    { 
                        "type": "FirstName" 
                    }, 
                    { 
                        "type": "LastName" 
                    }, 
                    { 
                        "type": "Group" 
                    } 
                ] 
            } 
    ]     

    Se a seguinte asserção (simplificada para facilitar a compreensão) for recebida, o nome de usuário do usuário federado será John Smith e o usuário só pertencerá ao grupo admin.

    {FirstName: John} 
    {LastName: Smith} 
    {Group: admin}
  • Se um usuário federado pertencer a vários grupos de usuários no IAM, a regra de conversão de identidade poderá ser configurada da seguinte maneira:

    No exemplo a seguir, o nome de usuário de um usuário federado será "o valor do primeiro atributo remoto+espaço+o valor do segundo atributo remoto" no IAM, ou seja, FirstName LastName. Os grupos aos quais o usuário pertence são o valor do terceiro atributo remoto Groups.

    [  
            {  
                "local": [  
                    {  
                        "user": {  
                            "name": "{0} {1}"  
                        }  
                    },  
                    {  
                        "group":   {  
                            "name": "{2}"  
                        }   
                    }  
                ],  
                "remote": [  
                    {  
                        "type": "FirstName"  
                    },  
                    {  
                        "type": "LastName"  
                    },  
                    {  
                        "type": "Groups"  
                    }  
                ]  
            }  
    ]  

    Se a asserção a seguir for recebida, o nome de usuário do usuário federado será John Smith e o usuário pertencerá aos grupos admin e manager.

    {FirstName: John}  
    {LastName: Smith}  
    {Groups: [admin, manager]}

Exemplos das condições "any one of" e "not any of"

Ao contrário da condição empty, as condições any one of e not any of retornam valores Boolean. Esses valores não serão usados para substituir os atributos locais. No exemplo a seguir, apenas {0} será substituído pelo valor retornado da primeira condição empty no bloco remote. O valor do group é fixo como admin.

  • O nome de usuário do usuário federado no IAM é o valor do primeiro atributo remoto, ou seja, UserName. O usuário federado pertence ao grupo admin. Essa regra entra em vigor somente para usuários que são membros do grupo idp_admin no IdP.
    [ 
            { 
                "local": [ 
                    { 
                        "user": { 
                            "name": "{0}" 
                        } 
                    }, 
                    { 
                        "group": { 
                            "name": "admin" 
                        } 
                    } 
                ], 
                "remote": [ 
                    { 
                    "type": "UserName" 
                    }, 
                    { 
                        "type": "Groups", 
                        "any_one_of": [ 
                            "idp_admin" 
                        ] 
                    } 
                ] 
            } 
    ]     
  • Se um usuário federado pertencer a vários grupos de usuários no IAM, a regra de conversão de identidade poderá ser configurada da seguinte maneira:
    O nome de usuário do usuário federado no IAM é o valor do primeiro atributo remoto, ou seja, UserName. O usuário federado pertence aos grupos admin e manager. Essa regra entra em vigor somente para usuários que são membros do grupo idp_admin no IdP.
    [  
            {  
                "local": [  
                    {  
                        "user": {  
                            "name": "{0}"  
                        }  
                    },  
                    {  
                        "group": {
                               "name":"admin"
                        }
                    },
                    {  
                        "group": {
                               "name":"manager"
                        }
                    }
                ],  
                "remote": [  
                    {  
                    "type": "UserName"  
                    },  
                    {  
                        "type": "Groups",  
                        "any_one_of": [  
                            "idp_admin"  
                        ]  
                    }  
                ]  
            }  
    ]     
    • A asserção a seguir indica que o usuário federado John Smith é membro do grupo idp_admin. Portanto, o usuário pode acessar a Huawei Cloud.
      {UserName: John Smith} 
      {Groups: [idp_user, idp_admin, idp_agency]}
    • A asserção a seguir indica que o usuário federado John Smith não é membro do grupo idp_admin. Portanto, a regra não entra em vigor para o usuário e o usuário não pode acessar a Huawei Cloud.
      {UserName: John Smith} 
      {Groups: [idp_user, idp_agency]}

Exemplo de condição contendo uma expressão regular

Você pode adicionar "regex": true a uma condição para calcular resultados usando uma expressão regular.

Esta regra entra em vigor para qualquer usuário cujo nome de usuário termine com @mail.com. O nome de usuário de cada usuário federado aplicável é UserName no IAM e o usuário pertence ao grupo admin.
[ 
        { 
            "local": [ 
                { 
                    "user": { 
                        "name": "{0}" 
                    } 
                }, 
                { 
                    "group": { 
                        "name": "admin" 
                    } 
                } 
            ], 
            "remote": [ 
                { 
                "type": "UserName" 
                }, 
                { 
                    "type": "Groups", 
                    "any_one_of": [ 
                        ".*@mail.com$" 
                    ], 
                    "regex": true 
                } 
            ] 
        } 
]     

Exemplos de condições combinadas

Várias condições podem ser combinadas usando o operador lógico AND.

Essa regra entra em vigor somente para os usuários federados que não pertencem ao grupo de usuários idp_user ou idp_agent no IdP. O nome de usuário de cada usuário federado aplicável é UserName no IAM e o usuário pertence ao grupo admin.
[ 
        { 
            "local": [ 
                { 
                    "user": { 
                        "name": "{0}" 
                    } 
                }, 
                { 
                    "group": { 
                        "name": "admin" 
                    } 
                } 
            ], 
            "remote": [ 
                { 
                "type": "UserName" 
                }, 
                { 
                    "type": "Groups", 
                    "not_any_of": [ 
                        "idp_user" 
                    ] 
                }, 
                { 
                    "type": "Groups", 
                    "not_any_of": [ 
                        "idp_agent" 
                    ] 
                } 
            ] 
        } 
]     

A regra anterior é equivalente à seguinte:

[ 
        { 
            "local": [ 
                { 
                    "user": { 
                        "name": "{0}" 
                    } 
                }, 
                { 
                    "group": { 
                        "name": "admin" 
                    } 
                } 
            ], 
            "remote": [ 
                { 
                "type": "UserName" 
                }, 
                { 
                    "type": "Groups", 
                    "not_any_of": [ 
                        "idp_user", 
                        "idp_agent" 
                    ] 
                } 
            ] 
        } 
]     

Exemplos de regras combinadas

Se várias regras forem combinadas, os métodos para correspondência de nomes de usuários e grupos de usuários serão diferentes.

O nome de um usuário federado será o nome de usuário correspondente na primeira regra que entrar em vigor, e o usuário pertencerá a todos os grupos correspondentes em todas as regras que entrarem em vigor. Um usuário federado só pode fazer logon se pelo menos uma regra entrar em vigor para corresponder ao nome de usuário. Para facilitar a compreensão, as regras de nome de usuário e grupo de usuários podem ser configuradas separadamente.

No exemplo a seguir, as regras entram em vigor para usuários no grupo idp_admin. O nome de usuário de cada usuário federado aplicável é UserName no IAM e o usuário pertence ao grupo admin.

[ 
    { 
        "local": [ 
            { 
                "user": { 
                    "name": "{0}" 
                } 
            } 
        ], 
        "remote": [ 
            { 
                "type": "UserName" 
            } 
        ] 
    }, 
    { 
        "local": [ 
            { 
                "group": { 
                    "name": "admin" 
                } 
            } 
        ], 
        "remote": [ 
            { 
                "type": "Groups", 
                "any_one_of": [ 
                    "idp_admin" 
                ] 
            } 
        ] 
    }
]

A asserção a seguir indica que o usuário John Smith é membro do grupo idp_admin no IdP e, portanto, atende às regras. O nome de usuário desse usuário será John Smith no IAM e o usuário pertencerá ao grupo admin.

{UserName: John Smith} 
{Groups: [idp_user, idp_admin, idp_agency]}