Variáveis de política de objetos
As variáveis de política de objetos permitem escrever políticas do AWS IoT Core que concedam ou neguem permissões com base em propriedades de objetos, como nomes de objetos, tipos de objetos e valores de atributo de objetos. É possível usar variáveis de política de objetos a fim de aplicar a mesma política para controlar muitos dispositivos do AWS IoT Core. Para obter mais informações sobre o provisionamento de dispositivos, consulte Provisionamento de dispositivos.
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ê acessa o nome da coisa pelo ID do cliente na mensagem Connect do MQTT enviada quando uma coisa se conecta ao 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 API AttachThingPrincipal para anexar certificados ou entidades principais (identidades do Amazon Cognito autenticadas) a um objeto.
-
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
clientIdna 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.ThingNameIsso resolve o nome do objeto no registro do AWS IoT Core para a qual a política está sendo avaliada. O AWS IoT Core usa o certificado que o dispositivo apresenta ao fazer a autenticação a fim de determinar qual objeto deve ser usada para verificar a conexão. Essa variável de política está disponível somente quando um dispositivo se conecta pelo MQTT ou MQTT pelo protocolo WebSocket.
-
iot:Connection.Thing.ThingTypeNameIsso resolve o tipo de objeto associado ao objeto para a qual a política está sendo avaliada. O ID do cliente da conexão MQTT/WebSocket deve ser o mesmo que o nome do objeto. Essa variável de política está disponível somente na conexão pelo MQTT ou MQTT pelo protocolo WebSocket.
-
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[em queattributeName]attributeNameé o nome do atributo. O ID do cliente da conexão MQTT/WebSocket deve ser o mesmo que o nome do objeto. Essa variável de política está disponível somente na conexão pelo MQTT ou MQTT pelo protocolo WebSocket. -
iot:Connection.Thing.IsAttachediot:Connection.Thing.IsAttached: ["true"]determina que somente os dispositivos registrados no AWS IoT conectados à entidade principal possam acessar as permissões dentro da política. Você pode usar essa variável para impedir que um dispositivo se conecte ao AWS IoT Core se ele apresentar um certificado que não esteja anexado a um objeto de IoT no registro do AWS IoT Core. Essa variável tem valorestrueoufalseque indicam que o objeto conectado está anexado ao certificado ou à identidade do Amazon Cognito no registro usando a API AttachThingPrincipal. 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 Associar uma coisa da AWS IoT a uma conexão de cliente do MQTT.
Esse exemplo de política permite que as coisas se conectem ao AWS IoT Core caso o ID do cliente termine com o valor do atributo envType. Somente coisas com um padrão de ID de cliente correspondente poderão se conectar.