MQTT · 2026-05-08

MQTT 브로커 접근 제어 권한 테스트 시나리오

MQTT 브로커의 접근 제어(ACL) 테스트 시나리오와 절차, 예제 ACL, 검증 포인트를 포함한 보안 점검 체크리스트 및 우선순위 분류

작성일 : 2026-05-08 ㆍ 작성자 : 관리자
post
목차

개요

MQTT 브로커의 접근 제어는 메시지 흐름을 안전하게 유지하는 핵심 요소다. 권한 설정이 잘못되면 민감한 데이터가 유출되거나 잘못된 클라이언트가 토픽을 조작할 수 있다. 본문은 초보자도 이해할 수 있도록 기본 개념부터 구체적인 테스트 시나리오까지 단계별로 정리한다. 테스트 결과는 보안 개선 우선순위로 이어질 수 있도록 구성했다.

준비 사항

목표 정의

테스트 목적을 명확히 한다. 예를 들어 다음과 같은 항목을 포함한다.

  • 인증되지 않은 접근 차단 확인
  • 사용자별 퍼블리시/서브스크라이브 권한 검증
  • 와일드카드 토픽 처리 확인
  • ACL 우선순위 및 재로딩 동작 확인

테스트 환경

다음 요소를 준비한다.

  • 브로커: Mosquitto 또는 EMQX 등
  • 클라이언트: mosquitto_pub/sub, MQTT.js, paho 등
  • ACL 파일 샘플 및 구성 백업
  • 로그 수집 및 스니핑 도구(예: tcpdump, Wireshark)

테스트 시나리오 목록

각 시나리오는 목적, 절차, 기대 결과와 함께 기록한다. 기록 양식은 재현성과 우선순위 판단에 중요하다.

1. 익명(인증 없음) 연결 시도

목적: 인증이 없는 클라이언트의 연결 차단 확인.

  • 절차: 사용자 이름/패스워드 없이 CONNECT 시도
  • 명령 예:
mosquitto_sub -h broker.example.com -t test/topic
  • 기대 결과: 연결 거부 또는 권한 부족 에러

2. 올바른 자격증명으로의 접근 허용

목적: 등록된 사용자만 퍼블리시/서브스크라이브 가능한지 검증.

  • 절차: 사용자 계정으로 CONNECT 후 퍼블리시와 서브스크라이브 시도
  • 명령 예:
mosquitto_pub -h broker.example.com -u alice -P secret -t sensors/temp -m 22.5
mosquitto_sub -h broker.example.com -u alice -P secret -t sensors/+
  • 기대 결과: 허용된 토픽에 대해 정상 송수신

3. 권한 없음 토픽 퍼블리시 차단

목적: 사용자에게 부여되지 않은 토픽으로의 퍼블리시 차단 확인.

  • 절차: 권한 없는 토픽으로 메시지 전송 시도
  • 명령 예:
mosquitto_pub -h broker.example.com -u bob -P pwd -t admin/controls -m "reboot"
  • 기대 결과: 퍼블리시 실패, 에러 로그에 허가 거부 기록

4. 권한 없음 토픽 서브스크라이브 차단

목적: 민감 토픽에 대한 구독 제한 검증.

  • 절차: 권한 없는 토픽으로 서브스크라이브 시도
  • 명령 예:
mosquitto_sub -h broker.example.com -u bob -P pwd -t admin/#
  • 기대 결과: 구독 실패 또는 수신 없음, 브로커 로그에 거부 표시

5. 와일드카드 처리 검증

목적: +, # 와일드카드에 대한 ACL 규칙의 적용 확인.

  • 절차: 와일드카드 토픽으로 서브스크라이브 후 여러 토픽에서 퍼블리시
  • 기대 결과: ACL에 정의된 범위 내에서만 메시지 수신

6. Retained 메시지 접근 제어

목적: Retained 메시지가 권한 정책을 우회하는지 확인.

  • 절차: 퍼블리시 시 retained 옵션 사용 후 다른 클라이언트가 구독
  • 기대 결과: 구독 권한이 있는 클라이언트만 retained 메시지 수신

7. QoS 및 중복 전송 검증

목적: QoS 레벨에 따른 권한과 메시지 재전송 동작 검증.

  • 절차: QoS 0,1,2로 퍼블리시 후 로그와 수신 상태 확인
  • 기대 결과: 권한이 있는 경우에만 지정한 QoS로 수신

8. ACL 우선순위 및 재로딩

목적: ACL 변경 시 브로커가 즉시 적용되는지, 우선순위 충돌 시 동작 확인.

  • 절차: ACL 파일 수정 후 브로커 ACL 재로딩 또는 재시작
  • 기대 결과: 변경된 정책이 즉시 반영되며, 더 구체적인 규칙이 우선 적용

샘플 ACL 파일 (Mosquitto 예)

# aclfile.acl
user alice
topic read sensors/+
topic write sensors/temperature

user bob
topic read public/#
# 관리자만 쓸 수 있는 토픽 차단

pattern write $SYS/#

위 예제는 기본적인 사용자별 읽기/쓰기 권한을 보여준다. 실제 환경에서는 그룹 기반 규칙과 패턴 사용이 필요하다.

테스트 결과 기록 항목

테스트 시 다음 항목을 표준화하여 기록한다.

  • 시나리오 ID
  • 절차 요약
  • 실행 명령 및 요청 페이로드
  • 브로커 로그 스니펫
  • 실제 결과와 기대 결과 비교
  • 심각도(높음/중간/낮음) 및 개선 권고

우선순위와 권고

인증 우회나 관리자 토픽 무단 접근은 최우선으로 처리한다. 그 밖에 와일드카드 오용, retained 메시지 오남용은 중간 우선순위다. 테스트에서 발견된 문제는 재발 방지를 위해 ACL 규칙 명세서로 통합한다.

결론

MQTT 브로커의 접근 제어 테스트는 표준화된 시나리오와 재현 가능한 절차가 핵심이다. 위 시나리오를 기반으로 환경에 맞는 케이스를 추가하면 권한 설정의 허점과 운영 리스크를 줄일 수 있다. 테스트 후에는 ACL과 인증 체계를 문서화하여 운영자와 개발자가 공유하도록 권장한다.

mqtt acl 테스트 시나리오 권한 테스트 mqtt 방법 브로커 보안 테스트 케이스 mqtt acl mosquitto acl mqtt 보안 mqtt 권한관리 mqtt 테스트 시나리오