-
MongoDB 3.2.20 Authentication Setting설치&설정 관련 2018. 10. 5. 16:56728x90
MongoDB 3.2.20 Authentication Setting
MongoDB 3.2.20 버젼으로 진행된다. 설치와 cluster가 완료 되었다는 가정하에 진행이 된다. 또한 ElasticSearch와 MongoDB는 mongo-connect를 이용하여 연결 되어 있다.
고객사의 요청으로 MongoDB 접근에 대한 권한을 설정해야 하는 일이 생겼다.
간단하게 설정으로 해결되는 문제로 생각했는데 삽질이 컸다.
현재 MongoDB의 구조는 다음과 같다.
총 5대의 서버로 구성되어 있으며, 2대는 데이터를 적재하는 MongoDB, 1대는 Primary/Slave의 투표를 하는 ARBITER, 클러스터의 메타 데이터 및 구성 설정을 저장하는 config 서버, 마지막으로 클라이언트 응용 프로그램과 공유 된 클러스터 사이의 인터페이스를 제공하는 쿼리 라우터 역할 하는 mongos로 구성된다.
인증을 위한 KeyFile 생성
MongoDB는 다음 2가지 인증 매커니즘을 지원 합니다.
- SCRAM - 기본 인증 메커니즘
- x.509 인증서 인증
본 글에서는 간단하게 사용이 가능한 SCRMA을 이용합니다
키 생성 명령어
openssl rand -base64 756 > <path-to-keyfile> chmod 400 <path-to-keyfile>
생성된 키를 각 설정 파일에 설정 해야 한다.
security: keyFile: <path-to-keyfile> replication: replSetName: <replicaSetName> net: bindIp: localhost,<ip address>
Server-A(20001), Server-B(20002), Server-C(20003), Server-D(20004)의 설정파일에 security: keyFile: 이 모두 설정되어야 한다. Server-F(10001)는 실행시 option으로 처리 한다.
재기동 옵션 A~D, F
/usr/bin/mongod --config /etc/mongod_repl1.conf /usr/bin/mongod --config /etc/mongod_repl2.conf /usr/bin/mongod --config /etc/mongod_repl3_arbiter.conf /usr/bin/mongod --config /etc/mongod_repl4_config.conf --configsvr /usr/bin/mongos --configdb localhost:20004 --port 10001 --fork --logpath /var/lib/mongodb/mongod_mongos.log --chunkSize 1 --keyFile /etc/m_key
MongoDB 재기동 & 계정 생성
설정이 완료된 이후에 MongoDB를 재기동 한다.
재기동이 완료 되면 계정을 생성 한다.
여기서는 단순하게 계정을 생성 하도록 한다. 계정 생성은 mongos와 repl1에 모두 생성 해야 한다.
- mongos 설정 ~~~ $> mongo –port 10001
use admin; db.createUser( { user: “admin”, pwd: “1234”, roles: [ { role: “root”, db: “admin” } ] } );
2. repl1 설정
$> mongo –port 20001
use admin; db.createUser( { user: “admin”, pwd: “1234”, roles: [ { role: “root”, db: “admin” } ] } );
3. mongo-connector 실행(생성한 계정의 id/pw를 option에 추가 한다.)
/usr/bin/python /usr/bin/mongo-connector -m localhost:10001 -t localhost:9200 -d elastic2_doc_manager -a admin -p 1234 ~~~
테스트
계정 처리가 완료 되면, 데이터를 조회/삽입 해본다.
$> mongo --port 10001 mongos> db.test.find({}) Error: error: { "ok" : 0, "errmsg" : "not authorized on test to execute command { find: \"test\", filter: {} }", "code" : 13 } mongos> mongos> use admin switched to db admin mongos> db.auth("admin", "1234") 1 mongos> db.test.find({}) mongos> db.test.insert({"x":1, "y":10}) WriteResult({ "nInserted" : 1 }) mongos> db.test.find({}) { "_id" : ObjectId("5b6b76a593ec1b18e1f5f441"), "x" : 1, "y" : 10 }
참고자료
728x90'설치&설정 관련' 카테고리의 다른 글
Nginx private 인증서 적용하기 (0) 2019.02.06 Maven 배포시 Local Jar 파일과 함께 하기! (0) 2019.02.06 INT4 형식으로 저장된 IP 값을 Function을 이용하여 처리 하기 (0) 2018.10.05 경력 개발자 면접 질문 (0) 2018.10.05 QRadar SDK를 Ubuntu 16.x에서 사용하기 위한 모듈 교체 작업 (0) 2018.04.17