본문 바로가기

프로그래밍/IoT

[AWS IoT] 인증 자동화를 위한 Bootstrap Certificate

반응형

2020/05/02 - [프로그래밍/IoT] - [AWS IoT] IoT Device 인증 방법 (IoT 인증서)

 

[AWS IoT] IoT Device 인증 방법 (IoT 인증서)

대부분의 서비스 설계 과정에서 가장 중요하게 다루는 부분이 인증이다. 인증에 대한 고민은 IoT 서비스에서도 마찬가지로 매우 중요한 부분을 차지한다. AWS IoT 인증서 생성 방법 AWS IoT에서는 X.5

jaenjoy.tistory.com

앞선 글을 통하여 AWS IoT에서 지원하는 Device 인증 방법에 대하여 언급했다.

Certificate(인증서)에 대한 기본적인 설명과 함께 인증 로직을 구현할 때, 인증서의 생성과 저장을 처리하는 방식에 대한 고민이 필요하다는 말과 함께 마무리 했다.

 

AWS에서 공식 블로그에서 이러한 고민을 해결할 수 있는 기본적인 정보를 제공해주고 있다.

(Provisioning with a bootstrap certificate in AWS IoT Core)

블로그의 내용을 간단하게 정리해보면서 인증 로직을 처리할 수 있는 아이디어를 공유해보고자 한다.

 

출처: AWS Blog (https://aws.amazon.com/blogs/iot/provisioning-with-a-bootstrap-certificate-in-aws-iot-core/)

Bootstrap Certificate

Bootstrap이란 일반적으로 한 번 시작되면 알아서 진행되는 일련의 과정을 뜻한다.

IoT에서 사용되는 Bootstrap 인증서는 Device가 실제 서비스 가능한 상태로 정상 동작하기 전의 일련의 과정을 위해 존재하는 인증서이다.

첨부한 AWS Blog의 Diagram 상에 Initial Credentials로 표기된 부분이 Bootstrap 인증서에 해당한다.

 

Bootstrap 인증서가 필요한 이유

IoT에 대한 포스팅을 쓰는 시점부터 IoT Service만의 특징에 대해서 주의깊게 다루었다.

IoT Device는 많은 경우, Mass Production 과정을 거쳐 생산이 된 뒤 특정되지 않는 사용자에게 전달되는 경우가 많다.

 

즉, 실제 사용자에게 전달되어 동작 가능한 상태가 되기 전까지는 단지 생산되어 출고되고 사용될 곳으로 전달된 것일 뿐이다.

서비스 가능한 상태로 등록되지 않은 상태로 Service의 관점에서는 너무 많은 권한을 허용할 수 없다.

 

일반적인 Web Application의 사용자 등록 및 인증 과정을 생각해보자.

사용자의 요청에 의하여 사용자 등록을 하면 등록 과정을 모두 거친 뒤, 최종 적인 인증 확인(Verification)을 거치기 전까지는 사용자 권한으로 할 수 있는 것이 없다.

 

Bootstrap 인증서는 위와 유사한 역할을 한다.

Device가 일반 사용자와 같이 직접 등록 과정을 처리할 수 없으니 Bootstrap 인증서를 사용하여 인증을 가능하게끔 하는 것이다.

Bootstrap 인증서의 역할

Bootstrap 인증서의 기본적인 역할은 "Final Credentials"를 받기 위한 "Registration"에 있다.

 

앞서 언급한 것과 같이 Bootstrap 인증서는 Device 차원의 인증을 대신할 수 있는 수단이다.

그렇기에 그 목적은 최종 서비스에서 사용할 수 있는 인증서를 요청 및 발급받는 것에 있다.

Bootstrap 인증서에 연결된 Bootstrap용 Policy가 제공하는 역할(Interface)은 매우 한정적인 부분에 그친다.

 

IoT Device를 구매하여 사용하는 사용자가 직접 IoT Service에 등록을 요청하는 방법

IoT Device가 사전에 정의된 규약과 방법에 따라 등록을 요청하는 방법 등

각 서비스에서 정의한 방식에 따라서 등록 과정을 거칠 수 있을 것이다.

 

이 때, 등록이 완료된 Thing에 대하여 역할의 제한이 해제된 서비스 가능한 인증서를 다시 요청하면, Device는 새로운 인증서로 다시 동작을 하게 될 것이고 그제서야 서비스 가능한 IoT Device로의 역할이 시작되는 것이다.

인증서의 저장

Device의 환경에 따라 인증서를 사용하는 방식과 필요한 인증서의 파일 형식이 다를 수 있다.

AWS IoT에서 최초에 생성되는 인증서 파일을 확인해보면 실제로는 텍스트 형식으로 되어 있다.

 

어짜피 AWS Cloud를 사용하는 경우라면, 인증서의 저장은 S3 Bucket을 사용하는 편이 좋을 것이다.

자동으로 AWS에서 인증서를 생성할 경우 계정 별로 언제나 Unique한 이름으로 인증서를 생성하기 때문에 S3에 저장하고, 다시 해당 Object를 조회하는 것에 어려움이 없을 것이다.

 

또한, Device의 이상 상황 등으로 인해 다시 인증서를 요청하는 경우가 있을텐데 AWS IoT에서는 최초 1회에만 key를 다운로드할 수 있도록 제한하고 있다.

따라서 S3에서 지원(제공)하는 백업 기능을 사용한다면, 인증서의 누락 및 유실 등의 상황도 대처할 수 있을 것이다.

반응형