2013-04-18 8 views
2

Mongo에 복제 세트로 3 개의 노드를 설정했습니다. 모두 괜찮은 의사 소통을하고 있지만 인증을 사용하면 의사 소통 방법을 알 수 없습니다.Mongo의 복제본 세트 사이의 보안/인증

    "_id" : 2, 
        "name" : "50.17.?.?:27017", 
        "health" : 0, 
        "state" : 6, 
        "stateStr" : "(not reachable/healthy)", 
        "uptime" : 0, 
        "optime" : { 
          "t" : 1366321962, 
          "i" : 1 
        }, 
        "optimeDate" : ISODate("2013-04-18T21:52:42Z"), 
        "lastHeartbeat" : ISODate("2013-04-18T22:04:52Z"), 
        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), 
        "pingMs" : 81, 
        "authenticated" : false, 
        "syncingTo" : "54.244.?.?:27017" 

I을 : 나는 모든 그들을 얻을

  • 나는 다음과 같은 문제를 얻을 보조

에 mongod.conf에서 진정한 인증을 = 있도록 미세 복제 auth를 false로 설정하여 사용 안 함으로 설정하면 분명히 작동합니다. 이제 나는 이것에 익숙하지 않을 수도 있지만 멍청하지는 않습니다. 인증을 사용했기 때문에 연결할 수 없다는 것을 알고 있습니다. 그러나 어느 곳에서 사용자가 기본이 auth = true 보조와 동기화되도록 구성 할 수 있습니까? 아니면 복제본간에 통신을 가능하게하는 방법에 대한 다른 해결책이 있습니까? 클라이언트에게 인증의 필요성을 강요합니다> 나는 아무 소용이 없다고 생각했습니다.

방금 ​​방화벽을 사용하는 것 외에 승인에 대한 대안이 무엇이 가능하지 않은가요? 누군가가 신뢰할 수있는 시스템을 IP로 손상시키는 경우? 암호없이 보조 또는 기본에 연결할 수 없도록하고 싶습니다. 예를 들어 내 사무실이 침해 당하고 몽고 주 (main)가 우리 사무실 IP를 신뢰한다면.

+1

당신은 복제 세트 사이의 인증 키 파일을 사용합니다. 의미없는 것은 단일 복제본 노드에서만 인증을 사용 가능하게하는 것입니다. –

+0

무슨 일이 일어나는지 확인하기 위해 테스트를 진행 했으므로 주 서버가 인증 된 인스턴스에 연결하도록 할 수 있습니다. 나는 모든 노드에서 그것을 설정하기 위해 완전히 가려고했다. 나는 이것을 밖으로 시험 할 것이다. Asya 당신의 놀랍도록 빠릅니다. – SamMan

+0

@AsyaKamsky : 보안에 관한 내용을 포함하도록 복제 세트 (예 : [배치] (http://docs.mongodb.org/manual/tutorial/deploy-replica-set/))에있는 문서를 업데이트 할 수 있습니까? 이 부분은 제가 검토 한 모든 복제 세트 docs.mongodb.org 페이지에서 완전히 간과되어 있습니다. –

답변

1

Asya와 내가 아래에서 찾은 기사 덕분에 사용자의 승인을 허용하고 복제본을 키 파일 (모든 복제본간에 공유)과 통신 할 수있었습니다. 강조하기 위해 복제본은 다른 RDBMS와 같은 방식으로 사용자와 통신 할 수 없습니다.

파일을 chmod로 저장해야합니다. 그렇지 않으면 mongod 인스턴스가 키 파일이 "너무 열려 있음"을 말하지 않습니다. 그것은 비 필수 리눅스 사용자/그룹에게 보여주는 열쇠를 갖는 것을 막으려 고합니다. 또한 mongod (내 경우에는) 사용자에게 권한을 부여해야합니다.

Mongodb KeyFile too open permissions

관련 문제