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á.
Para autorizar seus usuários e serviços em nuvem, você deve usar políticas do IAM no ambiente de gerenciamento e no plano de dados. As políticas devem ser usadas com o protocolo HTTPS e devem usar a autenticação AWS Signature Version 4 (porta 443) para autenticar os usuários.
nota
As políticas AWS IoT Core não devem ser usadas no ambiente de gerenciamento. Somente as políticas do IAM 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 trabalhos de AWS IoT.
As políticas do IAM são documentos JSON que contêm declarações de política. 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 de elementos de política JSON do IAM no Guia do usuário do IAM.
Atenção
Recomendamos que você não use permissões curinga, como "Action":
["iot:*"]
, em suas políticas AWS IoT Core ou políticas do IAM. Usar permissões curinga não é uma prática recomendada de segurança. Para obter mais informações, consulte Política de AWS IoT excessivamente permissiva.
Políticas do IAM no ambiente de gerenciamento
No ambiente de gerenciamento, as políticas do IAM usam o prefixo iot:
com a ação para autorizar a operação correspondente da API de trabalhos. Por exemplo, a ação de política iot:CreateJob
concede ao usuário permissão para usar a API CreateJob
.
A tabela a seguir mostra uma lista de ações da política do IAM e permissões para utilizar as ações da API. Para obter informações sobre tipos de recursos, consulte Tipos de recursos definidos por AWS IoT. Para obter mais informações sobre essas ações de AWS IoT, consulte Ações definidas por AWS IoT.
Ação de política | Operação de API | 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 política do IAM que concede ao usuário permissão para realizar as seguintes ações para suo objeto ou grupo de objetos de IoT.
No exemplo, substitua:
-
region
pela sua Região da AWS, comous-east-1
. -
account-id
por seu número de Conta da AWS, como57EXAMPLE833
. -
thing-group-name
pelo nome do seu grupo de objetos de IoT para o qual você está segmentando trabalhos, comoFirmwareUpdateGroup
. -
thing-name
pelo nome de suo objeto de IoT para a qual você está segmentando trabalhos, comoMyIoTThing
.
{
"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 as entidades principais façam chamadas de API para o endpoint do seu ambiente de gerenciamento a partir de endereços IP específicos. Para especificar os endereços IP que podem ser permitidos, no elemento Condição da sua política do IAM, use a chave de condição global aws:SourceIp
.
O uso dessa chave de condição também pode impedir que outro AWS service (Serviço da AWS) faça essas chamadas de API em seu nome, como AWS CloudFormation. Para permitir o acesso a esses serviços, use a chave de condição global aws:ViaAWSService
com a chave aws:SourceIP. 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 pode fazer chamadas de API para o endpoint do ambiente de gerenciamento. A chave aws:ViaAWSService
está definida como true
, o que permite que outros serviços façam chamadas de API 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"} } ], }
Políticas do IAM no plano de dados
As políticas do IAM no plano de dados usam o prefixo iotjobsdata:
para autorizar trabalhos e operações de API que os usuários podem realizar. No plano de dados, você pode conceder permissão ao usuário para usar a API DescribeJobExecution
usando a ação de política iotjobsdata:DescribeJobExecution
.
Atenção
Não é recomendável usar políticas do IAM no plano de dados ao segmentar trabalhos de AWS IoT para seus dispositivos. Recomendamos que você use políticas do IAM no ambiente de gerenciamento 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 Políticas AWS IoT Core para o protocolo HTTPS.
As operações de API que devem ser autorizadas geralmente são executadas digitando comandos da CLI. Veja a seguir um exemplo de um usuário realizando uma operação DescribeJobExecution
.
No exemplo, substitua:
-
region
pela sua Região da AWS, comous-east-1
. -
account-id
por seu número de Conta da AWS, como57EXAMPLE833
. -
thing-name
pelo nome de suo objeto de IoT para a qual você está segmentando trabalhos, comomyRegisteredThing
. -
é o identificador exclusivo do trabalho que é direcionado usando a API.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 política do IAM 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 as entidades principais façam chamadas de API 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 política do IAM, use a chave de condição global aws:SourceIp
.
O uso dessa chave de condição também pode impedir que outro AWS service (Serviço da AWS) faça essas chamadas de API em seu nome, 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 pode fazer chamadas de API 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 chamadas de API 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 operação de API no ambiente de gerenciamento e no plano de dados, a ação da política do ambiente de gerenciamento deverá usar o prefixo iot:
e a ação da política do plano de dados deverá usar o prefixo iotjobsdata:
.
Por exemplo, a API DescribeJobExecution
pode ser usada tanto no ambiente de gerenciamento quanto no plano de dados. No ambiente de gerenciamento, a API DescribeJobExecution é usada para descrever a execução de um trabalho. No plano de dados, a API DescribeJobExecution é usada para obter detalhes da execução de um trabalho.
A política do IAM a seguir autoriza o usuário a usar a API DescribeJobExecution
no ambiente de gerenciamento e no plano de dados.
No exemplo, substitua:
-
region
pela sua Região da AWS, comous-east-1
. -
account-id
por seu número de Conta da AWS, como57EXAMPLE833
. -
thing-name
pelo nome de suo objeto de IoT para a qual você está segmentando trabalhos, comoMyIoTThing
.
{ "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 a AWS CLI, sua política do IAM deve conceder ao usuário permissões para marcá-los. Para conceder permissões, sua política do IAM; deve usar a ação iot:TagResource
.
nota
Se sua política do IAM não incluir a ação iot:TagResource
, qualquer CreateJob
ou CreateJobTemplate
com uma tag retornará um erro AccessDeniedException
.
Quando você quiser marcar seus trabalhos ou modelos de trabalho criados usando o AWS Management Console ou a AWS CLI, sua política do IAM deve conceder permissão para marcá-los. Para conceder permissões, sua política do IAM; deve usar a ação iot:TagResource
.
Para obter informações gerais sobre a marcação de recursos, consulte Marcando seus recursos AWS IoT.
Consulte os seguintes exemplos de políticas do IAM 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
pela sua Região da AWS, comous-east-1
. -
account-id
por seu número de Conta da AWS, como57EXAMPLE833
. -
thing-name
pelo nome de suo objeto de IoT para a qual você está segmentando trabalhos, comoMyIoTThing
.
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 exemplo, você deve usar a seguinte política do IAM:
{
"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/*"
]
}
}