Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-07-30 GMT+08:00

Sintaxis de política

A continuación se utiliza una política personalizada para OBS como ejemplo para describir la sintaxis.

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

Estructura de políticas

Una política consiste en una versión y una o más sentencias (que indican diferentes acciones).

Figura 1 Estructura de políticas

Parámetros de política

Los parámetros de directiva incluyen Version y Statement, que se describen en la tabla siguiente. Puede crear políticas personalizadas especificando los parámetros. Para obtener más información, véase Casos de uso de políticas personalizadas.

Tabla 1 Parámetros de política

Parámetro

Descripción

Valor

Version

Versión de política.

1.1: indica el control de acceso basado en políticas.

Statement

Effect

Determina si se permiten o deniegan las operaciones definidas en la acción.

  • Allow
  • Deny
NOTA:

Si una acción tiene efectos Allow y Deny, el efecto Deny tiene prioridad.

Action

Operaciones a realizar en el servicio.

Formato: "Service name:Resource type:Operation". Se admiten caracteres carácter comodín (*), que indican todas las opciones.

Ejemplo:

obs:bucket:ListAllMybuckets: Permisos para listar todos los buckets OBS.

Vea todas las acciones del servicio en su Referencia de API, por ejemplo, consulte Acciones admitidas de OBS.

Condition

Determina cuándo entra en vigor una política. Una condición consiste en una clave de condición y un operador.

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

Si establece varias condiciones, la política solo tendrá efecto cuando se cumplan todas las condiciones.

Ejemplo:

StringEndWithIfExists":{"g:UserName":["specialCharactor"]}: La instrucción es válida para usuarios cuyos nombres terminan con specialCharactor.

Resource

Recursos sobre los que entra en vigor la política.

Formato: Service name:Region:Account ID:Resource type:Resource path. Se admiten caracteres carácter comodín (*). Para obtener más información sobre los servicios en la nube que admiten la autorización a nivel de recursos y los tipos de recursos admitidos, consulte Servicios en la nube compatibles con la autorización a nivel de recursos mediante IAM.

Ejemplo:

  • obs:*:*:bucket:*: Todos los buckets de OBS.
  • obs:*:*:object:my-bucket/my-object/*: Todos los objetos del directorio my-object del bucket my-bucket.
  • Condition key
    Una clave de condición es una clave en el elemento Condition de una sentencia. Hay claves de condición globales y de nivel de servicio.
    • Las claves de condición globales (comenzando con g:) se aplican a todas las operaciones. IAM proporciona common global condition keys y special global condition keys.
      • Claves de condición globales comunes: Los servicios en la nube no necesitan proporcionar información de identidad del usuario. En su lugar, IAM abstrae automáticamente la información del usuario y autentica a los usuarios. Para obtener más información, véase Tabla 2.
      • Claves de condición global especiales: IAM obtiene información de condición de los servicios en la nube para la autenticación. Solo algunos servicios en la nube admiten claves de condición globales especiales.
    • Las claves de condición de nivel de servicio (comenzando con una abreviatura de nombre de servicio, por ejemplo, obs:) solo se aplican a las operaciones en el servicio especificado. Para obtener más información, consulte la guía del usuario del servicio en la nube correspondiente, por ejemplo, consulte Condiciones de solicitud de OBS.
    Tabla 2 Claves de condición global comunes

    Clave de condición global

    Tipo

    Descripción

    g:CurrentTime

    Time

    Tiempo en la que se recibe una solicitud de autenticación. La hora está en formato ISO 8601, por ejemplo 2012-11-11T23:59:59Z. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:DomainName

    String

    Nombre de la cuenta del solicitante. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:MFAPresent

    Boolean

    Si se obtiene un token a través de la autenticación MFA. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:MFAAge

    Number

    Período de validez de un token obtenido mediante autenticación MFA. Esta condición debe usarse junto con g:MFAPresent. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:ProjectName

    String

    Nombre del proyecto. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:ServiceName

    String

    Nombre del servicio. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:UserId

    String

    ID de usuario de IAM. (Ver una política de ejemplo que utiliza esta clave de condición)

    g:UserName

    String

    Nombre de usuario IAM. (Ver una política de ejemplo que utiliza esta clave de condición)

    Tabla 3 Claves de condición global especiales

    Clave de condición global

    Tipo

    Descripción

    g:SourceIp

    IP Address

    Dirección IP del usuario que envía una solicitud.

    g:SourceVpc

    String

    ID de VPC del usuario que envía una solicitud.

    g:SourceVpce

    String

    ID de punto de conexión de VPC del usuario que envía una solicitud.

    g:TagKeys

    String

    Clave de etiqueta de recurso.

    g:ResourceTag/{TagKey}

    String

    Valor de clave de etiqueta de recurso.

    1. g:CurrentTime

      Ejemplo: La siguiente política otorga permiso para crear roles personalizados en IAM desde el 1 de marzo de 2023, 08:00 GMT+08:00 hasta el 30 de marzo de 2023, 08:00 GMT+08:00. El valor de la clave de condición g:CurrentTime está en 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

      Ejemplo: La siguiente política solo permite que el usuario zhangsan cree roles personalizados en IAM.

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

      Ejemplo: La siguiente política permite a los usuarios que obtengan credenciales mediante MFA crear roles personalizados en IAM.

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

      Ejemplo: La siguiente política permite a los usuarios que obtengan credenciales mediante MFA con un período válido superior a 900s crear roles personalizados en IAM.

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

      Ejemplo: La siguiente política permite a los usuarios que obtengan credenciales de CN North-Beijing crear roles personalizados en IAM.

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

      Ejemplo: La siguiente política permite a los usuarios acceder a todos los servicios excepto IAM. El valor de esta clave de condición coincide con Service Name en la solicitud de autenticación.

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

      Ejemplo: La siguiente política solo permite al usuario cuyo ID sea xxxxxxxxxxx… crear roles personalizados en IAM.

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

      Ejemplo: La siguiente política solo permite que el usuario lisi cree roles personalizados en IAM.

      {
               "Version": "1.1",
               "Statement": [{
                        "Effect": "Allow",
                        "Action": ["iam:roles:createRoles"],
                        "Condition": {
                                "StringEquals": {
                                         "g: UserName ": ["lisi"]
                                }
                        }
               }]
      }
    • Claves de condición multivalor
      1. ForAllValues: Comprueba si el valor de cada miembro del conjunto de solicitudes es un subconjunto del conjunto de claves de condición. La condición devuelve true si cada valor de clave de la solicitud coincide con al menos un valor de la política.
        {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ims:images:share"
                    ],
                    "Condition": {
                        "ForAllValues:StringEquals": {
                            "ims:TargetOrgPaths": [
                                "orgPath1",
                                "orgPath2",
                                "orgPath3"
                            ]
                        }
                    }
                }
            ]
        }

        Esta política muestra cómo usar el calificador ForAllValues con el operador de condición StringEquals. La condición determina si se permite el uso compartido con las cuentas de miembro en la ruta de organización orgPath1, orgPath2 o orgPath3.

        Supongamos que un usuario realiza una solicitud para compartir IMS con las cuentas de miembro en las rutas de organización orgPath1 y orgPath3. Se permite la solicitud porque los atributos solicitados del usuario coinciden con los valores especificados en la política.

        Si la solicitud del usuario incluye orgPath1, orgPath2, orgPath3 y orgPath4, la solicitud falla porque orgPath4 no está incluida en el operador de condición.

      2. ForAnyValue: Prueba si al menos un miembro del conjunto de valores de solicitud coincide con al menos un miembro del conjunto de valores de clave de condición. La condición devuelve true si cualquiera de los valores de clave de la solicitud coincide con cualquiera de los valores de condición de la política. Para ninguna clave coincidente o un conjunto de datos nulo, la condición devuelve false.
        {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ims:images:share"
                    ],
                    "Condition": {
                        "ForAnyValue:StringEquals": {
                            "ims:TargetOrgPaths": [
                                "orgPath1",
                                "orgPath2",
                                "orgPath3"
                            ]
                        }
                    }
                }
            ]
        }

        Esta política muestra cómo usar el calificador ForAnyValue con el operador de condición StringEquals. La condición determina si se permite el uso compartido con las cuentas de miembro en la ruta de organización orgPath1, orgPath2 o orgPath3.

        Supongamos que un usuario realiza una solicitud para compartir IMS con las cuentas de miembro en la ruta de organización orgPath1 o orgPath4. Se permite la solicitud porque los atributos solicitados del usuario coinciden con los valores especificados en la política.

        Si el usuario inicia una solicitud para compartir IMS con las cuentas de miembro en la ruta de organización orgPath4 o orgPath5, la solicitud falla porque orgPath4 y orgPath5 no están incluidos en el operador de condición.

    Condition operators

    Figura 2 Operadores de condiciones
    1. Si un único operador de condición incluye múltiples valores para una clave, ese operador de condición se evalúa usando un OR lógico. La condición devuelve true si alguno de los valores de clave de la solicitud coincide con cualquiera de los valores de condición de la política.

      Para los operadores de condiciones coincidentes anulados (como StringNotEquals), el valor de solicitud no puede coincidir con ninguno de los valores de condición basándose en los operadores de condición.

    2. Si la política tiene varios operadores de condiciones o varias claves conectadas a un único operador de condiciones, las condiciones se evalúan mediante un AND lógico.
  • Operator

    Un operador, una clave de condición y un valor de condición juntos constituyen una declaración de condición completa. Una política solo entra en vigor cuando se cumplen las condiciones de solicitud. El sufijo de operador IfExists indica que una política entra en vigor si un valor de solicitud está vacío o cumple la condición especificada. Por ejemplo, si se selecciona el operador StringEqualsIfExists para una política, la política tiene efecto si un valor de solicitud está vacío o es igual al valor de condición especificado. Los operadores son operadores de cadena. No distinguen entre mayúsculas y minúsculas a menos que se especifique lo contrario.

    • Operadores de condición de string
      Tabla 4 Operadores de condición de string

      Tipo

      Operador

      Descripción

      String

      StringEquals

      Coincidencia exacta, sensible a mayúsculas y minúsculas

      StringNotEquals

      Coincidencia negativa, sensible a mayúsculas y minúsculas

      StringEqualsIgnoreCase

      Coincidencia exacta

      StringNotEqualsIgnoreCase

      Coincidencia negativa

      StringMatch

      Coincidencia sensible a mayúsculas y minúsculas. Los valores son expresiones regulares que admiten solo comodines de coincidencia de varios caracteres (*) y comodines de coincidencia de un solo carácter (?).

      StringNotMatch

      Coincidencia negativa sensible a mayúsculas y minúsculas. Los valores son expresiones regulares que admiten solo comodines de coincidencia de varios caracteres (*) y comodines de coincidencia de un solo carácter (?).

      Por ejemplo, la siguiente sentencia contiene un elemento de condición que utiliza "g:DomainName" para especificar que el principal cuyo nombre de dominio es "ZhangSan" puede obtener el contenido y los metadatos del objeto.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:object:GetObject"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "g:DomainName": [
                              "ZhangSan"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condición numérica
      Tabla 5 Operadores de condición numérica

      Tipo

      Operador

      Descripción

      Number

      NumberEquals

      Coincidencia

      NumberNotEquals

      Coincidencia negativa

      NumberLessThan

      Coincidencia de "menos que"

      NumberLessThanEquals

      Coincidencia "Menos que o igual"

      NumberGreaterThan

      Coincidencia de "mayor que"

      NumberGreaterThanEquals

      Coincidencia "mayor que o igual"

      Por ejemplo, la siguiente sentencia contiene un elemento de condición que utiliza el operador de condición "NumericLessThanEquals" con la clave "obs:max-keys" para especificar que el solicitante puede enumerar hasta 10 objetos en "example_bucket" a la vez.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:ListBucket"
                  ],
                  "Resource": [
                      "OBS:*:*:bucket:example_bucket"
                  ],
                  "Condition": {
                      "NumberLessThanEquals": {
                          "obs:max-keys": [
                              "10"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condición de fecha
      Tabla 6 Operadores de condición de fecha

      Tipo

      Operador

      Descripción

      Date

      DateLessThan

      Coincidencia antes de una fecha y hora específicas

      DateLessThanEquals

      Coincidencia en o antes de una fecha y hora específicas

      DateGreaterThan

      Coincidencia después de una fecha y hora específicas

      DateGreaterThanEquals

      Coincidencia en o después de una fecha y hora específicas

      Por ejemplo, la siguiente sentencia contiene un elemento de condición que utiliza el operador de condición "DateLessThan" con la clave "g:CurrentTime" para especificar que el solicitante puede crear buckets solo antes del 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 condición Bool
      Tabla 7 Operadores de condición Bool

      Tipo

      Operador

      Descripción

      Bool

      Bool

      Las condiciones booleanas permiten construir elementos de condición que restringen el acceso basándose en la comparación de una clave con "true" o "false".

      Por ejemplo, esta política basada en identidad utiliza el operador de condición Bool con la clave "g:MFAPresent" para permitir que solo los solicitantes con MFA habilitado puedan modificar las claves de acceso permanente especificadas.

      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "iam:credentials:updateCredential"
                  ],
                  "Condition": {
                      "Bool": {
                          "g:MFAPresent": [
                              "true"
                          ]
                      }
                  }
              }
          ]
      }
    • Operadores de condición Null
      Tabla 8 Operadores de condición Null

      Tipo

      Operador

      Descripción

      Null

      Null

      Utilice un operador de condición Null para comprobar si una clave de condición está ausente en el momento de la autorización. En la sentencia de política, use "true" (la clave no existe o es nula) o "false" (la clave existe y su valor no es nulo).

      Por ejemplo, puede usar este operador de condición para especificar que solo se permiten las solicitudes de creación de buckets desde las VPC.

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

      Puede agregar "IfExists" al final de cualquier nombre de operador de condición, excepto la "Null condition", por ejemplo, StringEqualsIfExists. Si la clave de política está presente en el contexto de la solicitud, procese la clave como se especifica en la política. Si la clave no está presente, evalúe el elemento de condición como true.