ust-in-time Provisionamento J - 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á.

ust-in-time Provisionamento J

Você pode usar o just-in-time provisionamento (JITP) para provisionar seus dispositivos quando eles tentarem se conectar pela primeira vez. AWS IoT Para provisionar o dispositivo, você deve habilitar o registro automático e associar um modelo de provisionamento ao certificado da CA usado para assinar o certificado do dispositivo. Os sucessos e erros de provisionamento são registrados como na Amazon. Métricas de provisionamento de dispositivos CloudWatch

Visão geral de JITP

Quando um dispositivo tenta se conectar AWS IoT usando um certificado assinado por um certificado CA registrado, AWS IoT carrega o modelo do certificado CA e o usa para fazer a chamada RegisterThing. O fluxo de trabalho de JITP registra primeiro um certificado com um valor de status de PENDING_ACTIVATION. Quando o fluxo de provisionamento do dispositivo for concluído, o status do certificado será alterado para ACTIVE.

AWS IoT define os seguintes parâmetros que você pode declarar e referenciar nos modelos de provisionamento:

  • AWS::IoT::Certificate::Country

  • AWS::IoT::Certificate::Organization

  • AWS::IoT::Certificate::OrganizationalUnit

  • AWS::IoT::Certificate::DistinguishedNameQualifier

  • AWS::IoT::Certificate::StateName

  • AWS::IoT::Certificate::CommonName

  • AWS::IoT::Certificate::SerialNumber

  • AWS::IoT::Certificate::Id

Os valores para esses parâmetros de modelo de provisionamento são limitados ao que o JITP pode extrair do campo de assunto do certificado do dispositivo que está sendo provisionado. O certificado deve conter valores para todos os parâmetros no corpo do modelo. O parâmetro AWS::IoT::Certificate::Id se refere a um ID gerado internamente, e não a um ID contido no certificado. Você pode obter o valor desse ID usando a principal() função dentro de uma AWS IoT regra.

nota

Você pode AWS IoT Core just-in-time provisionar dispositivos usando o recurso de provisionamento (JITP) sem precisar enviar toda a cadeia de confiança na primeira conexão de um dispositivo para o. AWS IoT Core A apresentação do certificado da CA é opcional, mas é necessário que o dispositivo envie a extensão Server Name Indication (SNI) ao se conectar ao AWS IoT Core.

Exemplo de corpo do modelo

O arquivo JSON a seguir é um exemplo de corpo do modelo de JITP completo.

{ "Parameters":{ "AWS::IoT::Certificate::CommonName":{ "Type":"String" }, "AWS::IoT::Certificate::SerialNumber":{ "Type":"String" }, "AWS::IoT::Certificate::Country":{ "Type":"String" }, "AWS::IoT::Certificate::Id":{ "Type":"String" } }, "Resources":{ "thing":{ "Type":"AWS::IoT::Thing", "Properties":{ "ThingName":{ "Ref":"AWS::IoT::Certificate::CommonName" }, "AttributePayload":{ "version":"v1", "serialNumber":{ "Ref":"AWS::IoT::Certificate::SerialNumber" } }, "ThingTypeName":"lightBulb-versionA", "ThingGroups":[ "v1-lightbulbs", { "Ref":"AWS::IoT::Certificate::Country" } ] }, "OverrideSettings":{ "AttributePayload":"MERGE", "ThingTypeName":"REPLACE", "ThingGroups":"DO_NOTHING" } }, "certificate":{ "Type":"AWS::IoT::Certificate", "Properties":{ "CertificateId":{ "Ref":"AWS::IoT::Certificate::Id" }, "Status":"ACTIVE" } }, "policy":{ "Type":"AWS::IoT::Policy", "Properties":{ "PolicyDocument":"{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }" } } } }

Este modelo de exemplo declara valores para os parâmetros de provisionamento AWS::IoT::Certificate::CommonName, AWS::IoT::Certificate::SerialNumber, AWS::IoT::Certificate::Country e AWS::IoT::Certificate::Id que são extraídos do certificado e usados na seção Resources. Em seguida, o fluxo de trabalho de JITP usa esse modelo para executar as seguintes ações:

  • Registrar um certificado e definir seu status como PENDING_ACTIVE.

  • Criar um recurso de coisa.

  • Criar um recurso de política.

  • Anexar a política ao certificado.

  • Anexar um certificado à coisa.

  • Atualizar o status do certificado como ACTIVE.

O provisionamento do dispositivo falhará se o certificado não tiver todas as propriedades mencionadas na Parameters seção do. templateBody Por exemplo, se AWS::IoT::Certificate::Country estiver incluído no modelo, mas o certificado não tiver uma propriedade Country, o provisionamento do dispositivo falhará.

Você também pode usar CloudTrail para solucionar problemas com seu modelo JITP. Para obter informações sobre as métricas registradas na Amazon CloudWatch, consulteMétricas de provisionamento de dispositivos. Para obter mais informações sobre modelos de provisionamento, consulte Modelos de provisionamento.

nota

Durante o processo de provisionamento, o just-in-time provisionamento (JITP) chama outras operações de API do plano de controle. AWS IoT Essas chamadas podem exceder as Cotas de controle de utilização da AWS IoT definidas para a conta e resultar em chamadas limitadas. Entre em contato com o Suporte ao cliente da AWS para aumentar as cotas do controle de utilização, se necessário.

Registrar CA usando o modelo de provisionamento

Para registrar uma CA usando um modelo de provisionamento completo, siga estas etapas:

  1. Salve o modelo de provisionamento e as informações do ARN da função, como no exemplo a seguir, como um arquivo JSON:

    { "templateBody" : "{\r\n \"Parameters\" : {\r\n \"AWS::IoT::Certificate::CommonName\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::SerialNumber\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::Country\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::Id\": {\r\n \"Type\": \"String\"\r\n }\r\n },\r\n \"Resources\": {\r\n \"thing\": {\r\n \"Type\": \"AWS::IoT::Thing\",\r\n \"Properties\": {\r\n \"ThingName\": {\r\n \"Ref\": \"AWS::IoT::Certificate::CommonName\"\r\n },\r\n \"AttributePayload\": {\r\n \"version\": \"v1\",\r\n \"serialNumber\": {\r\n \"Ref\": \"AWS::IoT::Certificate::SerialNumber\"\r\n }\r\n },\r\n \"ThingTypeName\": \"lightBulb-versionA\",\r\n \"ThingGroups\": [\r\n \"v1-lightbulbs\",\r\n {\r\n \"Ref\": \"AWS::IoT::Certificate::Country\"\r\n }\r\n ]\r\n },\r\n \"OverrideSettings\": {\r\n \"AttributePayload\": \"MERGE\",\r\n \"ThingTypeName\": \"REPLACE\",\r\n \"ThingGroups\": \"DO_NOTHING\"\r\n }\r\n },\r\n \"certificate\": {\r\n \"Type\": \"AWS::IoT::Certificate\",\r\n \"Properties\": {\r\n \"CertificateId\": {\r\n \"Ref\": \"AWS::IoT::Certificate::Id\"\r\n },\r\n \"Status\": \"ACTIVE\"\r\n },\r\n \"OverrideSettings\": {\r\n \"Status\": \"DO_NOTHING\"\r\n }\r\n },\r\n \"policy\": {\r\n \"Type\": \"AWS::IoT::Policy\",\r\n \"Properties\": {\r\n \"PolicyDocument\": \"{ \\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": [{ \\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\":[\\\"iot:Publish\\\"], \\\"Resource\\\": [\\\"arn:aws:iot:us-east-1:123456789012:topic\/foo\/bar\\\"] }] }\"\r\n }\r\n }\r\n }\r\n}", "roleArn" : "arn:aws:iam::123456789012:role/JITPRole" }

    Neste exemplo, o valor do campo templateBody deve ser um objeto JSON especificado como uma string de escape e pode usar somente os valores da lista anterior. É possível usar uma variedade de ferramentas para criar a saída JSON necessária, como json.dumps (Python) ou JSON.stringify (Node). O valor do campo roleARN deve ser o ARN de uma função que tenha a AWSIoTThingsRegistration anexada a ele. Além disso, o modelo pode usar um PolicyName existente em vez da PolicyDocument em linha no exemplo.

  2. Registre um certificado CA com a operação da API RegisterCACertificate ou comando register-ca-certificate da CLI. Você precisa especificar o diretório do modelo de provisionamento e as informações do ARN da função que você salvou na etapa anterior:

    O seguinte exemplo mostra como registrar um certificado CA no modo DEFAULT usando a AWS CLI:

    aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert --set-as-active --allow-auto-registration --registration-config file://your-template

    O seguinte exemplo mostra como registrar um certificado CA no modo SNI_ONLY usando a AWS CLI:

    aws iot register-ca-certificate --ca-certificate file://your-ca-cert --certificate-mode SNI_ONLY --set-as-active --allow-auto-registration --registration-config file://your-template

    Para obter mais informações, consulte Registrar certificados CA.

  3. (Opcional) Atualize as configurações de um certificado CA usando a operação da API UpdateCACertificate ou o comando update-ca-certificate da CLI.

    O seguinte exemplo mostra como atualizar um certificado CA usando a AWS CLI:

    aws iot update-ca-certificate --certificate-id caCertificateId --new-auto-registration-status ENABLE --registration-config file://your-template

Registrar CA usando o nome do modelo de provisionamento

Para registrar uma CA usando o nome de um modelo de provisionamento, siga estas etapas:

  1. Salve o corpo do modelo de provisionamento como um arquivo JSON. Você pode encontrar um exemplo de um corpo de modelo no corpo de modelo de exemplo.

  2. Para criar um modelo de aprovisionamento, use a API CreateProvisioningTemplate ou o comando CLI: create-provisioning-template

    aws iot create-provisioning-template --template-name your-template-name \ --template-body file://your-template-body.json --type JITP \ --provisioning-role-arn arn:aws:iam::123456789012:role/test
    nota

    Para just-in-time provisionamento (JITP), você deve especificar o tipo de modelo a ser JITP ao criar o modelo de provisionamento. Para obter mais informações sobre o tipo de modelo, consulte CreateProvisioningModelo na Referência AWS da API.

  3. Para registrar um certificado CA com o nome de modelo, use a API RegisterCACertificate ou comando register-ca-certificate da CLI:

    aws iot register-ca-certificate --ca-certificate file://your-ca-cert --verification-cert file://your-verification-cert \ --set-as-active --allow-auto-registration --registration-config templateName=your-template-name