[authentication] 사용자 이름과 비밀번호로 MongoDB를 보호하는 방법

원격 액세스가 사용자 이름 및 비밀번호를 요청하도록 MongoDB 인스턴스에 대한 사용자 이름 및 비밀번호 인증을 설정하려고합니다. MongoDB 사이트에서 튜토리얼을 시도하고 다음을 수행했습니다.

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

그 후, 나는 나가서 몽고를 다시 달렸다. 그리고 액세스하기 위해 비밀번호가 필요하지 않습니다. 데이터베이스에 원격으로 연결하더라도 사용자 이름 및 비밀번호를 묻는 메시지가 표시되지 않습니다.


업데이트 여기에 내가 사용한 해결책이 있습니다.

1) At the mongo command line, set the administrator:

    use admin;
    db.addUser('admin','123456');

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

사용자 이름 및 암호가 동일한 방식으로 작동 mongodump하고 mongoexport.



답변

당신은 시작해야 mongod합니다--auth 사용자를 설정 한 후 옵션을 선택합니다.

MongoDB 사이트에서 :

--auth보안을 활성화 하는 옵션으로 데이터베이스 (mongod 프로세스)를 실행하십시오 . 로 서버를 시작하기 전에 admin db에 사용자를 --auth추가했거나 localhost 인터페이스에서 첫 번째 사용자를 추가해야합니다.

MongoDB 인증


답변

와우 너무 복잡하고 혼란스러운 답변이 여기에 있습니다.

이것은 v3.4부터입니다 입니다.

짧은 답변.

1) 액세스 제어없이 MongoDB를 시작하십시오.

mongod --dbpath /data/db

2) 인스턴스에 연결하십시오.

mongo

3) 사용자를 작성하십시오.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

4) MongoDB 인스턴스를 중지하고 액세스 제어로 다시 시작하십시오.

mongod --auth --dbpath /data/db

5) 사용자로 연결하고 인증하십시오.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})

긴 대답 : 제대로 이해하려면이 내용을 읽으십시오.

정말 간단합니다. https://docs.mongodb.com/manual/tutorial/enable-authentication/ 아래를 바보로 만들 것입니다.

역할의 실제 기능에 대한 자세한 내용은 https://docs.mongodb.com/manual/reference/built-in-roles/를 참조하십시오.

1) 액세스 제어없이 MongoDB를 시작하십시오.

mongod --dbpath /data/db

2) 인스턴스에 연결하십시오.

mongo

3) 사용자 관리자를 작성하십시오. 다음은 admin인증 데이터베이스 에 사용자 관리자를 작성 합니다. 사용자는 데이터베이스 dbOwner가 아니라 some_db데이터베이스가 아니라 admin기억해야합니다.

use admin
db.createUser(
  {
    user: "myDbOwner",
    pwd: "abc123",
    roles: [ { role: "dbOwner", db: "some_db" } ]
  }
)

또는 모든 데이터베이스에서 관리자 인 관리자를 작성하려면 다음을 수행하십시오.

use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

4) MongoDB 인스턴스를 중지하고 액세스 제어로 다시 시작하십시오.

mongod --auth --dbpath /data/db

5) admin인증 데이터베이스가 아닌 인증 데이터베이스에 대한 사용자 관리자로 연결하고 인증하십시오 some_db. 사용자 관리자가 admin인증 데이터베이스 에서 작성되었으며 사용자가 some_db인증 데이터베이스에 없습니다.

use admin
db.auth("myDbOwner", "abc123")

이제 데이터베이스 dbOwner이상으로 인증되었습니다 some_db. 이제 some_db데이터베이스를 향해 직접 데이터 를 읽고 쓰거나 변경하려는 경우 데이터베이스로 변경할 수 있습니다.

use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.

역할에 대한 추가 정보 : https://docs.mongodb.com/manual/reference/built-in-roles/

사용자 관리자가 아닌 일반 사용자 인 추가 사용자를 만들려면 아래에서 계속 읽으십시오.

6) 일반 사용자를 작성하십시오. 이 사용자는 some_db아래 의 인증 데이터베이스 에서 작성 됩니다.

use some_db
db.createUser(
  {
    user: "myNormalUser",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "some_db" },
             { role: "read", db: "some_other_db" } ]
  }
)

7) mongo 셸을 종료하고 다시 연결하고 사용자로 인증하십시오.

use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})


답변

먼저 #auth=truemongod 구성 파일에서 시작하는 행의 주석을 해제 하십시오 (기본 경로 /etc/mongo.conf). mongodb에 대한 인증이 가능합니다.

그런 다음 mongodb를 다시 시작하십시오. sudo service mongod restart


답변

이 답변은 몽고 3.2.1
참조입니다

터미널 1:

$ mongod --auth

터미널 2:

db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})

역할없이 추가하려는 경우 (선택 사항) :

db.createUser({user:"admin_name", pwd:"1234", roles:[]})

인증 여부 확인 :

db.auth("admin_name", "1234")

그것은 당신에게 줄 것입니다 :

1

다른 :

Error: Authentication failed.
0


답변

다음은 사용자를 추가하는 자바 스크립트 코드입니다.

  1. 시작 mongod과 함께--auth = true

  2. mongo shell에서 관리자 데이터베이스에 액세스하고 javascript 파일을 전달하십시오.

    몽고 관리자 “Filename.js”

    “Filename.js”

    // Adding admin user
    db.addUser("admin_username", " admin_password");
    // Authenticate admin user
    db.auth("admin_username ", " admin_password ");
    // use  database code from java script
    db = db.getSiblingDB("newDatabase");
    // Adding newDatabase database user  
    db.addUser("database_username ", " database_ password ");
  3. 이제 사용자 추가가 완료되었습니다. mongo 셸에서 데이터베이스 액세스를 확인할 수 있습니다


답변

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

몽고 설정 파일을 편집하십시오.

sudo nano /etc/mongod.conf

라인을 추가하십시오 :

security.authorization : enabled

서비스를 다시 시작하십시오

sudo service mongod restart

문안 인사


답변

먼저 터미널에서 mongoDB를 사용하여

mongod

이제 mongo shell use 다음 명령을 실행하십시오.

    use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

액세스 제어로 MongoDB 인스턴스를 다시 시작하십시오.

mongod --auth

이제 다음을 사용하여 명령 줄에서 자신을 인증하십시오.

mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

나는 그것을 읽었다

https://docs.mongodb.com/manual/tutorial/enable-authentication/