이전 글에 이어서
https://heeyodev.tistory.com/7
AWS IoT 장치 프로비저닝(1) - JITP/JITR/MAR
나중에 AWS로 인프라 마이그레이션 해야 할 때 알아둬야 하는 내용을 미리 공부하는 차원에서 기록. Aws official doc이 있다. https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-provision.html..
heeyodev.tistory.com
Fleet Provisioning
Fleet Provisioning provides two ways to provision devices with unique credentials after they are delivered to end customers: by Trusted User or by Claim.
Unique identity 가 없는 장치들 같은 경우 Fleet Provisioning을 사용할 수 있는데,
그 방법은 2가지로 by 신뢰할 수 있는 사용자에 혹은 by Claim(?) 방식이라고 한다.
1. Fleet Provisioning by Trusted User
AWS IoT API를 통해서 mobile app이 임시 인증서와 private key를 생성하게 할 수 있다.
장치는 별도의 인증서 없이 출하되고, Trusted User가 mobile app 등을 통해서 임시 인증서와 private key를 생성한다.
요즘 홈 IoT 장치 구매하면 장치가 띄우는 WiFi에 접속 후, 로그인해서 본인 계정에 장치 등록하는 것이랑 같은 방식인 듯.
신뢰할 수 있는 유저에 의한 방식임으로, 높은 보안이 필요할 때 추천하는 방식이라고 함.
(신뢰할 수 있는 유저를 신뢰할 수 있는 신뢰성 있는 근거는? 아 ㅋㅋ)

- 모바일 app이 Trusted User APIs를 통해 임시 X.509 인증서와 private key를 발급받는다(이는 5분간만 유효하다).
- 모바일 app이 임시 인증 정보(인증서, private key)를 장치로 전달한다.(WiFi / BLE 등)
- 장치는 AWS IoT Cloud에 접속해 임시 인증서를 unique 한 인증서로 교환한다.
- 이 과정이 진행되면서 AWS 계정 Thing name, Policy, 그리고 인증서가 등록된다.
이를 수행하기 위해서
- 제조사는 Trusted User APIs 통해서 일련 과정 수행할 수 있는 앱을 개발/유지해야 한다고 한다..
- Lamda 통해서 추가적인 인증 절차를 구성할 수 있다고 한다.
장치 요구사항
- BLE, WiFi, USB 등 인증서를 안전하게 전달받을 수 있는 통신 방안이 있어야 한다.
- Fleet Provisioning MQTT 토픽에 publish/subscribe 할 수 있는 로직 처리가 가능해야 함.
- 그냥 AWS IoT SDK 쓸 수 있어야 한다는 거랑 같은 의미인 듯
- (안전한) 저장장치에 perment credential을 저장할 수 있어야 함
- Permenant..? Renewal 필요 없는 인증서인 건가? - 알아볼 필요가 있다.

2. Fleet Provisioning by Claim
위의 by Trusted Users 방식 장치 요구사항 중,
- BLE, WiFi, USB 등 인증서를 안전하게 전달받을 수 있는 통신 방안이 있어야 한다.
이게 충족되지 못하는 장치들을 위한 Provisioning 방식이라고 한다.
- 제조사는 각 장치에 shared claim 인증서를 firmware에 포함시켜야 한다.
- 해당 claim 인증서는 장치 batch별로 unique 해야 한다.
장치가 AWS IoT에 처음으로 연결하면, claim 인증서를 unique 한 X.509 인증서와 private key로 교환을 한다.
이때 장치는 unique token을 전송해야 한다고 한다(시리얼 넘버나 embedded hardware secret)
그 unique token을 allow list랑 대조해서 검증을 할 수 있다.(valid 한지)
제조사는
- Fleet Provisioning template과 추가 검증 로직을 처리하는 Lamda를 지속적으로 관리해야 하며
- claim 인증서를 보호하고 주기적으로 변경을 해서 오용을 막아야 한다 한다.
- 유출되면 너도 나도 인증이 가능하니, 추가 검증 로직이 필요하고, 주기적으로 인증서 변경도 ㅇㅇ..
장치 요구사항
- Fleet Provisioning MQTT 토픽에 publish/subscribe 할 수 있는 로직 처리가 가능해야 함.
- (안전한) 저장장치에 perment credential을 저장할 수 있어야 함

글만 보면 이해 안 됐는데, 이렇게 한번 쭉 정리하면서 정독하니까 이해가 다 된듯하다.
아마 나는 by Trusted User 방식을 채택하여 Proof of conecpt을 진행할 듯하다.
여러분도 재미있는 코딩 하시길
'개발 > AWS' 카테고리의 다른 글
| IoT 인프라 개선(3) - Offline-first Database 서비스 선정 - AWS DataStore (0) | 2022.06.16 |
|---|---|
| Cloud guru에 가입했다. (0) | 2022.06.10 |
| IoT 인프라 개선(2) - AWS IoT Core & AWS Amplify (0) | 2022.06.10 |
| AWS IoT 장치 프로비저닝(1) - JITP/JITR/MAR (0) | 2022.06.09 |
| IoT 인프라 개선 (0) | 2022.05.22 |