Claves de contexto de valor único y multivalor - AWS Identity and Access Management

Claves de contexto de valor único y multivalor

La diferencia entre las claves de contexto de valor único y de valor múltiple depende de la cantidad de valores en el contexto de la solicitud, no de la cantidad de valores en la condición de la política.

  • Las claves de contexto de condición de valor único tienen como máximo un valor en el contexto de la solicitud. Por ejemplo, cuando etiqueta recursos en AWS, cada etiqueta de recurso se almacena como un par de clave-valor. Como una clave de etiqueta de recurso solo puede tener un valor de etiqueta único, aws:ResourceTag/tag-key es una clave de contexto de valor único. No utilice un operador de conjunto de condiciones con una clave de contexto de un solo valor.

  • Las claves de contexto de condición multivalor pueden tener varios valores en el contexto de la solicitud. Por ejemplo, cuando etiqueta recursos en AWS, puede incluir varios pares de etiquetas de clave-valor en una única solicitud. Por lo tanto, aws:TagKeys es una clave de contexto multivalor. Las claves de contexto multivalor requieren un operador de conjunto de condiciones.

importante

Las claves de contexto multivalor requieren un operador de conjunto de condiciones. No utilice los operadores de conjunto de condiciones ForAllValues o ForAnyValue con claves de contexto de un solo valor. Para obtener más información sobre los operadores de conjuntos de condiciones, consulte Claves de contexto multivalor.

Las clasificaciones Valor único y Multivalor se incluyen en la descripción de cada clave de contexto de condición como Tipo de valor en el tema Claves de contexto de condición globales de AWS. En la Referencia de autorizaciones de servicio, se utiliza una clasificación de tipos de valores diferente para las claves de contexto de valor múltiple, mediante el siguiente formato: un prefijo ArrayOf seguido del tipo de categoría del operador de condición, como por ejemplo ArrayOfString o ArrayOfARN.

Por ejemplo, una solicitud puede originarse a lo sumo de un punto de conexión de VPC, por lo que aws:SourceVpce es una clave de contexto de valor único. Dado que un servicio puede tener más de un nombre de entidad principal de servicio que pertenece al servicio, aws:PrincipalServiceNamesList es una clave de contexto multivalor.

Puede utilizar cualquier clave de contexto de valor único disponible como variable de política, pero no puede utilizar una clave de contexto de valor múltiple como variable de política. Para obtener más información sobre las variables de las políticas, consulte Elementos de la política de IAM: variables y etiquetas.

Cuando utiliza claves de contexto que incluyen pares de clave-valor, es importante tener en cuenta que, si bien puede haber varios valores de etiqueta y clave, cada tag-key solo puede tener un valor. Por lo tanto, aws:RequestTag y aws:ResourceTag son claves de contexto de valor único. El uso de operadores de conjuntos de condiciones con claves de contexto de valor único puede dar lugar a políticas demasiado permisivas.

Claves de contexto multivalor

Para comparar su clave de contexto de condición con un contexto de solicitud con varios valores, debe utilizar los operadores de conjunto ForAllValues o ForAnyValue. Estos operadores de conjunto se utilizan para comparar dos conjuntos de valores, como el conjunto de etiquetas en una solicitud y el conjunto de etiquetas en una condición de política.

Los calificadores ForAllValues y ForAnyValue agregan la funcionalidad de operación de conjunto al operador de condición para que pueda probar claves de contexto de solicitudes con varios valores y compararlos con varias claves de contexto de valor en una condición de política. Además, si incluye una clave de contexto multivalor en su política con un comodín o una variable, también debe utilizar el operador de condición StringLike. Las múltiples claves de contexto de valor se deben escribir entre corchetes como una matriz, por ejemplo, "Key2":["Value2A", "Value2B"].

  • ForAllValues: este calificador prueba si el valor de cada miembro del conjunto de solicitudes es un subconjunto del conjunto de claves de contexto de condición. La condición devuelve un resultado true si cada clave de contexto de valor de la solicitud coincide con, al menos, una clave de contexto de valor de la política. También devuelve un resultado true si no hay claves de contexto en la solicitud o si la clave de contexto de valor se resuelve en un conjunto de datos nulos, como una cadena vacía. Para evitar que las claves de contexto ausentes o las claves de contexto con valores vacíos se evalúen como true, puede incluir el operador de condición Null en su política con un valor false, para comprobar si la clave de contexto existe y su valor no es nulo.

    importante

    Tenga cuidado si utiliza ForAllValues con un efecto Allow, ya que puede resultar demasiado permisivo si la presencia de claves de contexto ausentes o de claves de contexto con valores vacíos en el contexto de la solicitud es inesperada. Puede incluir el operador de condición Null en su política con un valor false para comprobar si la clave de contexto existe y su valor no es nulo. Para ver un ejemplo, consulte Control del acceso en función de las claves de etiqueta.

  • ForAnyValue: este calificador prueba si al menos un miembro del conjunto de valores de clave de contexto de la solicitud coincide con al menos un miembro del conjunto de valores de la clave de contexto de su política. La clave de contexto devuelve un resultado true si una de las claves de contexto de valor en la solicitud coincide con alguna de las claves de contexto de valor en la política. Si no hay una clave de contexto que coincida o si hay un conjunto de datos nulos, la condición devuelve un resultado false.

nota

La diferencia entre las claves de contexto de valor único y multivalor depende del número de valores en el contexto de la solicitud, no de la cantidad de valores de la condición de política.