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á.
Esta seção discute os principais requisitos de segurança do AWS IoT Device Management Catálogo de pacotes de software.
Autenticação baseada em recurso
O Catálogo de pacotes de software usa autorização baseada em recursos para fornecer segurança adicional ao atualizar o software em sua frota. Isso indica que você deve criar uma política (do IAM) AWS Identity and Access Management que conceda direitos de execução create
, read
, update
, delete
, e list
ações para pacotes e versões de pacotes de software e referenciar os pacotes de software e as versões de pacotes específicos que você deseja implantar na seção Resources
. Você também precisa desses direitos para poder atualizar a sombra nomeada reservada. Você faz referência aos pacotes de software e às versões dos pacotes incluindo o nome do recurso da Amazon (ARN) para cada entidade.
nota
Se você pretende que a política conceda direitos para chamadas de API de versão de pacote (como CreatePackageVersion, UpdatePackageVersion, DeletePackageVersion), será necessário incluir o pacote de software e a versão do pacote de ARNs na política. Se você pretende que a política conceda direitos para chamadas de API de pacotes de software (como CreatePackage, UpdatePackage, e DeletePackage) você deve incluir somente o ARN do pacote de software na política.
Estruture o pacote de software e os ARNs da versão do pacote da seguinte forma:
Pacote de software:
arn:aws:iot:
<region>
:<accountID>
:package/<packageName>
/package
Versão do pacote:
arn:aws:iot:
<region>
:<accountID>
:package/<packageName>
/version/<versionName>
nota
Há outros direitos relacionados que você pode incluir nesta política. Por exemplo, você pode incluir um ARN para o job
, thinggroup
, e jobtemplate
. Para obter mais informações e uma lista completa das opções de política, consulte a opção Proteção de usuários e dispositivos com AWS IoT tarefas.
Por exemplo, se você tiver um pacote de software e uma versão do pacote com o seguinte nome:
AWS IoT objeto:
myThing
Nome do pacote:
samplePackage
Versão
1.0.0
A política pode ser igual a este exemplo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:createPackage",
"iot:createPackageVersion",
"iot:updatePackage",
"iot:updatePackageVersion"
],
"Resource": [
"arn:aws:iot:us-east-1:111122223333:package/samplePackage",
"arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/1.0.0"
]
},
{
"Effect": "Allow",
"Action": [
"iot:GetThingShadow",
"iot:UpdateThingShadow"
],
"Resource": "arn:aws:iot:us-east-1:111122223333:thing/myThing/$package"
}
]
}
Direitos de trabalho AWS IoT para implantar versões de pacotes
Para fins de segurança, é importante conceder direitos para implantar pacotes e versões de pacotes e nomear os pacotes e versões de pacotes específicos que eles podem implantar. Para fazer isso, você cria uma política e um perfil do IAM que concedem permissão para implantar tarefas com versões de pacotes. A política deve especificar as versões do pacote de destino como um recurso.
Política do IAM
A política do IAM concede o direito de criar uma tarefa que inclua o pacote e a versão nomeados na seção Resource
.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:CreateJob",
"iot:CreateJobTemplate"
],
"Resource":[
"arn:aws:iot:*:111122223333
:job/<jobId>
",
"arn:aws:iot:*:111122223333
:thing/<thingName>
/$package",
"arn:aws:iot:*:111122223333
:thinggroup/<thingGroupName>
",
"arn:aws:iot:*:111122223333
:jobtemplate/<jobTemplateName>
",
"arn:aws:iot:*:111122223333
:package/<packageName>
/version/<versionName>
"
]
}
]
}
nota
Se você quiser implantar uma tarefa que desinstale um pacote de software e uma versão do pacote, você deve autorizar um ARN em que a versão do pacote seja $null
, como mostrado a seguir:
arn:aws:iot:<regionCode>
:111122223333
:package/<packageName>
/version/$null
Direitos de trabalho AWS IoT para atualizar a sombra nomeada reservada
Para permitir que as tarefas atualizem a sombra de nome reservada do objeto quando a tarefa for concluída com êxito, você deve criar um perfil e uma política do IAM. Você pode fazer isso de duas maneiras no console AWS IoT. A primeira é quando você cria um pacote de software no console. Se você vir a caixa de diálogo Habilitar dependências para gerenciamento de pacotes, poderá optar por usar uma função existente ou criar uma nova função. Ou, no console AWS IoT, escolha Configurações, em seguida Gerenciar indexação e, então, Gerenciar indexação para pacotes e versões de dispositivos.
nota
Se você optar por fazer com que o serviço Tarefa AWS IoT atualize a sombra nomeada reservada quando uma tarefa for concluída com êxito, a chamada de API será contabilizada nas operações de Sombra do dispositivo e de registro e poderá ter um custo. Para obter mais informações, consulte Preços do AWS IoT Core
Quando você usa a opção Criar função, o nome da função gerada começa com aws-iot-role-update-shadows
e contém as seguintes políticas:
Configuração de um perfil
- Permissões
-
A política de permissões concede os direitos de consultar e atualizar a sombra do objeto. O parâmetro
$package
no ARN do recurso tem como alvo a sombra nomeada reservada.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:DescribeEndpoint", "Resource": "" }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow" ], "Resource": [ "arn:aws:iot:
<regionCode>
:111122223333
:thing/<thingName>
/$package" ] } ] } - Relação de confiança
-
Além da política de permissões, a função exige uma relação de confiança com AWS IoT Core para que a entidade possa assumir a função e atualizar a sombra nomeada reservada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Configuração de uma política de usuário
- iam:passRole, permissão
-
Por fim, você precisa ter permissão para passar a função ao chamar a operação AWS IoT Core da API UpdatePackageConfiguration.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageConfiguration" ], "Resource": "arn:aws:iam::
111122223333
:role/<roleName>
" } ] }
AWS IoT Permissões de tarefas para baixar do Amazon S3
O documento de trabalho é salvo no Amazon S3. Você se refere a esse arquivo ao enviar por meio de Tarefas AWS IoT. Você deve fornecer a opção Tarefas AWS IoT os direitos de baixar o arquivo (s3:GetObject
). Você também deve estabelecer uma relação de confiança entre o Amazon S3 e AWS IoT Tarefas. Para obter instruções sobre como criar essas políticas, consulte URLs pré-assinados em Como gerenciar tarefas.
Permissões para atualizar a lista de materiais de software para uma versão do pacote
Para atualizar a lista de materiais de software para uma versão de pacote nos estados de ciclo de vida Draft
, Published
ou Deprecated
, você precisa de uma função AWS Identity and Access Management e políticas para localizar a nova lista de materiais de software no Amazon S3 e atualizar a versão do pacote no AWS IoT Core.
Primeiro, você colocará a lista de materiais de software atualizada em seu bucket com versionamento do Amazon S3 e chamará a operação UpdatePackageVersion
da API com o parâmetro sboms
incluído. Em seguida, sua entidade principal autorizada assumirá o perfil do IAM que você criou, localizará a lista de materiais de software atualizada no Amazon S3 e atualizará a versão do pacote no AWS IoT Core para o Catálogo de pacotes de software.
As seguintes políticas são necessárias para realizar essa atualização:
Políticas
-
Política de confiança: política que estabelece uma relação de confiança com a entidade principal autorizada, assumindo o perfil do IAM, para que ela possa localizar a lista de materiais de software atualizada do seu bucket com versionamento no Amazon S3 e atualizar a versão do pacote em AWS IoT Core.
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
-
Política de permissões: política para acessar o bucket com versionamento do Amazon S3 em que a lista de materiais do software é armazenada para uma versão do pacote e atualizá-la no AWS IoT Core.
-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::
awsexamplebucket1
" ] } ] } -
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:UpdatePackageVersion" ], "Resource": [ "arn:aws:iot:*:
111122223333
:package/<packageName>
/version/<versionName>
" ] } ] }
-
-
Transmitir permissões de perfil: política que concede permissão para passar o perfil do IAM para o Amazon S3 e para AWS IoT Core quando você chamar a operação da API
UpdatePackageVersion
.-
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:GetObject" ], "arn:aws:s3:::
awsexamplebucket1
" } ] } -
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole", "iot:UpdatePackageVersion" ], "Resource": "arn:aws:iam::
111122223333
:role/<roleName>
" } ] }
-
nota
Você não pode atualizar a lista de materiais do software em uma versão do pacote que tenha passado para o estado de ciclo de vida Deleted
.
Para obter mais informações sobre a criação de um perfil do IAM para um serviço AWS, consulte Criar uma função para delegar permissão a um serviço da AWS.
Para obter mais informações sobre a criação de um bucket do Amazon S3 e o upload de objetos nele, consulte Criar um bucket e Fazer upload de objetos.