Como autorizar usuários e serviços em nuvem a usar trabalhos de AWS IoT - AWS IoT Core

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como autorizar usuários e serviços em nuvem a usar trabalhos de AWS IoT

Para autorizar seus usuários e serviços em nuvem, você deve usar IAM políticas no plano de controle e no plano de dados. As políticas devem ser usadas com o HTTPS protocolo e devem usar a autenticação AWS Signature Version 4 (porta 443) para autenticar os usuários.

nota

AWS IoT Core as políticas não devem ser usadas no plano de controle. Somente IAM políticas são usadas para autorizar usuários ou serviços em nuvem. Para obter mais informações sobre a política necessária a ser usada, consulte Tipo de política necessária para AWS IoT empregos.

IAMpolíticas são JSON documentos que contêm declarações de políticas. As declarações de política usam os elementos Efeito, Ação e Recurso para especificar recursos, ações permitidas ou negadas, além das condições sob as quais as ações são permitidas ou negadas. Para obter mais informações, consulte Referência IAM JSON de elementos de política no Guia IAM do usuário.

Atenção

Recomendamos que você não use permissões curinga, como "Action": ["iot:*"] em suas IAM políticas ou AWS IoT Core políticas. Usar permissões curinga não é uma prática recomendada de segurança. Para obter mais informações, consulte a AWS IoT política excessivamente permissiva.

IAMpolíticas no plano de controle

No plano de controle, IAM as políticas usam o iot: prefixo com a ação para autorizar a operação de trabalhos API correspondente. Por exemplo, a ação iot:CreateJob política concede ao usuário permissão para usar CreateJobAPIo.

A tabela a seguir mostra uma lista de ações de IAM políticas e permissões para usar as API ações. Para obter informações sobre tipos de recursos, consulte Tipos de recursos definidos por AWS IoT. Para obter mais informações sobre AWS IoT ações, consulte Ações definidas por AWS IoT.

IAMações políticas no plano de controle
Ação de política APIoperação Tipos de recursos Descrição
iot:AssociateTargetsWithJob AssociateTargetsWithJob
  • trabalho

  • objeto

  • thinggroup

Representa a permissão para associar um grupo a um trabalho contínuo. A permissão iot:AssociateTargetsWithJob é verificada sempre que é feita uma solicitação para associar destinos.
iot:CancelJob CancelJob trabalho Representa a permissão para cancelar um trabalho. A permissão iot:CancelJob é verificada sempre que é feita uma solicitação para cancelar um trabalho.
iot:CancelJobExecution CancelJobExecution
  • trabalho

  • objeto

Representa a permissão para cancelar uma execução de trabalho. A permissão iot: CancelJobExecution é verificada sempre que é feita uma solicitação para cancelar uma execução de trabalho.
iot:CreateJob CreateJob
  • trabalho

  • objeto

  • thinggroup

  • jobtemplate

  • pacote

Representa a permissão para criar um trabalho. A permissão iot: CreateJob é verificada sempre que é feita uma solicitação para criar um trabalho.
iot:CreateJobTemplate CreateJobTemplate
  • trabalho

  • jobtemplate

  • pacote

Representa a permissão para criar um modelo de trabalho. A permissão iot: CreateJobTemplate é verificada sempre que é feita uma solicitação para criar um modelo de trabalho.
iot:DeleteJob DeleteJob trabalho Representa a permissão para excluir um trabalho. A permissão iot: DeleteJob é verificada sempre que é feita uma solicitação para excluir um trabalho.
iot:DeleteJobTemplate DeleteJobTemplate jobtemplate Representa a permissão para excluir um modelo de trabalho. A permissão iot: CreateJobTemplate é verificada sempre que é feita uma solicitação para excluir um modelo de trabalho.
iot:DeleteJobExecution DeleteJobTemplate
  • trabalho

  • objeto

Representa a permissão para excluir uma execução de trabalho. A permissão iot: DeleteJobExecution é verificada sempre que é feita uma solicitação para excluir uma execução de trabalho.
iot:DescribeJob DescribeJob trabalho Representa a permissão para descrever um trabalho. A permissão iot: DescribeJob é verificada sempre que é feita uma solicitação para descrever um trabalho.
iot:DescribeJobExecution DescribeJobExecution
  • trabalho

  • objeto

Representa a permissão para descrever uma execução de trabalho. A permissão iot: DescribeJobExecution é verificada sempre que é feita uma solicitação para descrever uma execução de trabalho.
iot:DescribeJobTemplate DescribeJobTemplate jobtemplate Representa a permissão para descrever um modelo de trabalho. A permissão iot: DescribeJobTemplate é verificada sempre que é feita uma solicitação para descrever um modelo de trabalho.
iot:DescribeManagedJobTemplate DescribeManagedJobTemplate jobtemplate Representa a permissão para descrever um modelo de trabalho gerenciado. A permissão iot: DescribeManagedJobTemplate é verificada sempre que é feita uma solicitação para descrever um modelo de trabalho gerenciado.
iot:GetJobDocument GetJobDocument trabalho Representa a permissão para obter o documento de trabalho de um trabalho. A permissão iot:GetJobDocument é verificada sempre que é feita uma solicitação para obter um documento de trabalho.
iot:ListJobExecutionsForJob ListJobExecutionsForJob trabalho Representa a permissão para listar as execuções de trabalho para um trabalho. A permissão iot:ListJobExecutionsForJob é verificada sempre que é feita uma solicitação para listar as execuções de trabalho para um trabalho.
iot:ListJobExecutionsForThing ListJobExecutionsForThing objeto Representa a permissão para listar as execuções de trabalho para um trabalho. A permissão iot:ListJobExecutionsForThing é verificada sempre que é feita uma solicitação para listar as execuções de trabalho para um objeto.
iot:ListJobs ListJobs nenhuma Representa a permissão para listar os trabalhos. A permissão iot:ListJobs é verificada sempre que é feita uma solicitação para listar os trabalhos.
iot:ListJobTemplates ListJobTemplates nenhuma Representa a permissão para listar os modelos de trabalho. A permissão iot:ListJobTemplates é verificada sempre que é feita uma solicitação para listar os modelos de trabalho.
iot:ListManagedJobTemplates ListManagedJobTemplates nenhuma Representa a permissão para listar os modelos de trabalho gerenciados. A permissão iot:ListManagedJobTemplates é verificada sempre que é feita uma solicitação para listar os modelos de trabalho gerenciados.
iot:UpdateJob UpdateJob trabalho Representa a permissão para atualizar um trabalho. A permissão iot:UpdateJob é verificada sempre que é feita uma solicitação para atualizar um trabalho.
iot:TagResource TagResource
  • trabalho

  • jobtemplate

  • objeto

Concede permissão para atribuir uma tag a um recurso específico.
iot:UntagResource UntagResource
  • trabalho

  • jobtemplate

  • objeto

Concede permissão para remover uma tag de um recurso específico.

O exemplo a seguir mostra uma IAM política que permite ao usuário realizar as seguintes ações para suas coisas e grupos de coisas de IoT.

No exemplo, substitua:

  • region com o seu Região da AWS, comous-east-1.

  • account-id com seu Conta da AWS número, como57EXAMPLE833.

  • thing-group-name com o nome do seu grupo de coisas de IoT para o qual você está segmentando trabalhos, como. FirmwareUpdateGroup

  • thing-name com o nome da sua coisa de IoT para a qual você está segmentando trabalhos, como. MyIoTThing

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

Você pode impedir que os principais façam API chamadas para o endpoint do plano de controle a partir de endereços IP específicos. Para especificar os endereços IP que podem ser permitidos, no elemento Condição da sua IAM política, use a chave de condição aws:SourceIpglobal.

O uso dessa chave de condição também pode impedir que outras AWS service (Serviço da AWS) pessoas façam essas API chamadas em seu nome, tal como AWS CloudFormation. Para permitir o acesso a esses serviços, use a chave de condição aws:ViaAWSServiceglobal com a SourceIp chave aws:. Isso garante que a restrição de acesso ao endereço IP de origem se aplique somente a solicitações feitas diretamente por uma entidade principal. Para obter mais informações, consulte AWS: Nega acesso AWS com base no IP de origem.

O exemplo a seguir mostra como permitir somente um endereço IP específico que possa fazer API chamadas para o endpoint do plano de controle. A aws:ViaAWSService chave está definida comotrue, o que permite que outros serviços façam API chamadas em seu nome.

{ "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 no plano de dados

IAMas políticas no plano de dados usam o iotjobsdata: prefixo para autorizar API operações de trabalhos que os usuários podem realizar. No plano de dados, você pode conceder permissão ao usuário para usar o DescribeJobExecutionAPIusando a ação iotjobsdata:DescribeJobExecution de política.

Atenção

Não é recomendável usar IAM políticas no plano de dados ao segmentar AWS IoT trabalhos para seus dispositivos. Recomendamos que você use IAM políticas no plano de controle para que os usuários criem e gerenciem trabalhos. No plano de dados, para autorizar dispositivos a recuperar execuções de trabalhos e atualizar o status de execução, use AWS IoT Core políticas para HTTPS protocolo.

As API operações que devem ser autorizadas geralmente são executadas por você digitando CLI comandos. Veja a seguir um exemplo de um usuário realizando uma operação DescribeJobExecution.

No exemplo, substitua:

  • region com o seu Região da AWS, comous-east-1.

  • account-id com seu Conta da AWS número, como57EXAMPLE833.

  • thing-name com o nome da sua coisa de IoT para a qual você está segmentando trabalhos, como. myRegisteredThing

  • job-idé o identificador exclusivo do trabalho que é direcionado usando API o.

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

Veja a seguir um exemplo de IAM política que autoriza essa ação:

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

Você pode impedir que os principais façam API chamadas para o endpoint do seu plano de dados a partir de endereços IP específicos. Para especificar os endereços IP que podem ser permitidos, no elemento Condição da sua IAM política, use a chave de condição aws:SourceIpglobal.

O uso dessa chave de condição também pode impedir que outras AWS service (Serviço da AWS) pessoas façam essas API chamadas em seu nome, tal como AWS CloudFormation. Para permitir o acesso a esses serviços, use a chave de condição global aws:ViaAWSService com a chave de condição aws:SourceIp. Isso garante que a restrição de acesso ao endereço IP se aplique somente a solicitações feitas diretamente pela entidade principal. Para obter mais informações, consulte AWS: Nega acesso AWS com base no IP de origem.

O exemplo a seguir mostra como permitir somente um endereço IP específico que possa fazer API chamadas para o endpoint do plano de dados.

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

O exemplo a seguir mostra como impedir que endereços IP ou intervalos de endereços específicos façam API chamadas para o endpoint do plano de dados.

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

Se você executar uma API operação no plano de controle e no plano de dados, a ação da política do plano de controle deverá usar o iot: prefixo e a ação da política do plano de dados deverá usar o iotjobsdata: prefixo.

Por exemplo, o DescribeJobExecution API pode ser usado tanto no plano de controle quanto no plano de dados. No plano de controle, o DescribeJobExecutionAPIé usado para descrever a execução de um trabalho. No plano de dados, o DescribeJobExecutionAPIé usado para obter detalhes da execução de um trabalho.

A IAM política a seguir autoriza o usuário a usar o DescribeJobExecution API no plano de controle e no plano de dados.

No exemplo, substitua:

  • region com o seu Região da AWS, comous-east-1.

  • account-id com seu Conta da AWS número, como57EXAMPLE833.

  • thing-name com o nome da sua coisa de IoT para a qual você está segmentando trabalhos, como. MyIoTThing

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

Autorize a marcação de recursos de IoT

Para um melhor controle sobre trabalhos e modelos de trabalho que você pode criar, modificar ou usar, você pode anexar tags aos trabalhos ou modelos de trabalho. As tags também ajudam você a discernir a propriedade, atribuir e alocar custos, colocando-os em grupos de cobrança e anexando tags a eles.

Quando um usuário quiser marcar seus trabalhos ou modelos de trabalho criados usando o AWS Management Console ou o AWS CLI, sua IAM política deve conceder ao usuário permissões para marcá-los. Para conceder permissões, sua IAM política deve usar a iot:TagResource ação.

nota

Se sua IAM política não incluir a iot:TagResource ação, qualquer uma CreateJobou CreateJobTemplatecom uma tag retornará um AccessDeniedException erro.

Quando você quiser marcar seus trabalhos ou modelos de trabalho que você criou usando o AWS Management Console ou o AWS CLI, sua IAM política deve conceder permissão para marcá-los. Para conceder permissões, sua IAM política deve usar a iot:TagResource ação.

Para obter informações gerais sobre a marcação de recursos, consulte Marcando seus recursos AWS IoT.

Consulte os seguintes exemplos de IAM políticas que concedem permissões de marcação:

Exemplo 1

Um usuário que executa o comando a seguir para criar um trabalho e marcá-lo em um ambiente específico.

Neste exemplo, substitua:

  • region com o seu Região da AWS, comous-east-1.

  • account-id com seu Conta da AWS número, como57EXAMPLE833.

  • thing-name com o nome da sua coisa de IoT para a qual você está segmentando trabalhos, como. MyIoTThing

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

Neste exemplo, você deve usar a seguinte 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/*" ] } }