Autorización de los usuarios y los servicios en la nube para usar Jobs de AWS IoT - AWS IoT Core

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.

Autorización de los usuarios y los servicios en la nube para usar Jobs de AWS IoT

Para autorizar a los usuarios y servicios en la nube, debe utilizar las políticas de IAM tanto en el plano de control como en el plano de datos. Las políticas deben usarse con el protocolo HTTPS y deben usar la autenticación de AWS Signature Version 4 (puerto 443) para autenticar a los usuarios.

nota

AWS IoT Core las políticas no deben usarse en el plano de control. Para autorizar a los usuarios o los servicios en la nube, solo se utilizan las políticas de IAM. Para obtener más información acerca de usar el tipo de política obligatoria, consulte Tipo de política obligatorio para AWS IoT Jobs.

Las políticas de IAM son documentos JSON que contienen declaraciones de políticas. Las declaraciones de políticas utilizan los elementos Efecto, Acción y Recurso para especificar los recursos, las acciones permitidas o denegadas y las condiciones en las que se permiten o deniegan las acciones. Para obtener más información, consulte Referencia de los elementos de las políticas de JSON de IAM en la guía del usuario de IAM.

aviso

Te recomendamos que no utilices permisos comodín, como "Action": ["iot:*"] en tus políticas o AWS IoT Core políticas de IAM. El uso de permisos comodín no es una práctica recomendada de seguridad. Para obtener más información, consulte Políticas de AWS IoT demasiado permisivas.

Políticas de IAM en el plano de control

En el plano de control, las políticas de IAM utilizan el prefijo iot: con la acción para autorizar la operación de la API de trabajos correspondiente. Por ejemplo, la acción de política iot:CreateJob concede al usuario permiso para usar la API CreateJob.

La siguiente tabla muestra una lista de las acciones y permisos de las políticas de IAM para usar las acciones de la API. Para obtener información sobre los tipos de recursos, consulte Tipos de recursos definidos por. AWS IoT Para obtener más información sobre AWS IoT las acciones, consulte Acciones definidas por AWS IoT.

Acciones de la política de IAM en el plano de control
Acción de política Operación de la API Tipos de recurso Descripción
iot:AssociateTargetsWithJob AssociateTargetsWithJob
  • job

  • thing

  • thinggroup

Representa el permiso para asociar un grupo a un trabajo continuo. El permiso iot:AssociateTargetsWithJob se comprueba cada vez que se presenta una solicitud para asociar destinos.
iot:CancelJob CancelJob job Representa el permiso para cancelar un trabajo. El permiso iot:CancelJob se comprueba cada vez que se presenta una solicitud para cancelar un trabajo.
iot:CancelJobExecution CancelJobExecution
  • job

  • thing

Representa el permiso para cancelar la ejecución de un trabajo. El permiso iot: CancelJobExecution se comprueba cada vez que se presenta una solicitud para cancelar la ejecución de un trabajo.
iot:CreateJob CreateJob
  • job

  • thing

  • thinggroup

  • jobtemplate

  • paquete

Representa el permiso para crear un trabajo. El permiso iot: CreateJob se comprueba cada vez que se presenta una solicitud para crear un trabajo.
iot:CreateJobTemplate CreateJobTemplate
  • job

  • jobtemplate

  • paquete

Representa el permiso para crear una plantilla de trabajo. El permiso iot: CreateJobTemplate se comprueba cada vez que se presenta una solicitud para crear una plantilla de trabajo.
iot:DeleteJob DeleteJob job Representa el permiso para eliminar un trabajo. El permiso iot: DeleteJob se comprueba cada vez que se presenta una solicitud para eliminar un trabajo.
iot:DeleteJobTemplate DeleteJobTemplate jobtemplate Representa el permiso para eliminar una plantilla de trabajo. El permiso iot: CreateJobTemplate se comprueba cada vez que se presenta una solicitud para eliminar una plantilla de trabajo.
iot:DeleteJobExecution DeleteJobTemplate
  • job

  • thing

Representa el permiso para eliminar una ejecución de trabajo. El permiso iot: DeleteJobExecution se comprueba cada vez que se presenta una solicitud para eliminar la ejecución de un trabajo.
iot:DescribeJob DescribeJob job Representa el permiso para describir un trabajo. El permiso iot: DescribeJob se comprueba cada vez que se presenta una solicitud para describir un trabajo.
iot:DescribeJobExecution DescribeJobExecution
  • job

  • thing

Representa el permiso para describir una ejecución de trabajo. El permiso iot: DescribeJobExecution se comprueba cada vez que se presenta una solicitud para describir la ejecución de un trabajo.
iot:DescribeJobTemplate DescribeJobTemplate jobtemplate Representa el permiso para describir una plantilla de trabajo. El permiso iot: DescribeJobTemplate se comprueba cada vez que se presenta una solicitud para describir una plantilla de trabajo.
iot:DescribeManagedJobTemplate DescribeManagedJobTemplate jobtemplate Representa el permiso para describir una plantilla de trabajo administrada. El permiso iot: DescribeManagedJobTemplate se comprueba cada vez que se presenta una solicitud para describir una plantilla de trabajo administrada.
iot:GetJobDocument GetJobDocument job Representa el permiso para obtener el documento de trabajo de un trabajo. El permiso iot:GetJobDocument se comprueba cada vez que se presenta una solicitud para obtener un documento de trabajo.
iot:ListJobExecutionsForJob ListJobExecutionsForJob job Representa el permiso para enumerar las ejecuciones de trabajo de un trabajo. El permiso iot:ListJobExecutionsForJob se comprueba cada vez que se presenta una solicitud para enumerar las ejecuciones de trabajo de un trabajo.
iot:ListJobExecutionsForThing ListJobExecutionsForThing thing Representa el permiso para enumerar las ejecuciones de trabajo de un trabajo. El permiso iot:ListJobExecutionsForThing se comprueba cada vez que se presenta una solicitud para enumerar las ejecuciones de trabajo de un objeto.
iot:ListJobs ListJobs none Representa el permiso para enumerar los trabajos. El permiso iot:ListJobs se comprueba cada vez que se presenta una solicitud para enumerar los trabajos.
iot:ListJobTemplates ListJobTemplates none Representa el permiso para enumerar las plantillas de trabajo. El permiso iot:ListJobTemplates se comprueba cada vez que se presenta una solicitud para enumerar las plantillas de trabajo.
iot:ListManagedJobTemplates ListManagedJobTemplates none Representa el permiso para enumerar las plantillas de trabajo administradas. El permiso iot:ListManagedJobTemplates se comprueba cada vez que se presenta una solicitud para enumerar las plantillas de trabajo administradas.
iot:UpdateJob UpdateJob job Representa el permiso para actualizar un trabajo. El permiso iot:UpdateJob se comprueba cada vez que se presenta una solicitud para actualizar un trabajo.
iot:TagResource TagResource
  • job

  • jobtemplate

  • thing

Concede permiso para etiquetar un recurso específico.
iot:UntagResource UntagResource
  • job

  • jobtemplate

  • thing

Concede permiso para quitar las etiquetas del recurso específico.

En el siguiente ejemplo se muestra una política de IAM que concede al usuario permiso para realizar las siguientes acciones para su objeto y grupo de objetos de IoT.

En el ejemplo, sustituya:

  • regioncon tus Región de AWS, comous-east-1.

  • account-idcon tu Cuenta de AWS número, por ejemplo57EXAMPLE833.

  • thing-group-namecon el nombre del grupo de cosas de IoT al que apunta los trabajos, por ejemploFirmwareUpdateGroup.

  • thing-namecon el nombre de tu negocio de IoT al que te diriges a los trabajos, por ejemploMyIoTThing.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:CreateJobTemplate", "iot:CreateJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thinggroup/thing-group-name" }, { "Action": [ "iot:DescribeJob", "iot:CancelJob", "iot:DeleteJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:job/*" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

Puede impedir que las entidades principales realicen llamadas a la API a su punto de conexión del plano de control desde direcciones IP específicas. Para especificar las direcciones IP que se pueden permitir, en el elemento Condición de la política de IAM, utilice la clave de condición global aws:SourceIp.

El uso de esta clave de condición también puede impedir que otras Servicio de AWS personas realicen estas llamadas a la API en tu nombre, por ejemplo AWS CloudFormation. Para permitir el acceso a estos servicios, utilice la clave de condición aws:ViaAWSServiceglobal junto con la SourceIp clave aws:. Esto asegura que la restricción de acceso a la dirección IP de origen se aplica únicamente a las solicitudes realizadas directamente por una entidad principal. Para obtener más información, consulte AWS: Denega el acceso a en AWS función de la IP de origen.

El siguiente ejemplo muestra cómo permitir que solo una dirección IP específica pueda realizar llamadas a la API al punto de conexión del plano de control. La clave aws:ViaAWSService está configurada entrue, lo que permite a otros servicios realizar llamadas a la API en su nombre.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "true"} } ], }

Políticas de IAM en el plano de datos

Las políticas de IAM en el plano de datos utilizan el prefijo iotjobsdata: para autorizar las operaciones de la API de trabajos que los usuarios pueden realizar. En el plano de los datos, se puede conceder a un usuario permiso para usar la API DescribeJobExecution mediante la acción de política iotjobsdata:DescribeJobExecution.

aviso

No se recomienda utilizar políticas de IAM en el plano de datos cuando se dirija a Jobs de AWS IoT para sus dispositivos. Recomendamos utilizar las políticas de IAM en el plano de control para que los usuarios creen y gestionen los trabajos. En el plano de datos, para autorizar a los dispositivos a recuperar las ejecuciones de trabajos y actualizar el estado de ejecución, utilice AWS IoT Core políticas para el protocolo HTTPS.

Por lo general, las operaciones de la API que se deben autorizar se realizan escribiendo los comandos CLI. A continuación se muestra un ejemplo de un usuario realizando una operación DescribeJobExecution.

En el ejemplo, sustituya:

  • regioncon su Región de AWS, comous-east-1.

  • account-idcon tu Cuenta de AWS número, por ejemplo57EXAMPLE833.

  • thing-namecon el nombre de tu negocio de IoT al que te diriges a los trabajos, por ejemplomyRegisteredThing.

  • job-id es el identificador único del trabajo al que se dirige la API.

aws iot-jobs-data describe-job-execution \ --endpoint-url "https://account-id.jobs.iot.region.amazonaws.com" \ --job-id jobID --thing-name thing-name

A continuación se muestra una política de IAM de ejemplo que autoriza esta acción:

JSON
{ "Version": "2012-10-17", "Statement": { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name", } }

Puede impedir que las entidades principales realicen llamadas a la API a su punto de conexión del plano de datos desde direcciones IP específicas. Para especificar las direcciones IP que se pueden permitir, en el elemento Condición de la política de IAM, utilice la clave de condición global aws:SourceIp.

El uso de esta clave de condición también puede impedir que otras Servicio de AWS personas realicen estas llamadas a la API en tu nombre, por ejemplo AWS CloudFormation. Para permitir el acceso a estos servicios, utilice la clave de condición global aws:ViaAWSService con la clave de condición aws:SourceIp. Esto asegura que la restricción de acceso a la dirección IP se aplica únicamente a las solicitudes realizadas directamente por la entidad principal. Para obtener más información, consulte AWS: Denega el acceso en AWS función de la IP de origen.

El siguiente ejemplo muestra cómo permitir que solo una dirección IP específica pueda realizar llamadas a la API al punto de conexión del plano de datos.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iotjobsdata:*"], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "false"} } ], }

El siguiente ejemplo muestra cómo restringir direcciones IP o rangos de direcciones específicos para que no puedan realizar llamadas a la API al punto de conexión del plano de datos.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["iotjobsdata:*"], "Condition": { "IpAddress": { "aws:SourceIp": [ "123.45.167.89", "192.0.2.0/24", "203.0.113.0/24" ] } }, "Resource": ["*"], } ], }

Si realiza una operación de API tanto en el plano de control como en el plano de datos, la acción de política del plano de control debe usar el prefijo iot: y la acción de política del plano de datos debe usar el prefijo iotjobsdata:.

Por ejemplo, la API DescribeJobExecution se puede usar tanto en el plano de control como en el plano de datos. En el plano de control, la DescribeJobExecutionAPI se utiliza para describir la ejecución de un trabajo. En el plano de los datos, la DescribeJobExecutionAPI se utiliza para obtener detalles de la ejecución de un trabajo.

La siguiente política de IAM autoriza a un usuario a utilizar la API DescribeJobExecution tanto en el plano de control como en el plano de datos.

En el ejemplo, sustituya:

  • regioncon tu Región de AWS, comous-east-1.

  • account-idcon tu Cuenta de AWS número, por ejemplo57EXAMPLE833.

  • thing-namecon el nombre de tu negocio de IoT al que te diriges a los trabajos, por ejemploMyIoTThing.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

Autorización del etiquetado de los recursos de IoT

Para controlar mejor los trabajos y las plantillas de trabajo que puede crear, modificar o usar, puede adjuntarles etiquetas. Estas también le ayudan a determinar la propiedad y a asignar y distribuir los costos, ya que las ubican en grupos de facturación y les asocian etiquetas.

Si un usuario quiere etiquetar sus trabajos o las plantillas de trabajo que ha creado con los AWS Management Console o los AWS CLI, tu política de IAM debe conceder al usuario permisos para etiquetarlos. Para conceder permisos, la política de IAM debe utilizar la acción iot:TagResource.

nota

Si la política de IAM no incluye la acción iot:TagResource, cualquier CreateJob o CreateJobTemplate con una etiqueta devolverá un error AccessDeniedException.

Si quieres etiquetar tus trabajos o las plantillas de trabajo que has creado con la AWS Management Console o la AWS CLI, tu política de IAM debe conceder permiso para etiquetarlos. Para conceder permisos, la política de IAM debe utilizar la acción iot:TagResource.

Para obtener información general sobre el etiquetado de recursos, consulte Etiquetar sus recursos AWS IoT.

Consulte los siguientes ejemplos de políticas de IAM que conceden permisos de etiquetado:

Ejemplo 1

Un usuario que ejecuta el siguiente comando para crear un trabajo y etiquetarlo en un entorno específico.

En este ejemplo, sustituya:

  • regioncon las tuyas Región de AWS, comous-east-1.

  • account-idcon tu Cuenta de AWS número, por ejemplo57EXAMPLE833.

  • thing-namecon el nombre de tu negocio de IoT al que te diriges a los trabajos, por ejemploMyIoTThing.

aws iot create-job --job-id test_job --targets "arn:aws:iot:region:account-id:thing/thingOne" --document-source "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

Para este ejemplo, debe utilizar la siguiente política de IAM:

JSON
{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:aws-region:account-id:job/*", "arn:aws:iot:aws-region:account-id:jobtemplate/*" ] } }