한 일

mongodb 권한 설정


mongodb 권한 설정

며칠전 코드리뷰를 통해 매우매우 중요한 파일을 github에 올려버렸다는걸 알게 되었다. config 파일이였는데 토큰의 암호와 DB의 접속하는 url을 적어두었는데 커밋이 되어버려서 우선 config파일을 숨기고, 급하게 암호를 바꾸고 DB의 접근을 막기 위해 권한설정에 대해 다시 공부했다. 처음에 시도할때는 잘 되지 않아서 그냥 풀어뒀는데 해결했다.

다시는 config파일을 깃에 올리지 말자….

사용자 목록 확인

use admin

show users

모든 데이터베이스내의 사용자

use admin

cur = db.system.users.find()

cur.count()

계정생성

db.createUser 해당 데이터베이스의 유저객체를 생성한다.

  • 관리자 계정 생성 예시
use test
db.createUser( {user: "testUser",
    pwd: "test",
    roles: ["readWrite", "dbAdmin"] } )
  • 읽기권한, 특정 데이터베이스 읽고쓰기 권한 계정 생성 예시
use admin
db.createUser( {user: "testUser",
    userSource: "test",
    roles: ["read"],
    otherDBRoles:{ testDB2: ["readWrite"] } } )
사용자 삭제

db.dropUser 해당 데이터베이스의 유저객체를 삭제한다.

  • 삭제 예시
  use testDB
  db.dropUser("testUser")
사용자 관리자 계정 생성

사용자 관리자는 데이터베이스나 다른 관리 기능을 운영하는 권한 말고 사용자를 생성할 수 있는 권한만 갖고 있어야 한다.

  • 사용자를 생성하는 권한을 가진 계정 예시

    use admin
    db.createUser({ user: "useradmin",
    pwd: "test",
    roles: ["userAdminAnyDatabase"]
    })
    
인증

—auth 파라미터를 사용해서 재시작해야한다.

mongod -dbpath <data/db> —auth

이후부터는 접근하기 위해 사용자와 패스워드를 이용해야 한다. 아니면 접속 후 명령어를 통해 로그인해야한다.

use admin
db.auth("useradmin","password")
권한 설정 후 접속방법

mongo < host : port > -u <user> -p <pwd> --authenticationDatabase <database>

또다른 권한 방법
//루트계정생성
> use admin
> db.createUser({user: "ROOT_ID", pwd: "ROOT_PASSWO", roles:["root"]})
//재시작
$ sudo service mongod restart
$ mongo
> mongo <host:port> -u "ROOT_ID" -p "ROOT_PASSWO" --authenticationDatabase "admin"

//데이터베이스계정생성
> use DATABASE
> db.createUser({user: "DB_USER_ID", pwd: "DB_USER_PASSWORD", roles:["dbOwner"]})
//재접속
> mongo <host:port/DATABASE> -u "DB_USER_ID" -p "DB_USER_PASSWORD"