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 2023-11-25 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 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 do remote das informações do usuário, respectivamente.
  • remote: Informações sobre um usuário federado do provedor de identidade. Este campo é uma expressão que consiste em operadores e atributos 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 seguintes três tipos de condições 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 argument que é passado como entrada.
      • any_one_of: A regra é correspondida somente se qualquer uma das strings especificadas aparecer no tipo de atributo. O resultado da condição é o Boolean em vez do argument que é passado como entrada.
      • not_any_of: A regra não é correspondida se qualquer uma das strings especificadas aparecer no tipo de atributo. O resultado da condição é o Boolean em vez do argument que é passado como entrada.

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

Exemplos da condição do empty

A condição do empty retorna strings de caracteres para substituir os atributos do local {0..n}.

  • No exemplo a seguir, o nome de usuário de um usuário federado será "o valor do primeiro atributo do remote+espaço+o valor do segundo atributo do remote" no IAM, ou seja, FirstName LastName. O grupo ao qual o usuário pertence é o valor do terceiro atributo do remote 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 pertencerá apenas 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 do remote+espaço+o valor do segundo atributo do remote" no IAM, ou seja, FirstName LastName. Os grupos aos quais o usuário pertence é o valor do terceiro atributo do remote Groups.

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

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

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

Exemplos de 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 do local. No exemplo a seguir, apenas {0} será substituído pelo valor retornado da primeira condição do empty no bloco remote. O valor do grupo é fixo como admin.

  • O nome de usuário do usuário federado no IAM é o valor do primeiro atributo do remote, 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 provedor de identidade.
    [ 
            { 
                "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 do remote, 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 provedor de identidade.
    [  
            {  
                "local": [  
                    {  
                        "user": {  
                            "name": "{0}"  
                        }  
                    },  
                    {  
                        "groups": {
                               "name":"admin"
                        }
                    },
                    {  
                        "groups": {
                               "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 é um 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 é um 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.

Essa 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

Múltiplas condições podem ser combinadas usando o operador lógico AND.

Essa regra só entra em vigor para os usuários federados que não pertencem ao grupo de usuários idp_user ou idp_agent no provedor de identidade. 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ário 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 login 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 é um membro do grupo idp_admin no provedor de identidade e, portanto, atende às regras. O nome de usuário desse usuário será John Smith no IAM e o usuário pertence ao grupo admin.

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