2013-09-23 2 views
2

일부 자격 증명으로 ZooKeeper로 서비스를 인증하고 구성 정보에 액세스 할 수 있도록하고 싶습니다.ZooKeeper 다이제스트 인증 - 안전한 대안?

Digest authentication은 내 요구 사항에 충분히 안전하지 않습니다. "사용자 이름 : 암호를 일반 텍스트"으로 보내 인증합니다.

이미 사용할 수있는 간단하고 안전한 대안이 있습니까? Curator를 사용할 수 있으며이 프로젝트는 Java 기반입니다.

그렇지 않은 경우 내 인증 방법을 만드는 데 어떤 단계가 필요합니까? AuthenticationProvider을 구현하고이 공급자를 사용하도록 서버에 zookeeper.authProvider.1을 설정 한 다음 어떤 인증 토큰 (아마도 사용자 이름/암호 해시)을 CuratorFrameWorkFactory 빌더에 byte[] 매개 변수로 전달합니까?

답변

2

HTTPS를 통해 다이제스트 (또는 기본 인증)를 사용합니다. 전송 계층 암호화로 보안 문제를 처리 할 수 ​​있습니다. 자신의 응용 프로그램 계층 암호화를 시도하는 것이 어렵고 보안상의 문제가 발생할 가능성이 높습니다.

UPDATE : 사육사와 SSL에 관한

. 3.4

새로운 기능 : (NIO 직접 사용되는 이상)의 Netty는 NIO 기반의 클라이언트/서버 통신 프레임 워크, 그것은 간단하다 자바 애플리케이션을위한 네트워크 수준의 통신의 복잡성의 많은 사육사 사이트에 따르면. 또한 Netty 프레임 워크는 암호화 (SSL) 및 인증 (인증서)을 지원합니다. 이들은 선택적 기능이며 개별적으로 켜거나 끌 수 있습니다.

사육사 문서는 약간 구성이 희박하므로 대신 Netty 설명서를 참조하십시오.

+0

ZooKeeper가 SSL을 지원합니까? 현재 문서 (http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html)에 Netty가 언급되어 있지만 인증서 관리에 대한 섹션은 "TBD"로 표시되어 있습니다. –

+0

@Deejay, 업데이트 참조. – Aurand

1

사육사의 문서의 Netty를 사용하려면이 속성을 설정 말한다 : zookeeper.serverCnxnFactory = org.apache.zookeeper.server.NettyServerCnxnFactory

내가 NettyServerCnxnFactory의 소스 코드를 쳐다 보면서 그것의 내부 클래스 "CnxnChannelHandler"와 3.4.5의 기존 사육사 코드에는 SSL을 사용하도록 "구성된"내장 기능이 없다는 것이 명백합니다.

나는 여기에서 추측하고있다. 그러나 SSL을 사용하는 한 가지 가능한 방법은 Zookeeper의 NettyServerCnxnFactory를 하위 클래스에 추가하고 Netty의 SSL 기능을 사용하는 데 필요한 코드를 추가하는 것이다. 그런 다음 새 연결 팩토리를 가리 키도록 사육사 속성을 설정합니다.