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 sus usuarios y servicios en la nube, debe usar IAM políticas tanto en el plano de control como en el plano de datos. Las políticas deben usarse con el HTTPS protocolo y deben usar la autenticación AWS Signature versión 4 (puerto 443) para autenticar a los usuarios.

nota

AWS IoT Core las políticas no deben usarse en el plano de control. Solo se utilizan IAM políticas para autorizar a los usuarios o los servicios en la nube. 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.

IAMlas políticas son JSON documentos 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 la referencia sobre los elementos de IAM JSON política en la guía del IAM usuario.

aviso

Le recomendamos que no utilice permisos comodín, como "Action": ["iot:*"] en sus IAM políticas o AWS IoT Core políticas. El uso de permisos comodín no es una práctica recomendada de seguridad. Para obtener más información, consulta la AWS IoT política excesivamente permisiva.

IAMpolíticas en el plano de control

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

En la siguiente tabla se muestra una lista de acciones de IAM política y permisos para API utilizarlas. 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.

IAMacciones políticas en el plano de control
Acción de política APIoperación 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

  • package

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

  • package

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 Ninguno 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 Ninguno 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.

El siguiente ejemplo muestra una IAM política que permite al usuario realizar las siguientes acciones para su cosa y grupo de cosas de IoT.

En el ejemplo, sustituya:

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

  • account-id con tu Cuenta de AWS número, como57EXAMPLE833.

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

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

{ "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 los directores realicen API llamadas al punto final de su plano de control desde direcciones IP específicas. Para especificar las direcciones IP que se pueden permitir, en el elemento Condición de su IAM política, utilice la clave de condición aws:SourceIpglobal.

El uso de esta clave de condición también puede impedir que otras Servicio de AWS personas realicen estas API llamadas en su 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 API llamadas al punto final del plano de control. La aws:ViaAWSService clave está configurada entrue, lo que permite a otros servicios realizar API llamadas en su nombre.

{ "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"} } ], }

IAMpolíticas en el plano de datos

IAMlas políticas del plano de datos utilizan el iotjobsdata: prefijo para autorizar tareas y API operaciones que los usuarios pueden realizar. En el plano de los datos, puede conceder a un usuario permiso para utilizarlos DescribeJobExecutionAPImediante la acción iotjobsdata:DescribeJobExecution política.

aviso

No se recomienda utilizar IAM políticas en el plano de los datos cuando se segmente AWS IoT Jobs para sus dispositivos. Te recomendamos que utilices IAM políticas en el plano de control para que los usuarios creen y administren 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 de HTTPS protocolo.

Las API operaciones que se deben autorizar se realizan normalmente al escribir CLI comandos. A continuación se muestra un ejemplo de un usuario realizando una operación DescribeJobExecution.

En el ejemplo, sustituya:

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

  • account-id con tu Cuenta de AWS número, como57EXAMPLE833.

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

  • job-ides el identificador único del trabajo al que se dirige medianteAPI.

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 un ejemplo IAM de política que autoriza esta acción:

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

Puede impedir que los directores realicen API llamadas al punto final de su plano de datos desde direcciones IP específicas. Para especificar las direcciones IP que se pueden permitir, en el elemento Condición de su IAM política, utilice la clave de condición aws:SourceIpglobal.

El uso de esta clave de condición también puede impedir que otras Servicio de AWS personas realicen estas API llamadas en su 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 API llamadas al punto final del plano de datos.

{ "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 API llamadas al punto final del plano de datos.

{ "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 API operación 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 iot: prefijo y la acción de política del plano de datos debe usar el iotjobsdata: prefijo.

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

La siguiente IAM política autoriza a un usuario a utilizar el plano DescribeJobExecution API de control y el plano de datos.

En el ejemplo, sustituya:

  • region con el suyo Región de AWS, comous-east-1.

  • account-id con tu Cuenta de AWS número, como57EXAMPLE833.

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

{ "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 IAM política debe conceder al usuario permisos para etiquetarlos. Para conceder permisos, tu IAM política debe utilizar la iot:TagResource acción.

nota

Si tu IAM política no incluye la iot:TagResource acción, cualquier acción CreateJobo que CreateJobTemplatetenga una etiqueta devolverá un AccessDeniedException error.

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

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

Consulte los siguientes ejemplos IAM de políticas 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:

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

  • account-id con tu Cuenta de AWS número, como57EXAMPLE833.

  • thing-name con 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/my-s3-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

Para este ejemplo, debes usar la siguiente IAM política:

{ "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/*" ] } }