Variáveis básicas de política do AWS IoT Core - AWS IoT Core

Variáveis básicas de política do AWS IoT Core

AWS IoT CoreO define as seguintes variáveis básicas de política:

  • aws:SourceIp: o endereço IP do cliente conectado ao agente de mensagens do AWS IoT Core.

  • iot:ClientId: o ID do cliente usado para se conectar ao agente de mensagens do AWS IoT Core.

  • iot:DomainName: o nome e domínio do cliente conectado ao AWS IoT Core.

Exemplos de variáveis de política ClientId e SourceIp

A política AWS IoT Core a seguir mostra uma política que usa variáveis de política. O aws:SourceIp pode ser usado no elemento Condição da sua política para permitir que as entidades principais façam solicitações de API somente em um intervalo de endereços específico. Para ver exemplos, consulte Como autorizar usuários e serviços em nuvem a usar trabalhos de AWS IoT.

JSON
{ "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 mensagens do AWS IoT Core 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 proteger contra essas falhas de segurança, use a ação da política iot:Connect para controlar quais IDs de cliente podem se conectar. Por exemplo, essa política permite que apenas clientes cujo ID é clientid1 se conectem:

JSON
{ "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

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.

JSON
{ "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.

JSON
{ "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. Para obter mais informações sobre configurações de domínio, consulte O que é uma configuração de domínio?.