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 CreateJob
APIo.
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.
Ação de política | APIoperação | Tipos de recursos | Descrição |
---|---|---|---|
iot:AssociateTargetsWithJob |
AssociateTargetsWithJob |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Concede permissão para atribuir uma tag a um recurso específico. |
iot:UntagResource |
UntagResource |
|
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:SourceIp
global.
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:ViaAWSService
global 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 DescribeJobExecution
APIusando 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
-
é o identificador exclusivo do trabalho que é direcionado usando API o.job-id
aws iot-jobs-data describe-job-execution \ --endpoint-url "https://
account-id
.jobs.iot.region
.amazonaws.com" \ --job-idjobID
--thing-namething-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:SourceIp
global.
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 CreateJob
ou CreateJobTemplate
com 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/*" ] } }