2009-11-07 6 views
0

그래서 beanstalkd에 대해 좋아하는 : 작고 가벼우 며, 메시지 우선 순위를 가지며 사용하기 쉬운 훌륭한 클라이언트 집합을 가지고 있습니다.Python (또는 모든 UNIX) 클라이언트에서 beanstalkd에 인증 추가하기

beanstalkd에 대해 싫어하는 것 : 포트에 연결할 수 있으면 인증 메시지가 부족하여 메시지를 삽입 할 수 있습니다.

내 생각은 믿을만한 시스템 (응용 프로그램을 유지 관리하고 외부 레이어를 추가하는 데 어려움이 있습니다) 또는 stunnel 같은 것을 사용하여 TLS/SSL로 감싸는 것입니다. 연결 및 기타 등등과 관련하여 오버 헤드의 좋은 덩어리가 발생합니다. 나는 어쩌면 업무에 서명했다 (MD5 나 SHA의 작업 문자열 + 시간 값 + 작업에 추가 된 비밀). 그러나 공격자가 서버를 가짜 작업으로 넘치게한다면 여전히 곤경에 처할 것입니다. 누군가가 공격자로부터 가짜 메시지를 삽입하는 것에 대해 beanstalkd를 보호하는 다른 방법을 생각할 수 있습니까? 특히 계산 상 또는 관리 상 많은 오버 헤드를 발생시키지 않는 것들.

답변

4

다양한 이벤트에 웹 스크립팅 언어 (PHP)에서 BeanstalkD를 사용하기 때문에 연결을 무기한 열어 두는 관례에 동의하지 않아야합니다. 안전한 연결을 열 때 발생하는 오버 헤드는 제가 신중하게 생각해야 할 것입니다.

Memcached와 마찬가지로 beanstalkd는 방화벽 뒤의 신뢰할 수있는 환경에서 사용하도록 설계되었습니다. 전체 개인 네트워크를 제어하지 않으면 IP 주소를 사용하여 일련의 컴퓨터에 대한 액세스를 제한하는 것이 일반적인 방법입니다. 보안 해시를 넣어 잘못된 작업을 버리는 것은 어렵지 않으며 확인할 작업이나 오버 헤드가 거의 없지만 전송되는 대량의 작업을 막지는 못합니다.

질문은 '특정 범위를 벗어난 임의의 IP 주소에서 컴퓨터를 얼마나 자주 추가 할 것인지, 로컬 네트워크에있는 제 3자가 얼마나 자주 추가 할 것인지 묻습니다 임의의 작업을 대기열에 넣으시겠습니까? '. 첫 번째 부분은 컴퓨터를 방화벽에서 보호하는 것이 얼마나 많은 작업인지, 후자는 어쨌든 필요하다고 생각하는 것입니다.

+0

나는 기본적으로 양파 레이어 보안을 가능한 한 닫고 안전하게 할 것을 좋아합니다. 완전히 다른 시스템 (예 : 방화벽)에있는 관리 오버 헤드를 추가하지 않고 원하는 액세스 권한을 유지해야합니다. 변경 (예 : SSL을 사용하면 응용 프로그램 수준의 문제 인 방화벽이 시스템 레벨 문제 일 수 있습니다.) – Kurt

+0

가장 좋은 방법은 Beanstalkd 서버를 제한된 시스템 집합에 액세스 할 수있는 DMZ에 배치하는 것입니다. 예를 들어 웹 브라우저가 대기열에 연결되어있는 경우에는 다른 이야기입니다. – andho

1

이 질문은 실제로 beanstalkd talk list에 속합니다.

비슷한 이유로 최근에 memcached에 SASL 지원을 추가했습니다. 오버 헤드는 실제로는 연결 시간에만 인증되므로 (그리고 연결을 무기한 열어두기 때문에) 실제로는 거의 관련이 없습니다.

인증이 필요한 경우 사용자가 문제를 해결하는 데 도움이 될만한 곳에서 인증을 가져 오는 것이 좋습니다.

+0

항상 가능한 것은 아닙니다 (연결을 영원히 열어 두는 것). 어쨌든 내가 여기서 묻는 이유는 완전한 거래 차단기가 아니기 때문에 내가 지금 적용 할 수있는 해결책을 원한다는 것이다. 이것은 내가 쓰고 말하는 "여기에 그것을 보호하는 방법도있다."devs가 foo에 대한 지원을 추가하려고 생각하고있는 것보다 훨씬 낫습니다. 언젠가는 아마도. 그때까지 행운을 빌어 요! ") 편집자는 일종의 물건을 싫어합니다. (일명"이것은 독자에게 운동으로 남아 있습니다. ") – Kurt

0

나는 당신이 refererring하는 문제를 줄일 두 가지를 수행합니다

먼저 나는 항상 127.0.0.1에 beanstalkd 실행

둘째, 나는 일반적으로 작업 구조를 직렬화하고, "비밀 키를"로드 암호화 된 base64 다이제스트를 작업 문자열로 사용합니다. 작업 문자열을 올바르게 해독 할 수있는 작업자 만 작업을 구문 분석 할 수 있습니다.

저는 이것이 이 아닙니다. 확실히은 인증을 대신합니다. 하지만 일부 사람들이 대기열에 올라있는 작업을 어느 정도 극소화하기를 바랍니다.

+2

로컬 호스트에서만 실행하면 나도 할 수 없습니다. OpenSSH와 같은 다른 레이어를 추가하거나 포트 리디렉션을 수행 할 필요없이 자주 액세스하십시오. 필요한 경우에만 로컬로 파이썬 큐를 사용합니다. – Kurt

+0

분명히 localhost에서 서비스를 실행하는 것은 옵션이 될 수 없습니다. 직렬화 및 암호화가 도움이됩니까? –

관련 문제