Claves de contexto de valor único y multivalor
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.
-
Las claves de contexto de condición de valor único tienen como máximo un valor en el contexto de la solicitud. Por ejemplo, puede etiquetar recursos en AWS. Las etiquetas de recursos se almacenan como pares de valor de clave de etiqueta. Una clave de etiqueta de recurso puede tener un solo valor de etiqueta. Por lo tanto, aws:ResourceTag/tag-key es una clave de contexto de un solo valor. 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, se pueden etiquetar los recursos en AWS e incluir varios pares de valor de clave de etiqueta en una 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 autorización de servicio, se utiliza una clasificación de tipos de valores diferente para las claves de contexto multivalor en el siguiente formato: un prefijo ArrayOf
seguido del tipo de categoría del operador de condición. 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. No se puede utilizar una clave de contexto multivalor 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.
Los operadores de conjuntos de condiciones ForAllValues
o ForAnyValue
son necesarios para las claves de contexto multivalor. Las claves de contexto que incluyen pares de clave-valor, tales como aws:RequestTag/tag-key y aws:ResourceTag/tag-key, pueden causar confusión porque puede haber múltiples valores de
. Pero dado que cada tag-key
solo puede tener un valor, tag-key
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.
Estos calificadores ForAllValues
y ForAnyValue
agregan la funcionalidad de operación de conjunto al operador de condición para que pueda probar claves de contexto con varios valores contra varios valores de clave de contexto 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
. Los valores de las claves de condición múltiples 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 verdadero si cada valor de clave de contexto de la solicitud coincide con al menos un valor de clave de contexto en la política. También devuelve verdadero si no hay claves de contexto en la solicitud o si los valores de clave de contexto se resuelven en un conjunto de datos nulo, como una cadena vacía. Para evitar que las claves de contexto faltantes o las claves de contexto con valores vacíos se evalúen como verdaderas, puede incluir el operador de condición Null en su política con un valor falso para comprobar si la clave de contexto existe y su valor no es nulo.importante
Tenga cuidado si usa
ForAllValues
con un efectoAllow
, porque puede resultar demasiado permisivo si la presencia de claves de contexto faltantes o claves de contexto con valores vacíos en el contexto de la solicitud es inesperada. Puede incluir el operador de condiciónNull
en su política con un valor falso 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 verdadero si alguno de los valores de clave de contexto de la solicitud coincide con alguno de los valores de clave de contexto de la política. Si no hay una clave de contexto que coincida o si hay un conjunto de datos nulo, la condición devuelve falso.
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.