Variables de política de AWS IoT Core básicas - AWS IoT Core

Variables de política de AWS IoT Core básicas

AWS IoT Core define las siguientes variables de política básicas:

  • aws:SourceIp: es la dirección IP del cliente conectado con el agente de mensajes de AWS IoT Core.

  • iot:ClientId: es el ID de cliente que se utiliza para conectarse con el agente de mensajes de AWS IoT Core.

  • iot:DomainName: es el nombre del host del cliente conectado a AWS IoT Core.

Ejemplos de ClientId y variables de política SourceIp

La siguiente política de AWS IoT Core muestra una política que utiliza variables de política. aws:SourceIp se puede usar en el elemento Condición de su política para permitir que las entidades principales realicen solicitudes de API solo dentro de un rango de direcciones específico. Para ver ejemplos, consulte Autorización de los usuarios y los servicios en la nube para usar Jobs 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" } } } ] }

En estos ejemplos, ${iot:ClientId} se sustituirá por el ID del cliente conectado al agente de mensajes de AWS IoT Core 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. Como protección contra estas deficiencias de seguridad, utilice la acción de política iot:Connect para controlar los ID de cliente que pueden conectarse. Por ejemplo, esta política permite conectarse únicamente a los clientes cuyo ID de cliente sea clientid1:

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

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.

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" } } } }

La siguiente política impide que los dispositivos se conecten al dominio 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 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. Para obtener más información sobre las configuraciones de dominios, consulte What is a domain configuration?.