2013-08-26 6 views
3

mqtt를 사용할 응용 프로그램을 작성 중입니다. 나는 파이썬 라이브러리를 사용할 것이다. 나는 모스 잇토 (mosquitto)를 사용하는 방향으로 기울어졌지만 프로그래밍 방식으로 액세스 제어 한계를 설정할 방법이 없다. 필자가 작성한 응용 프로그램은 사용자를 구별 할 수 있어야하며 특정 주제에 대해서만 구독하도록 허용해야합니다. 현재 해결책은 config 파일에서 수행되는 것처럼 보입니다. 모기의 통제 한계에 접근 할 수있는 확장 가능한 솔루션이 있습니까? 그렇지 않다면, 이것이 존재하는 mqtt 브로커에 대해 알고 있습니까?모스펫에서 프로그래밍 방식으로 액세스 제어 한계 설정

답변

2

이 문제를 처리 할 수있는 플러그인을 작성할 수 있습니다. 몇 가지 예는 http://mosquitto.org/2013/07/authentication-plugins/을 참조하십시오.

모스토 메일 링리스트에서 질문 할 경우 더 많은 답변을 찾을 수 있습니다.

+0

[mosquitto-auth-plug] (https://github.com/jpmens/mosquitto-auth-plug)는 Python에서 액세스 할 수있는 백엔드 ACL 저장소를 지원하는 인증 플러그인 중 하나입니다. –

1

Java에 익숙하다면 HiveMQ MQTT 브로커 인 http://www.hivemq.com을 사용해보십시오.

열려있는 PluginSDK가있어 브로커에 모든 종류의 확장을 쓸 수 있습니다.

당신은 데이터베이스, 파일 예를 들어, 가장 사용 사례에 맞는 인증 또는 인증 방법을 구현할 수

...

주제에 따라 승인이 일반적인 사용 사례이며 예는 HiveMQ에있다 플러그인 가이드 http://www.hivemq.com/documentations/getting-started-plugins/

공개 : HiveMQ 플러그인 개발에 대한 진입 점으로

플러그인 페이지 시작하기를 참조 내가 HiveMQ의 개발자 중 하나입니다.

7

더 이상 관련이 없더라도 다른 사람들이 유용하다고 생각할 수도 있습니다. 나는 여기 모기의 man page을 따릅니다.

두 개의 구성 파일, 예를 들어 mosquitto.conf, ACL (액세스 제어 목록)은 acl.conf입니다.

mosquitto.conf 액세스 제어를위한 acl.conf 파일 수 :

acl_file acl.conf 

acl.conf 액세스 제어 동작을 정의 :

# users can anonymously publish to the topic 'in' 
topic write in 
# users can subscribe topics named 'out/%u', where %u is the user's name 
pattern read out/%u 

# an admin may subscribe to 'in' 
# and publish to all subtopics of 'out/' (note the +) 
user adminWithSecretName 
topic read in 
topic write out/+ 

우리는 구성 파일 mosquitto을 실행하는 mosquitto -c mosquitto.conf을 실행합니다.

이 경우 임의로 생성 된 사용자 이름을 사용하여 동적 인증 메커니즘을 설정할 수 있습니다.

예 : 앨리스가 비공개 메시지를 읽을 수 있도록 가입하려고합니다. 그녀는 자신의 자격 증명을 N1에서 in까지의 논스와 함께 보냅니다. 또한 사용자 이름으로 N1을 사용하여 out/N1이라는 주제를 구독합니다. 패턴 read out/%u을 허용합니다.

adminWithSecretName으로 연결되고 in 항목에 가입되어있는 타사 서버 응용 프로그램은 Alice의 메시지를받습니다.진위 여부를 확인한 다음 N2이라는 새 nonce를 생성하고이를 Alice가 구독 한 out/N1에 게시합니다.

이제부터 - 적어도이 세션에서 - out/N2은 Alice가 여기에있는 장치에서 메시지를받는 일반적인 주제입니다. 따라서 Alice는 out/N1의 가입을 취소하고 연결을 끊고 에 가입합니다. 타사 서버 응용 프로그램은 Alice에 속한 모든 새 메시지를 out/N2이라는 주제로 게시합니다.

추가 고려 사항 : TLS 및/또는 메시지 별 암호화와 같은 다른 보안 측면을 고려할 수도 있습니다. 여기에 설명 된 구성은 대상 보안/개인 정보의 등급에 따라 TLS가 필요할 수도 있습니다. 한편, 메시지가 별도로 암호화되는 경우에는 폐기 될 수 있습니다. Eve는 케이블/WiFi 스트림에 액세스 할 수있는 경우 메시지를 가로 채고 (심지어 구독해도!) 비밀 사용자 이름을 일반 텍스트로 볼 수 있습니다. 그러나 : 이미 데이터 스트림에 대한 액세스 권한이 있으면 어쨌든 바이트를 가로 챌 수 있습니다. TLS 또는 메시지 단위 암호화를 사용하여 암호화됩니다. 또한, traffic analysis은 두 방식 모두에 적용될 수 있습니다.

TLS 또는 메시지 단위 암호화를 사용하는 것이 좋습니다. 둘 모두 올바르게 구현되고 적용되어야 보안이 보장됩니다.