

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AWS IoT Core variables de política
<a name="iot-policy-variables"></a>

AWS IoT Core define las variables de política que se pueden utilizar en AWS IoT Core las políticas del `Condition` bloque `Resource` o. Cuando se evalúa una política, las variables de política se sustituyen por valores reales. Por ejemplo, si un dispositivo está conectado al agente de AWS IoT Core mensajes con un ID de cliente de 100-234-3456, la variable de política se sustituye en el documento de `iot:ClientId` política por 100-234-3456.

AWS IoT Core las políticas pueden utilizar caracteres comodín y seguir una convención similar a la de las políticas de IAM. La inserción de un `*` (asterisco) en la cadena se puede tratar como un comodín, ya que coincide con cualquier carácter. Por ejemplo, se puede utilizar `*` para describir varios nombres de temas de MQTT en el atributo `Resource` de una política. Los caracteres `+` y `#` se tratan como cadenas literales en una política. Para ver un ejemplo de política que muestra cómo usar caracteres comodín, consulte [Uso de caracteres comodín en MQTT y en las políticas AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

También puede utilizar variables políticas predefinidas con valores fijos para representar caracteres que de otro modo tendrían un significado especial. Estos caracteres especiales incluyen `$(*)`, `$(?)` y `$($)`. Para obtener más información sobre las variables de política y los caracteres especiales, consulte [Elementos de la política de IAM: variables y etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) y [Creación de una condición con varias claves o valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variables de política básicas AWS IoT Core](basic-policy-variables.md)
+ [Variables de la política de objeto](thing-policy-variables.md)
+ [Variables de AWS IoT Core política de certificados X.509](cert-policy-variables.md)

# Variables de política básicas AWS IoT Core
<a name="basic-policy-variables"></a>

AWS IoT Core define las siguientes variables de política básicas:
+ `aws:SourceIp`: la dirección IP del cliente conectado al agente de AWS IoT Core mensajes.
+ `iot:ClientId`: es el ID de cliente que se utiliza para conectarse con el agente de mensajes de AWS IoT Core .
+ `iot:DomainName`: el nombre de dominio del cliente al que está conectado AWS IoT Core.

**Topics**
+ [Ejemplos de `ClientId` y variables de política `SourceIp`](#basic-policy-variables-example)
+ [Ejemplos de la variable de política `iot:DomainName`](#basic-policy-variables-example-domain)

## Ejemplos de `ClientId` y variables de política `SourceIp`
<a name="basic-policy-variables-example"></a>

La siguiente AWS IoT Core política muestra una política que utiliza variables de política. `aws:SourceIp`se puede usar en el elemento Condición de tu política para permitir que los directores realicen solicitudes a la API solo dentro de un rango de direcciones específico. Para ver ejemplos, consulte [Autorizar a los usuarios y los servicios en la nube a usar Jobs AWS IoT](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

En estos ejemplos, `${iot:ClientId}` se sustituye por el ID del cliente conectado al agente de AWS IoT Core mensajes cuando se evalúa la política. Cuando utiliza variables de la política como `${iot:ClientId}`, puede abrir de forma accidental el acceso a temas que no quería incluir. Por ejemplo, si utiliza una política que utiliza `${iot:ClientId}` para especificar un filtro de temas:

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

Un cliente puede conectarse usando `+` como ID de cliente. Esto puede permitir al usuario suscribirse a cualquier tema que coincida con el filtro de temas `my/+/topic`. Para protegerse contra estas brechas de seguridad, utilice la acción `iot:Connect` política para controlar qué cliente IDs se puede conectar. Por ejemplo, esta política permite conectarse únicamente a los clientes cuyo ID de cliente sea `clientid1`:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**nota**  
No se recomienda utilizar la variable de política `${iot:ClientId}` con `Connect`. No se comprueba el valor de `ClientId`, por lo que un asociador con un identificador de cliente diferente puede superar la validación pero provocar la desconexión. Como cualquier `ClientId` está permitido, si se establece un ID de cliente aleatorio, se pueden omitir las políticas de los grupos de objetos.

## Ejemplos de la variable de política `iot:DomainName`
<a name="basic-policy-variables-example-domain"></a>

Puede agregar la variable de política `iot:DomainName` para restringir los dominios que se pueden usar. Agregar la variable de política `iot:DomainName` permite que los dispositivos se conecten solo a determinados puntos de conexión configurados.

La siguiente política permite que los dispositivos se conecten al dominio especificado.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

La siguiente política impide que los dispositivos se conecten al dominio especificado.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Para obtener más información acerca de los operadores de condición de las políticas, consulte [Elementos de la política de JSON de IAM: operadores de condición](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Para obtener más información sobre las configuraciones de dominios, consulte [What is a domain configuration?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Variables de la política de objeto
<a name="thing-policy-variables"></a>

Las variables de política de cosas permiten escribir AWS IoT Core políticas que concedan o denieguen permisos en función de las propiedades de las cosas, como los nombres, los tipos y los valores de los atributos de las cosas. Puede usar variables de política de cosas para aplicar la misma política y controlar muchos AWS IoT Core dispositivos. Para obtener más información acerca del aprovisionamiento de dispositivos, consulte [Aprovisionamiento de dispositivos](iot-provision.html).

Si utiliza una asociación de objetos no exclusiva, se puede asociar el mismo certificado a varios objetos. Para mantener una asociación clara y evitar posibles conflictos, debe hacer coincidir el ID de cliente con el nombre del objeto. En este caso, el nombre de la cosa se obtiene del ID de cliente del `Connect` mensaje MQTT que se envía cuando una cosa se conecta a AWS IoT Core ella.

Tenga en cuenta lo siguiente cuando utilice variables en las políticas de AWS IoT Core .
+ Utilice la [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para adjuntar certificados o principios (identidades autenticadas de Amazon Cognito) a un objeto.
+ Si existe una asociación de objetos no exclusiva, al reemplazar los nombres de objeto con variables de política de objeto, el valor de `clientId` en el mensaje de conexión de MQTT o la conexión TLS deben coincidir exactamente con el nombre del objeto.

Las siguientes variables de política de objeto están disponibles:
+ `iot:Connection.Thing.ThingName`

  Esto se traduce en el nombre del elemento del AWS IoT Core registro para el que se está evaluando la política. AWS IoT Core usa el certificado que presenta el dispositivo cuando se autentica para determinar qué se debe usar para verificar la conexión. Esta variable de política solo está disponible cuando un dispositivo se conecta a través de MQTT o MQTT a través del protocolo. WebSocket 
+ `iot:Connection.Thing.ThingTypeName`

  Esta variable se resuelve en el tipo de objeto asociado al objeto para el que se evalúa la política. El ID de cliente de la WebSocket conexión MQTT/ debe ser el mismo que el nombre del elemento. Esta variable de política solo está disponible cuando se conecta a través de MQTT o MQTT a través del protocolo. WebSocket
+ `iot:Connection.Thing.Attributes[attributeName]`

  Esta variable se resuelve en el valor del atributo especificado asociado al objeto para el que se evalúa la política. Un objeto puede tener hasta 50 atributos. Cada atributo está disponible como una variable de política: `iot:Connection.Thing.Attributes[attributeName]` donde *attributeName* está el nombre del atributo. El ID de cliente de la MQTT/WebSocket conexión debe ser el mismo que el nombre de la cosa. Esta variable de política solo está disponible cuando se conecta a través de MQTT o MQTT a través del WebSocket protocolo.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`obliga a que solo los dispositivos que estén registrados AWS IoT y conectados a la red principal puedan acceder a los permisos incluidos en la política. Puede utilizar esta variable para impedir que un dispositivo se conecte AWS IoT Core si presenta un certificado que no esté adjunto a un elemento de IoT en el AWS IoT Core registro. Esta variable tiene valores que `false` indican que el elemento de conexión está adjunto al certificado `true` o a la identidad de Amazon Cognito en el registro mediante la API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) El nombre de la cosa se toma como identificador de cliente. 

Si el ID de cliente coincide con el nombre de objeto o si asocia el certificado a un objeto de forma exclusiva, el uso de variables de política en la definición de la política puede simplificar la administración de políticas. En lugar de crear políticas individuales para cada elemento de IoT, puede definir una única política mediante las variables de política del objeto. Esta política se puede aplicar a todos los dispositivos de forma dinámica. A continuación, se muestra un ejemplo de política que muestra cómo funciona. Para obtener más información, consulte [Asociar cualquier AWS IoT cosa a una conexión de cliente MQTT](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

Este ejemplo de política permite que las cosas se conecten AWS IoT Core si su ID de cliente termina con el valor de su atributo. `envType` Solo se permitirá la conexión a los objetos con un patrón de ID de cliente que coincide.

# Variables de AWS IoT Core política de certificados X.509
<a name="cert-policy-variables"></a>

Las variables de política de certificados X.509 ayudan a escribir AWS IoT Core políticas. Estas políticas conceden permisos en función de los atributos del certificado X.509. En las siguientes secciones se describe cómo se pueden utilizar estas variables de política de certificado.

**importante**  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado.

## CertificateId
<a name="cert-policy-variables-certid"></a>

En la [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, `certificateId` aparece en el cuerpo de la respuesta. Para obtener información sobre su certificado, utilice el formulario `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Atributos de emisor
<a name="issuer-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten permitir o denegar permisos, en función de los atributos del certificado establecidos por el emisor del certificado.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Atributos de sujeto
<a name="subject-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos del sujeto del certificado establecidos por el emisor del certificado.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

Los certificados X.509 permiten que estos atributos contengan uno o varios valores. De forma predeterminada, las variables de política de cada atributo de varios valores devuelven el primer valor. Por ejemplo, el atributo `Certificate.Subject.Country` podría contener una lista de nombres de países, pero cuando se evalúa en una política, `iot:Certificate.Subject.Country` se reemplaza por el nombre del primer país.

Puede solicitar un valor de atributo específico distinto del primero mediante un índice de base uno. Por ejemplo, `iot:Certificate.Subject.Country.1` se sustituye por el nombre del segundo país en el atributo `Certificate.Subject.Country`. Si especifica un valor de índice que no existe (por ejemplo, si pide un tercer valor cuando el atributo solo tiene dos valores asignados), no se realizará ninguna sustitución y la autorización dará un resultado erróneo. Puede utilizar el sufijo `.List` en el nombre de la variable de política para especificar todos los valores del atributo.

## Atributos de nombre alternativo del emisor
<a name="issuer-alternate-name-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos de nombre alternativo del emisor establecidos por el emisor del certificado.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Atributos de nombre alternativo de sujeto
<a name="subject-alternate-name-attributes"></a>

Las siguientes variables AWS IoT Core de política permiten conceder o denegar permisos, en función de los atributos del nombre alternativo del sujeto establecidos por el emisor del certificado.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Otros atributos
<a name="other-attributes"></a>

Puede utilizarlas `iot:Certificate.SerialNumber` para permitir o denegar el acceso a AWS IoT Core los recursos, en función del número de serie de un certificado. La variable de política `iot:Certificate.AvailableKeys` contiene el nombre de todas las variables de política de certificado que contienen valores.

# Uso de variables de política de certificado X.509
<a name="use-policy-variables"></a>

En este tema se explica cómo utilizar las variables de política de certificados. Las variables de política de certificado X.509 son esenciales para crear políticas de AWS IoT Core que concedan permisos basados en los atributos de certificado X.509. Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política.

**Topics**
+ [Ejemplo de certificado X.509](#certificate-example)
+ [Uso de los atributos del emisor del certificado como variables de política de certificados](#issuer-attributes-policy)
+ [Uso de los atributos del sujeto del certificado como variables de política de certificados](#subject-attributes-policy)
+ [Uso de los atributos del nombre alternativo del emisor del certificado como variables de la política de certificados](#issuer-alternate-name-attributes-policy)
+ [Uso de los atributos del nombre alternativo del sujeto del certificado como variables de la política de certificados](#subject-alternate-name-attributes-policy)
+ [Uso de otro atributo del certificado como variable de política de certificados](#other-attributes-policy)
+ [Limitaciones aplicables a las variables de política de certificado X.509](#policy-limits)
+ [Ejemplos de políticas que utilizan variables de política de certificados](#example-attributes-policy)

## Ejemplo de certificado X.509
<a name="certificate-example"></a>

Un certificado X.509 típico puede tener el siguiente aspecto. Este certificado de ejemplo incluye los atributos del certificado. Durante la evaluación de las políticas de AWS IoT Core , los siguientes atributos del certificado se rellenarán como variables de la política de certificado: `Serial Number`, `Issuer`, `Subject`, `X509v3 Issuer Alternative Name` y `X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Uso de los atributos del emisor del certificado como variables de política de certificados
<a name="issuer-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los atributos del emisor del certificado en una AWS IoT Core política.


**Atributos del emisor que se deben rellenar en una política**  

| Atributos del emisor de certificados | Variables de política de certificados | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del sujeto del certificado como variables de política de certificados
<a name="subject-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los atributos del sujeto del certificado en una AWS IoT Core política.


**Atributos del sujeto que se van a rellenar en una política**  

| Atributos del sujeto del certificado | Variables de política de certificados | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del nombre alternativo del emisor del certificado como variables de la política de certificados
<a name="issuer-alternate-name-attributes-policy"></a>

En la siguiente tabla se proporcionan detalles sobre cómo se rellenan los atributos del nombre alternativo del emisor de certificados en una política de AWS IoT Core .


**Atributos del nombre alternativo del emisor que se deben rellenar en una política**  

| Nombre alternativo del emisor de X509v3 | Atributo de una política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de los atributos del nombre alternativo del sujeto del certificado como variables de la política de certificados
<a name="subject-alternate-name-attributes-policy"></a>

En la siguiente tabla se proporcionan detalles sobre cómo se rellenan los atributos del nombre alternativo del sujeto de certificados en una política de AWS IoT Core .


**Atributos del nombre alternativo del sujeto que se deben rellenar en una política**  

| Nombre alternativo del sujeto de X509v3 | Atributo de una política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot/latest/developerguide/use-policy-variables.html)  | 

## Uso de otro atributo del certificado como variable de política de certificados
<a name="other-attributes-policy"></a>

La siguiente tabla proporciona detalles sobre cómo se rellenarán los demás atributos del certificado en una AWS IoT Core política.


**Otros atributos que se deben rellenar en una política**  

| Otro atributo de certificado | Variable de política de certificado | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitaciones aplicables a las variables de política de certificado X.509
<a name="policy-limits"></a>

Las siguientes limitaciones se aplican a las variables de política de certificado X.509:

Variables de política que faltan  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política.

 SerialNumber Formato de certificado  
AWS IoT Core trata el número de serie del certificado como la representación en cadena de un entero decimal. Por ejemplo, si una política solo permite conexiones con un identificador de cliente que coincida con el número de serie del certificado, el identificador de cliente debe ser el número de serie en formato decimal.

Caracteres comodín  
Si los atributos de certificado contienen caracteres de certificado, la variable de política no se sustituirá por el valor de atributo del certificado. Esto dejará el texto `${policy-variable}` en el documento de política. Esto puede producir un error de autorización. Se pueden utilizar los siguientes caracteres comodín: `*`, `$`, `+`, `?` y `#`.

Campos de matriz  
Los atributos de certificado que contienen matrices se limitan a cinco elementos. No se tendrán en cuenta los elementos adicionales.

Longitud de cadena  
Todos los valores de cadena están limitados a 1024 caracteres. Si un atributo de certificado contiene una cadena de más de 1024 caracteres, la variable de política no se sustituirá por el valor de atributo del certificado. Esto dejará el texto `${policy-variable}` en el documento de política. Esto puede producir un error de autorización.

Caracteres especiales  
Cualquier carácter especial, como `,`, `"`, `\`, `+`, `=`, `<`, `>` y `;` debe tener el prefijo de una barra invertida (`\`) cuando se utiliza en una variable de política. Por ejemplo, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` se convierte en `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Ejemplos de políticas que utilizan variables de política de certificados
<a name="example-attributes-policy"></a>

El siguiente documento de política permite las conexiones con un ID de cliente que coincida con el número de serie del certificado y la publicación en el tema que coincida con el patrón `${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**importante**  
Si el certificado X.509 no incluye un atributo de certificado concreto, pero la variable de política de certificados correspondiente se utiliza en el documento de política, la evaluación de la política podría provocar un comportamiento inesperado. Esto se debe a que la variable de política que falta no se evalúa en la instrucción de la política. Por ejemplo, si asocia el siguiente documento de política a un certificado que no contiene el atributo `iot:Certificate.Subject.Organization`, las variables de la política de certificado `iot:Certificate.Subject.Organization` no se rellenarán durante la evaluación de la política.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

También puede usar el [operador de condición Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para asegurarse de que las variables de política de certificados utilizadas en una política se rellenen durante la evaluación de la política. El siguiente documento de política permite `iot:Connect` con certificados solo cuando están presentes los atributos número de serie del certificado y nombre común del sujeto del certificado.

Todas las variables de la política de certificados tienen valores de cadena, por lo que se admiten todos [los operadores de condición de cadena](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```