본문 바로가기

프로그래밍/IoT

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

반응형

대부분의 서비스 설계 과정에서 가장 중요하게 다루는 부분이 인증이다.

인증에 대한 고민은 IoT 서비스에서도 마찬가지로 매우 중요한 부분을 차지한다.

 

AWS IoT 인증서 생성 방법

AWS IoT에서는 X.509 인증서를 사용하여 IoT Thing에 대한 인증을 처리한다.

X.509 인증서의 생성 방법을 AWS Console 화면을 통해 순서대로 알아보겠다.

 

1. 인증서는 보안 > 인증서 메뉴에서 관리한다.

아무런 인증서가 없는 상태에서는 위와 같은 화면이 나타난다. 인증서 생성 버튼을 클릭하여, 다음 단계로 넘어가보자

 

2. 인증서 생성 옵션

AWS IoT에서 기본적으로 제공하는 인증서 생성의 종류는 3가지이다.

 

원클릭 인증서 생성은 AWS IoT의 인증 기관을 이용하여 X.509 인증서를 발급받는 것이다.

인증서의 유효성과 인증서의 전반적인 관리를 모두 AWS IoT에 위임하는 것이기 때문에 인증서 자체에 대한 Resource 관리 및 운영 부담을 최소 할 수 있다는 장점이 있다.

 

CSR을 통한 생성, 내 인증서 생성은 관리자가 직접 프라이빗 키와 CA 인증서를 관리하고 등록함으로써 인증서를 생성하는 방법이다.

 

현재 진행중인 프로젝트는 기본적으로 Serverless 방식을 지향하며 Service Architecture를 유연하고 탄탄하게 가져가는 대신에 서비스의 관리 및 운영의 리소스는 최소화하고자 Cloud에 그 모든 부담을 위임하는 방식을 추구하고 있다.

그렇기에 IoT Device의 인증서 관리에 있어서도 직접 생성의 키를 관리하기 보다 AWS IoT의 인증 기관을 사용하고 있다.

 

3. AWS IoT의 원클릭 인증서 생성 결과

원클릭 인증서 생성 버튼을 통해 인증서를 생성할 경우, 위와 같은 인증서 생성 결과가 나온다.

브라우저 화면의 설명과 같이 인증서(pem 파일)는 AWS Console에서 언제나 다시 다운로드가 가능하지만, 실제 IoT Device의 인증을 위해 필수적으로 필요한 퍼블릭 키(public key)와 프라이빗 키(private key)는 인증서 생성 직후에만 조회 및 저장이 가능하다.

4. 인증서 생성 후, AWS Console의 결과

인증서를 생성한 이후 첫번 째 순서(1번)에서 조회했던 메뉴(보안 > 인증서)에 접근하면, 만들어진 인증서들을 조회하는 것이 가능해진다.

한가지 주의해서 봐야 될 부분은 생성된 인증서의 상태값이다.

 

즉, 이 인증서가 활성(ACTIVE)인지 비활성(INACTIVE)인지 확인하는 것이다.

위 캡쳐 화면은 console을 통해 인증서를 생성하는 순서 그대로 캡쳐를 했기 때문에 기본적으로 인증서를 생성한다면 "비활성"으로 생성이 되는 것을 알 수 있다.

 

활성화 여부가 중요한 것은 IoT 장비가 정상적인 인증서로 연결을 시도하더라도 비활성 상태인 인증서의 경우 연결이 불가능하다.

AWS Cloudwatch에서 해당 기록을 살펴볼 경우, Authorization Fail이라는 오류와 함께 AWS IoT Broker 연결을 차단한다.

 

실제 서비스에서는 콘솔이 아닌 AWS가 제공하는 API(AWS SDK)를 사용할 것이기 때문에 생성 시, 활성화 여부를 선택하는 옵션과 이를 변경하는 api가 존재하기 때문에 큰 문제가 되지는 않을 것이다.

 

하지만, 인증서 하나만으로 IoT 서비스에 접속이 가능하다는 것은 인증서에 대한 관리가 철저하게 이뤄져야 한다는 것을 뜻한다.

(물론, 인증서 외에 3번 화면에서와 같이 "정책(Policy)"을 통해 해당 인증서로 할 수 있는 IoT 장비의 역할이 한정될 수는 있다.)

 

IoT 서비스의 특수성과 IoT 인증 로직의 고민 포인트

실제 AWS Console 화면을 통해서 인증서를 생성하는 방법을 알아보았다.

IoT 서비스의 특수성이라는 관점에서 보다 효과적인 인증 방법, 인증서 관리 방법을 생각해 볼 필요가 있다.

 

IoT 서비스에서 가장 중요한 역할을 담당하는 주체는 IoT Device(Thing)이다.

IoT 장비는 Hardware를 생산하고, Software를 설치하는 과정을 거쳐서 만들어지며 일반적으로는 Mass Production의 방식에 따라 공장에서 대량 생산되는 것이 일반적이다.

어떤 Service Architecture를 갖추느냐도 중요하지만, IoT Service 만큼은 Device를 생산하고 출고하는 제품 관리, 재고 관리의 관점에서도 설계를 하는 것이 중요하다.

 

1. 인증서의 생성 방식

AWS Console에서 인증서를 생성하는 과정은 AWS SDK를 사용할 때에도 동일한 flow를 따르게 될 것이다.

그렇다면 공장에서 생산하는 Device의 수 만큼 인증서를 생성해야 하고, 생성된 서로 다른 인증서가 반영된 software를 만들어서 제품의 생산 과정에서 서로 다른 프로그램을 설치하는 것이 과연 효율적인 방식일까?

 

앞서 전제로 얘기한 IoT 서비스의 특수성 중에서도 제품 관리의 관점에서 생각해본다면, 최소한 Device를 생산하는 과정에서 다양성이 개입되는 것인 비용효율성(Cost-efficiency)을 높일 수 없다.

 

따라서 어떻게 Device마다 다른 인증서를 발급하여 전달하게 할 것인지를 설계하는 것이 IoT 서비스의 인증에서 가장 중요한 고민 포인트가 될 것이다.

 

2. 생성된 인증서의 저장 및 관리

위의 3번 순서(AWS IoT의 원클릭 인증서 생성 결과)를 통해 알 수 있듯 한 번 생성된 인증서는 생성 당시에만 Key를 다운로드할 수 있다.

 

따라서 인증서를 생성한 뒤, 그 인증서를 어떻게 저장하여 관리할 것인지 정해야하며,

저장된 인증서를 어떤 방식으로 IoT Device에 전달할 것인지도 IoT 서비스의 인증을 처리하는 과정에서 중요한 고민 포인트이다.

 


고민을 해야하는 포인트만 짚고 그냥 넘어간다면 아쉬운 기록이 될 것이다.

이번에는 기본적인 AWS IoT에서 처리하는 인증의 방식과 인증서 생성 방법에 대해서 기록을 한뒤, 다음 포스팅을 통해 마지막 하단에서 언급했던 인증의 고민 포인트를 해결할 수 있는 방법들에 대해서 정리해보고자 한다.

반응형