Tagged: MongoDB 인증

MongoDB 3.x 인증 알고리즘 변경

MongoDB 3.x 부터는 인증 알고리즘이 MONGODB-CR 에서 SCRAM-SHA-1 으로 변경되었다. 그런데 특정 사용자에 대해서 MONGODB-CR 방식을 적용해야할 필요가 생기기도 한다. 그래서 사용자마다 알고리즘을 달리 적용할 수 있을까?

결론부터 말하면 MongoDB 3.x 는 이를 지원하지만 지원하는 것 같지 않은 상태다. 공식적인 지원을 하지만 이를 구현하기 위해서는 서버를 중단해야하고 인증을 해제해야한 다음에 사용자 알고리즘을 고치고 다시 인증을 걸고 서버를 재시작해야 한다.

또, Replica Set 상태에서 Primary 에서 MONGODB-CR 인증을 설정한다고 하더라도 Secondary  에서는 SCRAM-SHA-1 으로 싱크가 된다. 그래서 프로그램상에서 Replica Set 에서 접속할때에 MONGODB-CR 인증방식으로 접속을 시도하면 Primary 에서는 정상으로 접속되나 Secondary 서버에서는 인증이 실패해 접속이 안된다.

이러한 한계에도 불구하고 MongoDB 3.x 인증 알고리즘 변경 은 다음과 같이하면 된다.

서버 셧다운

제일 번저 서버를 셧다운 해야한다. 이유는 인증모드를 해제하기 위해서다. 관리자로 로그인을 한 후에 다음과 같이 서버를 셧다운 한다.

 

무인증 설정

이제 MongoDB 설정 파일에서 인증 부분을 주석처리해 무인증으로 만들고 서버를 시작한다.

이렇게 한 후에 서버를 시작하면 인증없이 모든 것을 할 수 있게 된다.

 

MONGODB-CR 인증 계정 생성

MONGODB-CR  인증을 생성하기 위해서는  MongoDB  자체의 인증 방법을 먼저 변경을 해줘야 한다. 이 변경은 역시 무인증 서버상태에서만 가능하다.

authSchema 버전을 3으로 변경하는데 이게 MONGODB-CR 인증 방법을 말한다. 5번은 SCRAM-SHA-1 이다.

이제 생성하고자하는 계정의 데이터베이스로 가서 계정을 생성한다.

생성된 계정을 확인해보면 다음과 같다.

 

인증방법 복원

MONGODB-CR 을 위한 계정을 생성했다면 SCRAM-SHA-1 로 바꾸고 서버에 인증을 걸어야 한다.

그리고 설정파일에 인증을 걸어준다.

그리고 서버를 재시작해주면 된다.

문제점

문제점은 앞에서 이야기 했듯이 Replica Set 상태에서 Primary 에서 MONGODB-CR 인증으로 계정을 생성했다고 하더라도 Secodary 에서는 SCRAM-SHA-1 으로 싱크가 된다. 그래서 Secondary 서버에 MONGODB-CR로 인증할려면 오류를 낸다.