J 프로비저닝 ust-in-time - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

J 프로비저닝 ust-in-time

디바이스가 처음 연결을 시도할 때 just-in-time 프로비저닝 (JITP) 을 사용하여 디바이스를 프로비저닝할 수 있습니다. AWS IoT 디바이스를 프로비저닝하려면 자동 등록을 활성화하고, 디바이스 인증서에 서명할 때 사용할 CA 인증서와 프로비저닝 템플릿을 연결해야 합니다. 프로비저닝 성공 및 오류는 디바이스 프로비저닝 지표 Amazon에서와 같이 기록됩니다. CloudWatch

JITP 개요

등록된 CA 인증서로 서명한 인증서를 사용하여 디바이스에 AWS IoT 연결을 시도하면 CA 인증서에서 템플릿을 AWS IoT 로드하고 이를 사용하여 호출합니다. RegisterThing JITP 워크플로는 상태 값이 PENDING_ACTIVATION인 인증서부터 먼저 등록합니다. 디바이스 프로비저닝 흐름이 완료되면 인증서 상태가 ACTIVE로 바뀝니다.

AWS IoT 프로비저닝 템플릿에서 선언하고 참조할 수 있는 다음 매개 변수를 정의합니다.

  • 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

위와 같은 프로비저닝 템플릿 파라미터의 값들은 JITP가 프로비저닝할 디바이스의 인증서에서 제목 필드로부터 추출할 수 있는 값으로 제한됩니다. 인증서에는 템플릿 본문의 모든 파라미터에 대한 값이 포함되어야 합니다. AWS::IoT::Certificate::Id 파라미터는 인증서에 포함된 ID가 아니라 내부에서 생성된 ID를 참조합니다. 규칙 내 principal() 함수를 사용하여 이 ID의 값을 가져올 수 있습니다. AWS IoT

참고

디바이스의 첫 번째 연결에서 전체 신뢰 체인을 전송할 필요 없이 AWS IoT Core just-in-time 프로비저닝 (JITP) 기능을 사용하여 디바이스를 프로비저닝할 수 있습니다. AWS IoT Core CA 인증서를 제시하는 것은 선택 사항이지만 디바이스가 AWS IoT Core에 연결할 때 서버 이름 표시(SNI) 확장을 전송해야 합니다.

템플릿 본문 예

다음 JSON 파일은 완전한 JITP 템플릿의 템플릿 본문 예입니다.

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

이 예제 템플릿은 인증서에서 추출되고 Resources 섹션에서 사용되는 AWS::IoT::Certificate::CommonName, AWS::IoT::Certificate::SerialNumber, AWS::IoT::Certificate::CountryAWS::IoT::Certificate::Id 프로비저닝 파라미터의 값을 선언합니다. 그러면 JITP 워크플로우가 이 템플릿을 사용하여 다음 작업을 수행합니다.

  • 인증서를 등록하고 상태를 PENDING_ACTIVE로 설정

  • 사물 리소스 하나를 생성

  • 정책 리소스 하나를 생성

  • 정책을 인증서에 연결

  • 인증서를 사물에 연결

  • 인증서 상태를 ACTIVE로 업데이트

인증서에 섹션의 모든 속성이 없는 경우 장치 프로비저닝이 실패합니다Parameters. templateBody 예를 들어, AWS::IoT::Certificate::Country가 템플릿에 포함되어 있지만 인증서에는 Country 속성이 없으면 디바이스 프로비저닝이 실패합니다.

를 CloudTrail 사용하여 JITP 템플릿 관련 문제를 해결할 수도 있습니다. CloudWatchAmazon에 기록된 지표에 대한 자세한 내용은 을 참조하십시오디바이스 프로비저닝 지표. 프로비저닝 템플릿에 대한 자세한 내용은 프로비저닝 템플릿을 참조하세요.

참고

프로비저닝 프로세스 중에 프로비저닝 (JITP) 은 다른 AWS IoT 컨트롤 플레인 API just-in-time 작업을 호출합니다. 이러한 호출이 계정에 설정된 AWS IoT 조절 할당량을 초과하면 호출이 제한될 수 있습니다. 필요한 경우 제한 할당량을 높이려면 AWS 고객 지원에 문의하세요.

프로비저닝 템플릿을 사용하여 CA 등록

전체 프로비저닝 템플릿을 사용하여 CA를 등록하려면 다음 단계를 수행합니다.

  1. 프로비저닝 템플릿과 역할 ARN 정보를 다음 예와 같이 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" }

    이 예에서 templateBody 필드의 값은 이스케이프된 문자열로 지정된 JSON 객체여야 하며 이전 목록에 포함된 값만 사용할 수 있습니다. 다양한 도구를 사용하여 json.dumps(Python) 또는 JSON.stringify(노드)와 같은 필수 JSON 출력을 생성할 수 있습니다. roleARN 필드의 값은 AWSIoTThingsRegistration이 연결된 역할의 ARN이어야 합니다. 또한 템플릿이 예제의 인라인 PolicyDocument 대신 기존 PolicyName을 사용할 수 있습니다.

  2. RegisterCACertificate API 작업 또는 register-ca-certificate CLI 명령을 사용하여 CA 인증서를 등록합니다. 이전 단계에서 저장한 프로비저닝 템플릿 및 역할 ARN 정보의 디렉터리를 지정합니다.

    다음은 AWS CLI를 사용하여 DEFAULT 모드로 CA 인증서를 등록하는 방법의 예제입니다.

    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

    다음은 AWS CLI를 사용하여 SNI_ONLY 모드로 CA 인증서를 등록하는 방법의 예제입니다.

    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

    자세한 정보는 CA 인증서 등록을 참조하세요.

  3. (선택 사항) UpdateCACertificate API 작업 또는 update-ca-certificate CLI 명령을 사용하여 CA 인증서 설정을 업데이트합니다.

    다음은 AWS CLI를 사용하여 CA 인증서를 업데이트하는 방법의 예입니다.

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

프로비저닝 템플릿 이름을 사용하여 CA 등록

프로비저닝 템플릿 이름을 사용하여 CA를 등록하려면 다음 단계를 수행합니다.

  1. 프로비저닝 템플릿 본문을 JSON 파일로 저장합니다. 템플릿 본문 예에서 템플릿 본문 예를 찾을 수 있습니다.

  2. 프로비저닝 템플릿을 생성하려면 CreateProvisioningTemplateAPI 또는 create-provisioning-templateCLI 명령을 사용합니다.

    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
    참고

    just-in-time 프로비저닝 (JITP) 의 경우 프로비저닝 템플릿을 생성할 JITP 때 템플릿 유형을 지정해야 합니다. 템플릿 유형에 대한 자세한 내용은 API 참조를 참조하십시오 CreateProvisioningTemplate. AWS

  3. 템플릿 이름으로 CA를 등록하려면 RegisterCACertificate API 또는 register-ca-certificate 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