본문 바로가기

TECH DOC

MongoDB misc 1 v1.0

MongoDB misc 1 v1.0

 

Date

Ver

Etc.

13.05.21

1.0

 

 

 

 

 

 

 

 

 

1.    MongoDB

이 문서에서는 MongoDB 를 위한 GUI Tool 이 무엇이 있는가,

MongoDB 에서의 Access Control 은 어떻게 이루어지는가,

MongoDB 의 데이터 암호화는 어떻게 이루어지는가를 살펴본다.

 

2.    GUI Tools for MongoDB

 

l  Edda : a log visualize for MongoDB




 

MongoDB 의 구성을 도식화 해서 보여주는 기능을 가지고 있다.

일종의 대시보드 기능을 제공하는 것으로 보임

명령을 인터페이스창은 보이지 않는다.

(공식페이지 없음)

 

l  UMongo

( http://edgytech.com/umongo/ )



 

Oracle Orange Golden 과 같이 명령 인터페이스를 제공하는 것으로 보인다.

 

l  MONGOEXPLORER

( http://mongoexplorer.com/ )

 



 

Silverlight 로 쓰여진 DBA Tool.

Query 박스가 있는것으로 보아 명령 인터페이스를 지원하는 것으로 보임

현재 개발 중지 된 상태임

 

l  mongovision

(https://code.google.com/p/mongo-vision/ )



 

prudence 로 씌여진 툴

일반적인 DBA 기능을 지원

 

여타 다른 툴에 대해서는 MongoDB 페이지를 참조한다.

( http://docs.mongodb.org/ecosystem/tools/administration-interfaces/ )

 

3.    Adding a User

MongoDB 에서는 collection 의 접근제어를 user, password 를 통해 제어한다.

이는 mongod 를 기동하기 전에 사전에 옵션을 사용해야 한다.

 

[mongodb@memdb2 bin]$ ./mongod --help

Tue May 21 13:47:37

Tue May 21 13:47:37 ** WARNING: You are running on a NUMA machine.

Tue May 21 13:47:37 **          We suggest launching mongod like this to

avoid performance problems:

Tue May 21 13:47:37 **              numactl --interleave=all mongod [other options]

Tue May 21 13:47:37

Allowed options:

 

General options:

...

  --auth                      run with security

...

  --noauth                    run without security

 

위와 같이 셋팅해 기동하게 되면 접근이 필요한 DB 에 사용자 추가되어 있지 않으면 collection 의 조회가 불가능하다.

 

접근이 필요한 DB 에 대해서는 다음과 같은 절차로 user 를 추가하게 된다.

 

a.    use (접근대상)

b.    db.addUser(“userid”,”password”)

 

> use mydbuse mydb

switched to db mydb

> show collectionsshow collections

Tue May 21 15:53:05 [conn3] assertion 10057 unauthorized db:mydb ns:mydb.system.namespaces lock type:0 client:127.0.0.1 ns:mydb.system.namespaces query:{}

Tue May 21 15:53:05 [conn3] problem detected during query over mydb.system.namespaces : { $err: "unauthorized db:mydb ns:mydb.system.namespaces lock type:0 client:127.0.0.1", code: 10057 }

Tue May 21 15:53:05 uncaught exception: error: {

        "$err" : "unauthorized db:mydb ns:mydb.system.namespaces lock type:0 client:127.0.0.1",

        "code" : 10057

}

> db.auth("mongo","mongol")db.auth("mongo","mongol")

Tue May 21 15:53:20 [conn3]  authenticate db: mydb { authenticate: 1,

nonce: "31ebccbe00667ef3", user: "mongo", key:

"e4ee453d4f9ef459a743729110e1c547" }

1

> show collectionsshow collections

foo

system.indexes

system.users

 

 

mongod auth 옵션을 가지고 기동한 경우 db.auth 를 통해 해당 데이터베이스에 접근 가능한 대상임을

인증 받아야 컬렉션 조회가 가능하다.

 

위 내용을 보면 데이터베이스 레벨로 접근 제어를 하나, 테이블 레벨로 접근을 제어하진 못 한다.

 

4.    Encryption method

Data Encryption

To support audit requirements, you may need to encrypt data stored in MongoDB. For best results you can encrypt this data in the application layer, by encrypting the content of fields that hold secure data.

Additionally, 10gen has a partnership with Gazzang to encrypt and secure sensitive data within MongoDB. The solution encrypts data in real time and Gazzang provides advanced key management that ensures only authorized processes and can access this data. The Gazzang software ensures that the cryptographic keys remain safe and ensures compliance with standards including HIPAA, PCI-DSS, and FERPA. For more information consider the following resources:

 

MongoDB 에서의 데이터 암호화는 Application 단에서 처리하라고 제시하고 있다.

다시 말해 MongoDB 자체에서의 암호화는 지원하지 않는다.

 

대신 MongoDB 에서의 암호화를 위해 Gazzang partnership 을 가지고 있고, 이는 실시간레벨로

지원된다고 한다.

(참고 : http://www.gazzang.com/products/zncrypt/mongodb )

 

5.    References

A.     MongoDB | http://docs.mongodb.org

B.     MongoDB 사용자의 생성과 관리 | http://cafe.naver.com/mongodatabase/book1684763/22