Notice
Recent Posts
Recent Comments
Link
투케이2K
219. (TWOK/WORK) [업무 이슈] AWS IoT Core MQTT 메시지 테스트 시 IAM 계정 AccessKey, SecretKey 미사용 이슈 - 사물 인증서 사용 본문
투케이2K 업무정리
219. (TWOK/WORK) [업무 이슈] AWS IoT Core MQTT 메시지 테스트 시 IAM 계정 AccessKey, SecretKey 미사용 이슈 - 사물 인증서 사용
투케이2K 2026. 6. 1. 19:36728x90
반응형
[제 목]
주제 : 투케이2K 업무 정리
타이틀 : 투케이 / 2k / 업무 정리
제목 : [업무 이슈] AWS IoT Core MQTT 메시지 테스트 시 IAM 계정 AccessKey, SecretKey 미사용 이슈 - 사물 인증서 사용

[내 용]
------------------------------------------------------------------------------
[개발 및 테스트 환경]
------------------------------------------------------------------------------
- 제 목 : [업무 이슈] AWS IoT Core MQTT 메시지 테스트 시 IAM 계정 AccessKey, SecretKey 미사용 이슈 - 사물 인증서 사용
- 테스트 환경 : AWS / Iot / MQTT / Shadow
- 사전) 👉 Aws Iot Core 간단 설명 :
>> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.
>> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.
>> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다.
- HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.
- 사전) 👉 MQTT (Message Queuing Telemetry Transport) 설명 :
>> MQTT 는 경량 메시지 프로토콜로, 주로 IoT(사물인터넷) 환경에서 사용됩니다
>> MQTT 목적 : 제한된 네트워크 환경(저속, 불안정)에서 효율적으로 메시지를 주고받기 위해 설계
>> MQTT 기반 : TCP/IP 위에서 동작
>> MQTT 패턴 : Publish/Subscribe 모델을 사용
- Publisher : 메시지를 발행하는 클라이언트
- Subscriber : 특정 주제(topic)를 구독하는 클라이언트
- Broker: 메시지를 중개하는 서버 (예: Mosquitto)
>> MQTT 주요 특징 :
- 경량성 : 헤더가 매우 작음(2바이트부터 시작)
- QoS (Quality of Service) :
$ QoS 0: 최대 한 번 전달(보장 없음)
$ QoS 1: 최소 한 번 전달(중복 가능)
$ QoS 2: 정확히 한 번 전달(가장 안전)
- 지속 연결 : KeepAlive로 연결 상태 유지
- Last Will and Testament (LWT) : 클라이언트 비정상 종료 시 브로커가 메시지 발행
- 토픽 기반 라우팅 : 계층적 구조(/home/temperature 등)
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[이슈 사항]
------------------------------------------------------------------------------
1. 🟥 기존 앱 및 웹에서 AWS IAM 계정 AccessKey , SecretKey 정보를 사용해 3자 입장에서 MQTT 메시지 송수신 테스트를 진행했지만, 더이상 해당 마스터 IAM 계정 정보를 사용하지 못하는 이슈 발생
2. 🟥 기능 구현 요청 내용 정리 :
>> IAM 계정 정보 없이 디바이스 기기와 MQTT 메시지 송수신 테스트 가능하게 기능 개발 요청
>> MQTT 기능 테스트는 토픽 구독 Subscribe , 메시지 발생 Publish 동작이 되어야함
>> 👉 현재 사용하고 있는 IAM 마스터 계정은 사용 중지 된 상태
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[원인 파악 및 증상 재현]
------------------------------------------------------------------------------
1. 🟥 기존 AWS IAM 마스터 계정 AccessKey , SecretKey 정보를 사용해 AWS IoT Core MQTT 연결 수행 시 연결이 되지 않는 것 확인
2. 🟥 기존 AWS IAM 마스터 계정 정보를 사용해 앱 및 웹에서 모두 연결 실패 증상 확인
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[조치 내용]
------------------------------------------------------------------------------
1. 🟦 AWS IAM 계정을 사용해 AWS IoT Core 연결 및 MQTT 메시지 송수신 로직을 👉 프로비저닝을 통해 발급 받은 사물 인증서 정보를 사용해 연결하도록 로직 변경
>> 👉 해당 로직 구현 시 앱은 정상 사용 가능하지만, 웹은 해당 방식으로 기능 사용이 불가능하므로 앱을 통해 테스트를 진행하도록 사전 공지 필요
2. 🟦 특정 사물에 생성 된 [하나의 사물 인증서] 로 다중 연결 가능 여부 정리
>> AWS IoT Core 는 인증서를 기반으로 TLS 연결을 인증합니다.
>> 👉 동일한 cert.pem / private.key 를 여러 클라이언트에서 사용하더라도 동시에 여러 MQTT connection 이 생성됩니다. (기술적으로 문제 없이 동작합니다 / Pub/Sub 도 테스트 가능)
>> 👉 사용 시 주의점 :
- 각 클라이언트는 Client ID가 반드시 달라야 함
- Client ID가 같으면 → 기존 연결이 끊기고 새 연결로 대체됨
- 요약 표시 :
Client A -> clientId: device1
Client B -> clientId: device2
→ ✅ OK (동시 연결 가능)
Client A -> clientId: device1
Client B -> clientId: device1
→ ❌ 기존 연결 끊김
3. 🟦 특정 사물에 생성 된 [다른 사물 인증서] 로 동시 연결 가능 여부 정리 :
>> 👉 같은 Thing 에 여러 인증서가 붙어 있어도 각 인증서로 동시에 여러 MQTT 연결이 가능하며, 서로 Pub/Sub 테스트도 문제없이 가능합니다.
- Thing = 단순 logical entity
- 실제 인증은 “인증서 기준” 으로 이루어짐
- 구조 요약 :
Thing (논리적 디바이스)
├─ Cert A
├─ Cert B
├─ Cert C
>> 👉 사용 시 주의점 :
- 각 클라이언트는 Client ID가 반드시 달라야 함
- Client ID가 같으면 → 기존 연결이 끊기고 새 연결로 대체됨
- 요약 표시 :
Cert A → ClientId: device-A
Cert B → ClientId: device-B
Cert C → ClientId: device-C
→ ✅ OK (동시 연결 가능)
Cert A → clientId: test1
Cert B → clientId: test1
→ ❌ 기존 연결 끊김
------------------------------------------------------------------------------
------------------------------------------------------------------------------
[참고 사이트]
------------------------------------------------------------------------------
▶️ [MQTT (Message Queueing Telemetry Transport) 통신 설명]
https://kkh0977.tistory.com/3631
https://blog.naver.com/kkh0977/222971771381?trackingCode=blog_bloghome_searchlist
▶️ [Aws Iot Core] Fleet provisioning 플릿 프로비저닝 수행 방법 정리 - 클레임 인증서 , 신뢰할 수 있는 사용자
https://kkh0977.tistory.com/7761
https://blog.naver.com/kkh0977/223779257161?trackingCode=blog_bloghome_searchlist
▶️ [Aws Iot Core] Aws 프로비저닝 수행 및 섀도우 Shadow 토픽 Topic 구독 시 와일드 카드 (wild card) 설명 정리
https://kkh0977.tistory.com/7902
https://blog.naver.com/kkh0977/223825295723?trackingCode=blog_bloghome_searchlist
▶️ [android] Aws Iot Core MQTT 연결 수행 후 Timer 타이머 사용해 주기적 connect 연결 상태 변경 및 해제 감지 로직
https://kkh0977.tistory.com/8330
https://blog.naver.com/kkh0977/224043610334?trackingCode=blog_bloghome_searchlist
------------------------------------------------------------------------------
728x90
반응형
'투케이2K 업무정리' 카테고리의 다른 글
Comments
