MQTT · 2026-04-12

MQTT 주제 권한(ACL) 설계 예제 모음

MQTT 토픽 권한을 체계적으로 설계하는 방법과 실무에서 적용 가능한 주제별 권한 예제, acl 정책 mqtt 설정 절차와 예시를 정리한 모음집

작성일 : 2026-04-12 ㆍ 작성자 : 관리자
post
목차

소개

이 글은 mqtt topic acl 설계 관점에서 주제별 권한을 정리한 예제 모음이다. 개념부터 설계 원칙, 대표적인 구현 예시와 테스트 방법을 단계별로 설명한다. 처음 접하는 개발자도 이해하기 쉽도록 실무에 바로 적용 가능한 형태로 구성했다.

ACL 기본 개념

ACL이란

ACL(Access Control List)은 누가 어떤 주제에 대해 publish 또는 subscribe할 수 있는지를 정의한다. 브로커마다 표현 방식은 다르지만 목적은 동일하다. 시스템 보안과 데이터 프라이버시를 위해 반드시 설계해야 하는 요소다.

토픽 와일드카드 이해

토픽에는 +와 # 와일드카드가 있다. +는 한 레벨만, #는 그 레벨 이하 전체를 의미한다. 와일드카드를 잘 활용하면 간결한 규칙으로 다양한 디바이스와 그룹을 제어할 수 있다.

설계 원칙

  • 최소 권한 원칙: 필요한 권한만 허용한다.
  • 역할 기반 접근: 사용자·디바이스·서비스별 역할을 정의한다.
  • 명시적 거부 우선: 허용 규칙과 충돌할 때 거부 규칙을 우선시한다.
  • 토픽 네임스페이스 계획: 디바이스/서비스/환경별 접두사 설계.
  • 테스트 가능한 규칙 구성: 각 규칙에 대해 검증 시나리오를 만든다.

실무 예제

아래 예제는 mosquitto ACL 형식과 EMQX 스타일을 혼합하지 않고 개별적으로 제시한다. 환경에 맞게 변형해서 사용하면 된다.

Mosquitto ACL 기본 예제

사용자별로 읽기·쓰기 권한을 정의한 간단한 파일 예제.

user alice
topic readwrite home/alice/#

user bob
topic read home/+/temperature

# 시스템 토픽 차단
user +
topic deny $SYS/#

디바이스 그룹별 권한 (Mosquitto)

디바이스 모델이나 그룹에 따라 토픽을 제한하는 패턴 예시.

# Gateway는 모든 디바이스를 subscribe 가능
user gateway
topic read devices/+/status

# 각 디바이스는 자기 상태만 publish 가능
user device
topic write devices/${clientid}/telemetry
topic read devices/${clientid}/config

EMQX ACL 예제 (JSON 규칙)

EMQX 같은 브로커는 JSON 기반 정책을 사용한다. 역할(role)을 이용해 관리하면 편하다.

{
  "actions": ["publish","subscribe"],
  "allow": true,
  "role": "sensor",
  "topic": "sensors/+/data"
}

역할 기반 시나리오

운영자, 게이트웨이, 디바이스, 외부 서비스라는 역할을 정의한 예시 규칙이다.

# 운영자는 전체 읽기
role operator
allow subscribe #

# 외부 서비스는 특정 주제만 접근
role analytics
allow publish analytics/input
allow subscribe analytics/result

# 디바이스는 자신의 토픽만
role device
allow publish devices/${clientid}/telemetry
allow subscribe devices/${clientid}/cmd

거부 규칙과 우선순위

허용 규칙만 두면 실수로 접근이 열릴 수 있다. 중요한 것은 명시적 거부 규칙을 두어 위험한 토픽을 차단하는 것이다. 예를 들어 $SYS와 같은 시스템 토픽, 관리자 토픽은 모든 사용자에서 거부한다.

# 모든 사용자에 대해 시스템 토픽 접근 차단
user +
topic deny $SYS/#

after deny
user +
topic deny admin/#

테스트와 배포

설정 후에는 실제로 publish/subscribe 시나리오를 검증해야 한다. mosquitto_pub과 mosquitto_sub를 이용한 간단한 테스트 명령을 활용하면 빠르게 권한을 확인할 수 있다.

# 디바이스가 telemetry publish 시도
mosquitto_pub -t devices/device123/telemetry -m '{"temp":22}' -u device -P password

# 외부 서비스가 analytics 결과 구독 시도
mosquitto_sub -t analytics/result -u analytics -P secret

운영 시 고려사항

  • 규칙 변경은 로그와 모니터링을 통해 영향 범위를 확인한다.
  • 토픽 네임스페이스는 버전이나 환경(dev/prod)을 포함해 구분한다.
  • 인증과 결합: ACL은 인증 체계와 함께 사용해야 의미가 생긴다.
  • 정기 검토: 새 디바이스와 서비스가 추가될 때마다 ACL을 검토한다.

마무리

이 문서는 mqtt topic acl 설계에 필요한 핵심 원칙과 주제별 권한 mqtt 예제, acl 정책 mqtt 설정 방법을 모아둔 실무용 참고자료다. 설계는 단순히 규칙을 적는 작업이 아니다. 서비스 요구와 보안 요구를 조화시키는 과정으로 접근하면 운영 안정성을 높일 수 있다.

mqtt topic acl 설계 주제별 권한 mqtt 예제 acl 정책 mqtt 설정 mosquitto acl emqx acl mqtt 보안 토픽 설계 역할 기반 접근제어