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 da política

O seguinte usa uma política personalizada para o OBS como um exemplo para descrever a sintaxe.

{
    "Version": "1.1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "obs:bucket:ListAllMyBuckets",
                "obs:bucket:HeadBucket",
                "obs:bucket:ListBucket",
                "obs:bucket:GetBucketLocation"
            ],
            "Condition": {
                "StringEndWithIfExists": {
                    "g:UserName": [
                        "specialCharacter"
                    ]
                },
                "Bool": {
                    "g:MFAPresent": [
                        "true"
                    ]
                }
            },
            "Resource": [
                "obs:*:*:bucket:*"
            ]
        }
    ]
}

Estrutura da política

Uma política consiste em uma versão e uma ou mais instruções (indicando ações diferentes).

Figura 1 Estrutura da política

Parâmetros de política

Os parâmetros de política incluem Version e Statement, que são descritos na tabela a seguir. Você pode criar políticas personalizadas especificando os parâmetros. Para mais detalhes, consulte Casos de uso de políticas personalizadas.

Tabela 1 Parâmetros de política

Parâmetro

Descrição

Valor

Version

Versão da política.

1.1: indica o controle de acesso baseado em políticas.

Statement

Effect

Determina se permitir ou negar as operações definidas na ação.

  • Allow
  • Deny
NOTA:

Se uma ação tiver efeitos Allow e Deny, o efeito Deny terá precedência.

Action

Operações a serem realizadas no serviço.

Formato: "Service name:Resource type:Operation". Caracteres curinga (*) são suportados, indicando todas as opções.

Exemplo:

obs:bucket:ListAllMybuckets: permissões para listar todos os buckets do OBS.

Veja todas as ações do serviço em sua Referência de API, por exemplo, veja Ações suportadas de OBS.

Condition

Determina quando uma política entra em vigor. Uma condição consiste em uma chave de condição e um operador.

Formato: "Condition operator:{Condition key:[Value 1,Value 2]}"

Se você definir várias condições, a política terá efeito somente quando todas as condições forem atendidas.

Exemplo:

StringEndWithIfExists":{"g:UserName":["specialCharacter"]}: a instrução é válida para usuários cujos nomes terminam com specialCharacter.

Resource

Recursos nos quais a política entra em vigor.

Formato: Service name:Region:Account ID:Resource type:Resource path. Caracteres curinga (*) são suportados. Para obter detalhes sobre serviços de nuvem que suportam autorização em nível de recurso e tipos de recursos suportados, consulte Serviços de nuvem que suportam a autorização em nível de recurso usando o IAM.

Exemplo:

  • obs:*:*:bucket:*: todos os buckets do OBS.
  • obs:*:*:object:my-bucket/my-object/*: todos os objetos no diretório my-object do bucket my-bucket.
  • Chave de condição
    Uma chave de condição é uma chave no elemento Condition de uma instrução. Existem chaves de condição globais e de nível de serviço.
    • As chaves de condição global (começando com g:) se aplicam a todas as operações. O IAM fornece common global condition keys e special global condition keys.
      • Chaves de condição global comuns: os serviços de nuvem não precisam fornecer informações de identidade do usuário. Em vez disso, o IAM abstrai automaticamente as informações do usuário e autentica os usuários. Para mais detalhes, consulte Tabela 2.
      • Chaves de condição global especiais: o IAM obtém informações de condição dos serviços de nuvem para autenticação. Apenas determinados serviços de nuvem suportam chaves de condição global especiais.
    • Chaves de condição de nível de serviço (começando com uma abreviação de nome de serviço, por exemplo, obs:) aplicam-se apenas a operações no serviço especificado. Para obter detalhes, consulte o guia do usuário do serviço de nuvem correspondente, por exemplo, consulte Condições de solicitação de OBS.
    Tabela 2 Chaves de condição global comuns

    Chave de condição global

    Tipo

    Descrição

    g:CurrentTime

    Time

    Hora em que uma solicitação de autenticação é recebida. A hora está no formato ISO 8601, por exemplo, 2012-11-11T23:59:59Z. (Veja um exemplo de política que usa essa chave de condição)

    g:DomainName

    String

    Nome da conta do solicitante. (Veja um exemplo de política que usa essa chave de condição)

    g:MFAPresent

    Boolean

    Se deseja obter um token por meio da autenticação MFA. (Veja um exemplo de política que usa essa chave de condição)

    g:MFAAge

    Number

    Período de validade de um token obtido por meio da autenticação MFA. Esta condição deve ser usada em conjunto com g:MFAPresent. (Veja um exemplo de política que usa essa chave de condição)

    g:ProjectName

    String

    Nome do projeto. (Veja um exemplo de política que usa essa chave de condição)

    g:ServiceName

    String

    Nome do serviço. (Veja um exemplo de política que usa essa chave de condição)

    g:UserId

    String

    ID do usuário do IAM. (Veja um exemplo de política que usa essa chave de condição)

    g:UserName

    String

    Nome de usuário do IAM. (Veja um exemplo de política que usa essa chave de condição)

    Tabela 3 Chaves de condição global especiais

    Chave de condição global

    Tipo

    Descrição

    g:SourceIp

    IP Address

    Endereço IP do usuário que envia uma solicitação.

    g:SourceVpc

    String

    ID de VPC do usuário que envia uma solicitação.

    g:SourceVpce

    String

    ID do ponto de extremidade da VPC do usuário que está enviando uma solicitação.

    g:TagKeys

    String

    Chave de tag de recurso.

    g:ResourceTag/{TagKey}

    String

    Valor da chave da tag de recurso.

    1. g:CurrentTime

      Exemplo: a política a seguir concede permissão para criar funções personalizadas no IAM de 1º de março de 2023, 08:00 GMT+08:00 a 30 de março de 2023, 08:00 GMT+08:00. O valor da chave de condição g:CurrentTime está no formato UTC.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "DateGreaterThan": {
                                         "g:CurrentTime": ["2023-03-01T00:00:00Z"]
                                },
                                "DateLessThan": {
                                         "g:CurrentTime": ["2023-03-30T00:00:00Z"]
                                }
                        }
               }]
      }
    2. g: DomainName

      Exemplo: a política a seguir só permite que o usuário zhangsan crie funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "StringEquals": {
                                         "g:DomainName": ["zhangsan"]
                                }
                        }
               }]
      }
    3. g:MFAPresent

      Exemplo: a política a seguir permite que os usuários que obtêm credenciais usando a MFA criem funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "Bool": {
                                         "g:MFAPresent": ["true"]
                                }
                        }
               }]
      }
    4. g:MFAAge

      Exemplo: a política a seguir permite que os usuários que obtêm credenciais usando a MFA com o período válido maior que 900s criem funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                " NumberGreaterThanEquals ": {
                                         "g:MFAAge": ["900"]
                                }
                        }
               }]
      }
    5. g:ProjectName

      Exemplo: a política a seguir permite que os usuários que obtêm credenciais em CN North-Beijing criem funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                " StringEquals ": {
                                         "g: ProjectName ": ["cn-north-4"]
                                }
                        }
               }]
      }
    6. g: ServiceName

      Exemplo: a política a seguir permite que os usuários acessem todos os serviços, exceto o IAM. O valor dessa chave de condição corresponde ao Service Name na solicitação de autenticação.

      {
               "Version": "1.1",
               "Statement": [{
                        "Action": [
                                "*:*:*"
                        ],
                        "Effect": "Allow",
                        "Condition": {
                                "StringNotEqualsIgnoreCase": {
                                         "g:ServiceName": [
                                                  "iam"
                                         ]
                                }
                        }
               }]
      }
    7. g: UserId

      Exemplo: a política a seguir só permite o usuário cujo ID é xxxxxxxxxxx… para criar funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "StringEquals": {
                                         "g: UserId ": ["xxxxxxxxxxx…"]
                                }
                        }
               }]
      }
    8. g: UserName

      Exemplo: a política a seguir só permite que o usuário lisi crie funções personalizadas no IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "StringEquals": {
                                         "g: UserName ": ["lisi"]
                                }
                        }
               }]
      }
    • Chaves de condição multivalorada
      1. ForAllValues: testa se o valor de cada membro do conjunto de solicitações é um subconjunto do conjunto de chaves de condição. A condição retorna true se cada valor de chave na solicitação corresponder a pelo menos um valor na política.
        {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ims:images:share"
                    ],
                    "Condition": {
                        "ForAllValues:StringEquals": {
                            "ims:TargetOrgPaths": [
                                "orgPath1",
                                "orgPath2",
                                "orgPath3"
                            ]
                        }
                    }
                }
            ]
        }

        Esta política mostra como usar o qualificador ForAllValues com o operador de condição StringEquals. A condição determina se o compartilhamento deve ser permitido com as contas de membros no caminho de organização orgPath1, orgPath2 ou orgPath3.

        Suponha que um usuário faça uma solicitação para compartilhar o IMS com as contas de membros nos caminhos de organização orgPath1 e orgPath3. A solicitação é permitida porque os atributos solicitados pelo usuário correspondem todos aos valores especificados na política.

        Se a solicitação do usuário incluir orgPath1, orgPath2, orgPath3 e orgPath4, a solicitação falhará porque orgPath4 não está incluído no operador de condição.

      2. ForAnyValue: testa se pelo menos um membro do conjunto de valores de solicitação corresponde a pelo menos um membro do conjunto de valores de chave de condição. A condição retornará true se qualquer um dos valores de chave na solicitação corresponder a qualquer um dos valores de condição na política. Para nenhuma chave correspondente ou um conjunto de dados nulo, a condição retorna false.
        {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ims:images:share"
                    ],
                    "Condition": {
                        "ForAnyValue:StringEquals": {
                            "ims:TargetOrgPaths": [
                                "orgPath1",
                                "orgPath2",
                                "orgPath3"
                            ]
                        }
                    }
                }
            ]
        }

        Esta política mostra como usar o qualificador ForAnyValue com o operador de condição StringEquals. A condição determina se o compartilhamento deve ser permitido com as contas de membros no caminho de organização orgPath1, orgPath2 ou orgPath3.

        Suponha que um usuário faça uma solicitação para compartilhar o IMS com as contas de membros no caminho da organização orgPath1 ou orgPath4. A solicitação é permitida porque os atributos solicitados pelo usuário correspondem todos aos valores especificados na política.

        Se o usuário iniciar uma solicitação para compartilhar o IMS com as contas de membros no caminho da organização orgPath4 ou orgPath5, a solicitação falhará porque orgPath4 e orgPath5 não estão incluídos no operador de condição.

    Operadores de condição

    Figura 2 Operadores de condição
    1. Se um único operador de condição incluir vários valores para uma chave, esse operador de condição será avaliado usando um OR lógico. A condição retornará true se qualquer um dos valores de chave na solicitação corresponder a qualquer um dos valores de condição na política.

      Para operadores de condição de correspondência negada (como StringNotEquals), o valor da solicitação não pode corresponder a nenhum dos valores de condição com base nos operadores de condição.

    2. Se a política tiver vários operadores de condição ou várias chaves anexadas a um único operador de condição, as condições serão avaliadas usando um AND lógico.
  • Operador

    Um operador, uma chave de condição e um valor de condição juntos constituem uma instrução de condição completa. Uma política só entra em vigor quando suas condições de solicitação são atendidas. O sufixo IfExists do operador indica que uma política entra em vigor se um valor de solicitação estiver vazio ou atender à condição especificada. Por exemplo, se o operador StringEqualsIfExists for selecionado para uma política, a política entrará em vigor se o valor da solicitação estiver vazio ou igual ao valor da condição especificada. Os operadores são operadores de cadeia de caracteres. Eles não diferenciam maiúsculas de minúsculas, a menos que especificado de outra forma.

    • Operadores de condição de cadeia de caracteres
      Tabela 4 Operadores de condição de cadeia de caracteres

      Tipo

      Operador

      Descrição

      String

      StringEquals

      Correspondência exata, distinção entre maiúsculas e minúsculas

      StringNotEquals

      Correspondência negada, distinção entre maiúsculas e minúsculas

      StringEqualsIgnoreCase

      Correspondência exata

      StringNotEqualsIgnoreCase

      Correspondência negada

      StringMatch

      Correspondência com distinção entre maiúsculas e minúsculas. Os valores são expressões regulares que suportam apenas curingas de correspondência de vários caracteres (*) e curingas de correspondência de um único caractere (?).

      StringNotMatch

      Correspondência negada com distinção entre maiúsculas e minúsculas. Os valores são expressões regulares que suportam apenas curingas de correspondência de vários caracteres (*) e curingas de correspondência de um único caractere (?).

      Por exemplo, a instrução a seguir contém um elemento de condição que usa "g:DomainName" para especificar que o principal cujo nome de domínio é "ZhangSan" pode obter o conteúdo e os metadados do objeto.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:object:GetObject"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "g:DomainName": [
                              "ZhangSan"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condição numérica
      Tabela 5 Operadores de condição numérica

      Tipo

      Operador

      Descrição

      Number

      NumberEquals

      Correspondência

      NumberNotEquals

      Correspondência negada

      NumberLessThan

      Correspondência "menor que"

      NumberLessThanEquals

      Correspondência "menor que ou igual a"

      NumberGreaterThan

      Correspondência "maior que"

      NumberGreaterThanEquals

      Correspondência "maior que ou igual a"

      Por exemplo, a instrução a seguir contém um elemento de condição que usa o operador de condição "NumericLessThanEquals" com a chave "obs:max-keys" para especificar que o solicitante pode listar até 10 objetos em "example_bucket" de cada vez.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:ListBucket"
                  ],
                  "Resource": [
                      "OBS:*:*:bucket:example_bucket"
                  ],
                  "Condition": {
                      "NumberLessThanEquals": {
                          "obs:max-keys": [
                              "10"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condição de data
      Tabela 6 Operadores de condição de data

      Tipo

      Operador

      Descrição

      Date

      DateLessThan

      Correspondência antes de uma data e hora específicas

      DateLessThanEquals

      Correspondência em ou antes de uma data e hora específicas

      DateGreaterThan

      Correspondência após uma data e hora específicas

      DateGreaterThanEquals

      Correspondência em ou após uma data e hora específicas

      Por exemplo, a instrução a seguir contém um elemento de condição que usa o operador de condição "DateLessThan" com a chave "g:CurrentTime" para especificar que o solicitante só pode criar buckets antes de 1º de agosto de 2022.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:CreateBucket"
                  ],
                  "Condition": {
                      "DateLessThan": {
                          "g:CurrentTime": [
                              "2022-08-01T00:00:00Z"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condição Bool
      Tabela 7 Operadores de condição Bool

      Tipo

      Operador

      Descrição

      Bool

      Bool

      As condições Boolean permitem que você construa elementos de condição que restringem o acesso com base na comparação de uma chave com "true" ou "false".

      Por exemplo, essa política baseada em identidade usa o operador de condição Bool com a chave "g:MFAPresent" para permitir que apenas solicitantes com MFA ativada possam modificar as chaves de acesso permanentes especificadas.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iam:credentials:updateCredential"
                  ],
                  "Condition": {
                      "Bool": {
                          "g:MFAPresent": [
                              "true"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condição Null
      Tabela 8 Operadores de condição Null

      Tipo

      Operador

      Descrição

      Null

      Null

      Use um operador de condição Null para verificar se uma chave de condição está ausente no momento da autorização. Na instrução de política, use "true" (a chave não existe ou é nula) ou "false" (a chave existe e seu valor não é nulo).

      Por exemplo, você pode usar esse operador de condição para especificar que somente solicitações de criação de buckets de VPCs sejam permitidas.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      " obs:bucket:CreateBucket"
                  ],
                  "Condition": {
                      "Null": {
                          "obs:SourceVpc": [
                              "false"
                          ]
                      }
                  }
              }
          ]
      }
    • Sufixo do operador IfExists

      Você pode adicionar "IfExists" ao final de qualquer nome de operador de condição, exceto "Null condition", por exemplo, StringEqualsIfExists. Se a chave de política estiver presente no contexto da solicitação, processe a chave conforme especificado na política. Se a chave não estiver presente, avalie o elemento de condição como true.