

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

AWS IoT Core define variáveis de política que podem ser usadas em AWS IoT Core políticas no `Condition` bloco `Resource` or. Quando uma política é avaliada, as variáveis da política são substituídas por valores reais. Por exemplo, se um dispositivo estiver conectado ao agente de AWS IoT Core mensagens com uma ID de cliente de 100-234-3456, a variável de política será substituída no documento `iot:ClientId` de política por 100-234-3456.

AWS IoT Core as políticas podem usar caracteres curinga e seguir uma convenção semelhante às políticas do IAM. A inserção de um `*` (asterisco) na string pode ser tratada como um curinga, correspondendo a qualquer caractere. Por exemplo, você pode usar `*` para descrever vários nomes de tópicos do MQTT no atributo do `Resource` de uma política. Os caracteres `+` e `#` são tratados como sequências literais em uma política. Para ver um exemplo de política que mostra como usar curingas, consulte [Usando caracteres curinga no MQTT e nas políticas AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

Você também pode usar variáveis de políticas predefinidas com valores fixos para representar caracteres que, de outra forma, têm um significado especial. Esses caracteres especiais incluem `$(*)`, `$(?)` e `$($)`. Para obter mais informações sobre variáveis de política e os caracteres especiais, consulte [Elementos de política do IAM: variáveis e tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) e [Criação de uma condição com várias chaves ou valores](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variáveis AWS IoT Core políticas básicas](basic-policy-variables.md)
+ [Variáveis de política de objetos](thing-policy-variables.md)
+ [Variáveis de política de certificado AWS IoT Core X.509](cert-policy-variables.md)

# Variáveis AWS IoT Core políticas básicas
<a name="basic-policy-variables"></a>

AWS IoT Core define as seguintes variáveis básicas de política:
+ `aws:SourceIp`: o endereço IP do cliente conectado ao agente de AWS IoT Core mensagens.
+ `iot:ClientId`: o ID do cliente usado para se conectar ao agente de mensagens do AWS IoT Core .
+ `iot:DomainName`: o nome de domínio do cliente conectado AWS IoT Core a.

**Topics**
+ [Exemplos de variáveis de política `ClientId` e `SourceIp`](#basic-policy-variables-example)
+ [Exemplos de variável de política `iot:DomainName`](#basic-policy-variables-example-domain)

## Exemplos de variáveis de política `ClientId` e `SourceIp`
<a name="basic-policy-variables-example"></a>

A AWS IoT Core política a seguir mostra uma política que usa variáveis de política. `aws:SourceIp`pode ser usado no elemento Condição da sua política para permitir que os diretores façam solicitações de API somente dentro de um intervalo de endereços específico. Para obter exemplos, consulte [Autorizando usuários e serviços em nuvem a usar o 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"
				}
			}
		}
	]
}
```

Nesses exemplos, `${iot:ClientId}` é substituído pelo ID do cliente conectado ao agente de AWS IoT Core mensagens quando a política é avaliada. Quando você usa variáveis de políticas, como `${iot:ClientId}`, você pode abrir acidentalmente o acesso a tópicos não intencionais. Por exemplo, se você usa uma política que usa `${iot:ClientId}` para especificar um filtro de tópico:

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

Um cliente pode se conectar usando `+` como o ID do cliente. Isso permitiria que o usuário se inscrevesse em qualquer tópico que correspondesse ao filtro de tópico `my/+/topic`. Para se proteger contra essas falhas de segurança, use a ação `iot:Connect` de política para controlar qual cliente IDs pode se conectar. Por exemplo, essa política permite que apenas clientes cujo ID é `clientid1` se conectem:

****  

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

**nota**  
Não é recomendável usar a variável de política `${iot:ClientId}` com `Connect`. Não há verificação do valor de `ClientId`; portanto, um anexador com um ID de cliente diferente pode passar na validação, mas causar a desconexão. Como qualquer `ClientId` é permitido, definir um ID de cliente aleatório pode ignorar as políticas do grupo de objetos.

## Exemplos de variável de política `iot:DomainName`
<a name="basic-policy-variables-example-domain"></a>

Você pode adicionar a variável de política `iot:DomainName` para restringir quais domínios podem ser usados. Adicionar a variável de política `iot:DomainName` permite que os dispositivos se conectem apenas a endpoints configurados específicos.

A política a seguir permite que os dispositivos se conectem ao domínio 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"
			}
		}
	}
}
```

A política a seguir nega que os dispositivos se conectem ao domínio 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 obter mais informações sobre operadores de condição de política, consulte [Elementos de política JSON do IAM: operadores de condição](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Para obter mais informações sobre configurações de domínio, consulte [O que é uma configuração de domínio?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Variáveis de política de objetos
<a name="thing-policy-variables"></a>

As variáveis de política de coisas permitem que você escreva AWS IoT Core políticas que concedam ou neguem permissões com base em propriedades de coisas, como nomes de coisas, tipos de coisas e valores de atributos de coisas. Você pode usar variáveis de política de coisas para aplicar a mesma política para controlar vários AWS IoT Core dispositivos. Para obter mais informações sobre o provisionamento de dispositivos, consulte [Provisionamento de dispositivos](iot-provision.html).

Se você usa uma associação de coisa não exclusiva, pode anexar o mesmo certificado a várias coisas. Para manter uma associação clara e evitar possíveis conflitos, você deve combinar seu ID de cliente com o nome da coisa. Nesse caso, você obtém o nome da coisa do ID do cliente na `Connect` mensagem MQTT enviada quando uma coisa se conecta a. AWS IoT Core

Lembre-se do seguinte ao usar variáveis de política de objetos em políticas do AWS IoT Core .
+ Use a [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API para anexar certificados ou entidades principais (identidades autenticadas do Amazon Cognito) a uma coisa.
+ Se houver uma associação de coisa exclusiva implementada, quando você estiver substituindo nomes de coisas por variáveis de política de coisas, o valor de `clientId` na mensagem de conexão do MQTT ou a conexão TLS deverá corresponder exatamente ao nome da coisa.

As variáveis de política de objetos a seguir estão disponíveis:
+ `iot:Connection.Thing.ThingName`

  Isso se resume ao nome da coisa no AWS IoT Core registro para a qual a política está sendo avaliada. AWS IoT Core usa o certificado que o dispositivo apresenta ao se autenticar para determinar qual coisa usar para verificar a conexão. Essa variável de política só está disponível quando um dispositivo se conecta pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.ThingTypeName`

  Isso resolve o tipo de objeto associado ao objeto para a qual a política está sendo avaliada. O ID do cliente da WebSocket conexão MQTT/ deve ser igual ao nome da coisa. Essa variável de política está disponível somente ao se conectar pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.Attributes[attributeName]`

  Isso resolve o valor do atributo especificado associado ao objeto para a qual a política está sendo avaliada. Um objeto pode ter até 50 atributos. Cada atributo está disponível como uma variável de política: `iot:Connection.Thing.Attributes[attributeName]` onde *attributeName* está o nome do atributo. O ID do cliente da MQTT/WebSocket conexão deve ser igual ao nome da coisa. Essa variável de política só está disponível ao se conectar pelo MQTT ou pelo MQTT pelo WebSocket protocolo.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`determina que somente os dispositivos registrados AWS IoT e conectados ao principal possam acessar as permissões dentro da política. Você pode usar essa variável para impedir que um dispositivo se conecte AWS IoT Core se ele apresentar um certificado que não esteja anexado a uma coisa de IoT no AWS IoT Core registro. Essa variável tem valores `true` ou `false` indica que a coisa conectada está anexada ao certificado ou à identidade do Amazon Cognito no registro usando a API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) O nome do objeto é usado como ID do cliente. 

Se o ID do cliente corresponder ao nome da coisa ou se você anexar seu certificado exclusivamente a uma coisa, o uso de variáveis na definição da política pode simplificar o gerenciamento de políticas. Em vez de criar políticas individuais para cada coisa da IoT, você pode definir uma única política usando as variáveis de política da coisa. É possível aplicar essa política a todos os dispositivos de forma dinâmica. Veja a seguir um exemplo de política para mostrar como funciona. Para obter mais informações, consulte [Associando qualquer AWS IoT coisa a uma conexão 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/*"
		}
	]
}
```

Esse exemplo de política permite que as coisas se conectem AWS IoT Core se o ID do cliente terminar com o valor do `envType` atributo. Somente coisas com um padrão de ID de cliente correspondente poderão se conectar.

# Variáveis de política de certificado AWS IoT Core X.509
<a name="cert-policy-variables"></a>

As variáveis de política de certificado X.509 ajudam na criação AWS IoT Core de políticas. Essas políticas concedem permissões com base nos atributos do certificado X.509. As seções a seguir descrevem como usar essas variáveis de política de certificado.

**Importante**  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado.

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

Na [RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, o `certificateId` aparece no corpo da resposta. Para obter informações sobre seu certificado, use o `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

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

As variáveis AWS IoT Core de política a seguir oferecem suporte à permissão ou negação de permissões, com base nos atributos do certificado definidos pelo emissor do 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 assunto
<a name="subject-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos do titular do certificado definidos pelo emissor do 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` 

Os certificados X.509 dão a esses atributos a opção de conter um ou mais valores. Por padrão, as variáveis de política para cada atributo multivalor retornam o primeiro valor. Por exemplo, o atributo `Certificate.Subject.Country` pode conter uma lista de nomes de países, mas, quando avaliado em uma política, `iot:Certificate.Subject.Country` é substituído pelo primeiro nome do país.

É possível solicitar um valor de atributo específico diferente do primeiro valor usando um índice baseado em um. Por exemplo, `iot:Certificate.Subject.Country.1` é substituído pelo segundo nome de país no atributo `Certificate.Subject.Country`. Se você especificar um valor de índice que não existe (por exemplo, se você solicitar um terceiro valor quando há apenas dois valores atribuídos ao atributo), nenhuma substituição será feita e haverá falha na autorização. Você pode usar o sufixo `.List` no nome da variável de política para especificar todos os valores do atributo.

## Atributos de nome alternativo do emissor
<a name="issuer-alternate-name-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos de nome alternativo do emissor definidos pelo emissor do 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 nome alternativo do assunto
<a name="subject-alternate-name-attributes"></a>

As variáveis AWS IoT Core de política a seguir oferecem suporte à concessão ou negação de permissões, com base nos atributos de nome alternativo do sujeito definidos pelo emissor do 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`

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

Você pode usar `iot:Certificate.SerialNumber` para permitir ou negar acesso aos AWS IoT Core recursos, com base no número de série de um certificado. A variável de política `iot:Certificate.AvailableKeys` contém o nome de todas as variáveis de política de certificado que contenham valores.

# Usar variáveis de política do certificado X.509
<a name="use-policy-variables"></a>

Este tópico fornece detalhes sobre como usar variáveis de política de certificados. As variáveis de política do certificado X.509 são essenciais quando você cria políticas do AWS IoT Core que dão permissões com base em atributos do certificado X.509. Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política.

**Topics**
+ [Exemplo de certificado X.509](#certificate-example)
+ [Usar atributos do emissor de certificados como variáveis de política de certificados](#issuer-attributes-policy)
+ [Usar atributos do sujeito do certificado como variáveis de política de certificados](#subject-attributes-policy)
+ [Usar atributos de nome alternativo do emissor de certificados como variáveis de política de certificados](#issuer-alternate-name-attributes-policy)
+ [Usar atributos de nome alternativo do sujeito do certificado como variáveis de política de certificados](#subject-alternate-name-attributes-policy)
+ [Usar outro atributo de certificado como uma variável de política de certificado](#other-attributes-policy)
+ [Limitações das variáveis de política de certificado X.509](#policy-limits)
+ [Exemplo de políticas usando variáveis de política de certificado](#example-attributes-policy)

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

Um certificado X.509 típico pode aparecer da seguinte forma. Este exemplo de certificado inclui atributos de certificado. Durante a avaliação das políticas do AWS IoT Core , os seguintes atributos de certificado serão preenchidos como variáveis de política de certificado: `Serial Number`, `Issuer`, `Subject`, `X509v3 Issuer Alternative Name` e `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 >>
```

## Usar atributos do emissor de certificados como variáveis de política de certificados
<a name="issuer-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos do emissor do certificado serão preenchidos em uma AWS IoT Core política.


**Atributos do emissor a serem preenchidos em uma política**  

| Atributos do emissor do certificado | Variáveis de política do certificado | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos do sujeito do certificado como variáveis de política de certificados
<a name="subject-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos do titular do certificado serão preenchidos em uma AWS IoT Core política.


**Atributos do sujeito a serem preenchidos em uma política**  

| Atributos do sujeito do certificado | Variáveis de política do certificado | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos de nome alternativo do emissor de certificados como variáveis de política de certificados
<a name="issuer-alternate-name-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos de nome alternativo do emissor do certificado serão preenchidos em uma política do AWS IoT Core .


**Atributos de nome alternativo do emissor a serem preenchidos em uma política**  

| Nome alternativo do emissor X509v3 | Atributo em uma política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar atributos de nome alternativo do sujeito do certificado como variáveis de política de certificados
<a name="subject-alternate-name-attributes-policy"></a>

A tabela a seguir fornece detalhes de como os atributos de nome alternativo do sujeito do certificado serão preenchidos em uma política do AWS IoT Core .


**Atributos de nome alternativo do sujeito a serem preenchidos em uma política**  

| Nome alternativo do assunto X509v3 | Atributo em uma política | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/iot/latest/developerguide/use-policy-variables.html)  | 

## Usar outro atributo de certificado como uma variável de política de certificado
<a name="other-attributes-policy"></a>

A tabela a seguir fornece detalhes de como outros atributos do certificado serão preenchidos em uma AWS IoT Core política.


**Outros atributos a serem preenchidos em uma política**  

| Outro atributo do certificado | Variável de política do certificado | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitações das variáveis de política de certificado X.509
<a name="policy-limits"></a>

As limitações a seguir se aplicam às variáveis de política de certificado X.509:

Variáveis de política ausentes  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política.

 SerialNumber Formato do certificado  
AWS IoT Core trata o número de série do certificado como a representação em cadeia de um número inteiro decimal. Por exemplo, se uma política só permite conexões com a ID do cliente correspondente ao número de série do certificado, o ID do cliente deve ser o número de série em formato decimal.

Curingas  
Se caracteres curinga estiverem presentes em atributos de certificado, a variável de política não será substituída pelo valor do atributo do certificado. Isso deixará o texto `${policy-variable}` no documento de política. Isso pode causar falha de autorização. Os seguintes caracteres curinga podem ser usados: `*`, `$`, `+`, `?` e `#`.

Campos da matriz  
Os atributos de certificado que contêm matrizes estão limitados a cinco itens. Os itens adicionais são ignorados.

Tamanho da segmento  
Todos os valores de string são limitados a 1024 caracteres. Se um atributo de certificado tiver uma sequência com mais de 1024 caracteres, a variável de política não será substituída pelo valor do atributo do certificado. Isso deixará o `${policy-variable}` no documento de política. Isso pode causar falha de autorização.

Caracteres especiais  
Qualquer caractere especial, como `,`, `"`, `\`, `+`, `=`, `<`, `>` e `;`, deve ser prefixado com uma barra invertida (`\`) quando usado em uma variável de política. Por exemplo, `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` torna-se `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Exemplo de políticas usando variáveis de política de certificado
<a name="example-attributes-policy"></a>

O documento de política a seguir permite conexões com o ID do cliente que corresponde ao número de série do certificado e a publicação no tópico que corresponde ao padrão: `${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**Importante**  
Se seu certificado X.509 não incluir um atributo de certificado específico, mas a variável de política de certificado correspondente for usada em seu documento de política, a avaliação da política poderá levar a um comportamento inesperado. Isso ocorre porque a variável de política ausente não é avaliada na declaração de política. Por exemplo, se você anexar o seguinte documento de política a um certificado que não contém o atributo `iot:Certificate.Subject.Organization`, as variáveis da política do certificado `iot:Certificate.Subject.Organization` não serão preenchidas durante a avaliação da 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}/*"
			]
		}
	]
}
```

Você também pode usar o [operador de condição Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) para garantir que as variáveis de política de certificado usadas em uma política sejam preenchidas durante a avaliação da política. O documento de política a seguir permite `iot:Connect` com certificados somente quando os atributos Número de Série do Certificado e Nome Comum do Assunto do Certificado estão presentes.

Todas as variáveis da política de certificado têm valores String, portanto, há suporte para todos os [Operadores de condição string](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"
				}
			}
		}
	]
}
```