programing

사용자 이름과 비밀번호를 사용하여 MongoDB를 보호하는 방법

megabox 2023. 2. 15. 21:48
반응형

사용자 이름과 비밀번호를 사용하여 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 사이트:

프로세스를 'mongod'로 합니다.--auth이치노를 admin db로 시작하기 .--auth또는 로컬 호스트인터페이스에서 첫 번째 사용자를 추가합니다.

MongoDB 인증

와, 너무 복잡하거나 혼란스러운 답변이 많네요.

이것은 v3.4의 시점입니다.

단답.

  1. 한다(「MongoDB」)./data/db'db'의 'db'의 'db').

    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. 사용자 관리자를 만듭니다.다음으로 인증 데이터베이스에 사용자 관리자를 작성합니다. 사용자는 데이터베이스 위가 아니라 데이터베이스 위입니다.이 점을 기억해야 합니다.

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

또는 임의의 데이터베이스에 대해 admin을 작성하는 경우:

   use admin
   db.createUser(
     {
       user: "myUserAdmin",
       pwd: "abc123",
       roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
     }
   )
  1. MongoDB 인스턴스를 중지하고 접근컨트롤을 사용하여 다시 시작합니다.

    mongod --auth --dbpath /data/db
    
  2. 합니다.admin "" (Not)를 가 아닙니다.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.

역할에 대한 자세한 내용은http://https://docs.mongodb.com/manual/reference/built-in-roles/

사용자 관리자가 아닌 일반 사용자를 추가할 경우 아래 내용을 계속 읽어 보십시오.

  1. 일반 사용자를 만듭니다.이 사용자는 아래 인증 데이터베이스에 작성됩니다.

    use some_db
    db.createUser(
      {
        user: "myNormalUser",
        pwd: "xyz123",
        roles: [ { role: "readWrite", db: "some_db" },
                 { role: "read", db: "some_other_db" } ]
      }
    )
    
  2. mongo 쉘을 종료하고 다시 연결한 후 사용자로 인증합니다.

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

으로, 가 내가 읽지 않았기 입니다.--authflag, "mongoDB"로 설정하지 않을 경우 이 할 수 .

맨 앞에 를 없앱니다.#auth=true 패스 mongod "Mongod " " ) 。/etc/mongod.confmongodb 인증이

다음 : 그음음odod mongodb를 다시 시작합니다.sudo service mongod restart

이 답변은 Mongo 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

사용자 추가를 위한 Javascript 코드입니다.

  1. ★★mongod--auth = true

  2. mongo 쉘에서 관리 데이터베이스에 접속하여 javascript 파일을 전달합니다.

    mongo 관리자 "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

mongo 설정 파일을 편집합니다.

sudo nano /etc/mongod.conf

행을 추가합니다.

security.authorization : enabled

서비스를 재시작합니다.

sudo service mongod restart

안부 전해요

/etc/mongod.conf.

전에

#security:

끝나고

security:
    authorization: "enabled"

★★★★★★★★★★★★★★★.sudo service mongod restart

를 사용하여 단말기에서 mongoDB를 처음 실행합니다.

mongod

이제 mongo 셸을 실행합니다.다음 명령어를 사용합니다.

    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/

Ubuntu 18.04에서 한 작업은 다음과 같습니다.

$ sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
> exit
$ sudo vim /etc/mongodb.conf
auth = true
$ sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
> use lefa
> exit

데이터베이스 접근을 보호하기 위해 특정 데이터베이스에 대한 암호를 사용하여 사용자 생성:

use dbName

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

다음 단계를 순서대로 수행하십시오.

  • CLI를 사용하여 사용자 생성
use admin
db.createUser(
  {
    user: "admin",
    pwd: "admin123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)
  • 유효하게 OS에 그 를 하고 있는 는, OS 를 간단하게 사용할 수 .mongod --auth 의 는, 의 합니다./etc/mongod.confsecurity.authorization : enabled 후 mongd 합니다.
  • mongo -u "admin" -p "admin123" --authenticationDatabase "admin" 그거야.로로그그그그다다

자세한 내용은 이 게시물을 참조하고 mongoose를 사용한 연결 방법을 배울 수 있습니다.

다음은 ubuntu 20.04 및 mongodb Enterprise 4.4.2에 대해 수행한 작업입니다.

  1. mongo단말기로.

  2. 관리 데이터베이스 사용:

use admin
  1. 새 사용자를 생성하여 원하는 역할을 할당합니다.
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)
  1. 하고 mongo에 합니다.etc/mongod.conf:
security:
    authorization: enabled
  1. mongodb 서버 재시작

(임의) 6 입니다.사용자에게 루트 액세스 권한을 부여하려면 다음과 같이 사용자를 작성할 때 루트 액세스를 지정할 수 있습니다.

db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // or cleartext password
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

또는 다음 명령을 사용하여 사용자 역할을 변경할 수 있습니다.

db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

은 서로 .--auth령령 、 플는는는는는 속일속속 。

security:
  authorization: enabled

나는 그 측면을 명확히 하고 싶다. 어느 , 자격 는, 「사용자/패스워드」를 할 필요가 .db.createUseradmin데이터베이스입니다.하게 하는 방법은 credential과 2개의 netable로 하는 .

  1. 전자의 경우auth플래그가 적용됩니다. ★★mongod를 들면, '이렇게 하다' 입니다.usr/bin/mongod --auth
  2. 커스텀 설정 파일의 경우:이것은 커스텀 설정 파일에 후자의 설정이 존재할 필요가 있는 경우입니다. ★★mongod를 들면, '이렇게 하다' 입니다.usr/bin/mongod --config <config file path>

:Mongo 쉘에 접속합니다.mongo -u <user> -p <password> --authenticationDatabase admin

--authenticationDatabase사용자가 생성된 데이터베이스 이름입니다.에는 ad 른 o mongo 명 ad 음 음 、 mongo 명 음 음 、 음 。mongorestore,mongodump(예: the :-u <user> -p <password> --authenticationDatabase admin

상세한 것에 대하여는, https://docs.mongodb.com/manual/tutorial/enable-authentication/ 를 참조해 주세요.

mongoDB에 접속하는 베스트 프랙티스는 다음과 같습니다.

  1. 초기 설치 후

    use admin

  2. 그런 다음 다음 스크립트를 실행하여 admin 사용자를 생성합니다.

    db.createUser(
     {
         user: "YourUserName",
         pwd: "YourPassword",
         roles: [
                   { role: "userAdminAnyDatabase", db: "admin" },
                   { role: "readWriteAnyDatabase", db: "admin" },
                   { role: "dbAdminAnyDatabase", db: "admin" },
                   { role: "clusterAdmin", db: "admin" }
                ]
     })

다음 스크립트는 DB의 admin 사용자를 생성합니다.

  1. db.admin.

    mongo -u YourUserName -p YourPassword admin

  2. 로그인 후 1 ~3을 반복하여 동일한 관리 credential을 사용하거나 다른 데이터베이스의 N 번호를 작성할 수 있습니다.

이를 통해 MongoDB에서 작성하는 다른 컬렉션에 대해 다른 사용자 및 비밀번호를 생성할 수 있습니다.

다음 단계를 수행했습니다.

  1. mongod --port 27017을 cmd에 씁니다.
  2. 다음으로 mongo 쉘에 접속합니다.mongo --port 27017
  3. 사용자 admin을 만듭니다.admin db.createUser({사용자: "myUserAdmin", pwd: "abc123, 역할: [{역할: "userAdminAnyDatabase", db: "admin" } } )
  4. 몽고 셸을 분리하다
  5. mongodb : mongod --auth --port 27017을 재시작합니다.
  6. start mongo shell : mongo --port 27017 - u "myUserAdmin" -p "abc123" --authentication Database "admin"
  7. 접속 후 인증하려면 mongo 셸을 mongod에 연결합니다.mongo --port 27017
  8. 인증 데이터베이스로 전환:admin db.auth("myUserAdmin", "abc123" 사용

사용자가 사용하는 데이터베이스(admin db가 아님)로 전환해야 합니다.

use mydatabase

자세한 내용은 이 게시물을 참조하십시오.https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/

mongodb 4.4.13 커뮤니티

1. 데이터베이스 사용자 생성

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

1.2 동작 확인

> db.auth('myUserAdmin','abc123')

< { ok: 1 }

실패하면 얻을 수 있다

> db.auth('myUserAdmin','amongus')

MongoServerError: Authentication failed.

2. /etc/mongod.conf를 변경합니다.

nano /etc/mongod.conf

변경:

#security:

대상:

security:
  authorization: enabled

3. mongod 서비스를 재시작합니다.

sudo service mongod restart

이게 나한테 효과가 있었어

사용자 후 꼭 하세요.grant read/write/root여러분도 한번 드셔보세요.

cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])

중복되는 답변이 많지만 중요한 사항을 간과하고 있는 것 같습니다.

인증이 올바르게 유효하게 되어 있어도, 유저명/패스워드 없이 Mongo 데이터베이스에 접속할 수 있습니다!

는 like, 음음음음 like like음 like like like execute however 、 like 、 음 、 commands 、 commands 、 commands 、 commands 、 commands 、 commands 、 commands commands 。db.help(),db.getMongo(),db.listCommands() 등등.

$ mongo 
MongoDB shell version v4.4.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f662858b-8658-4e33-a735-120e3639c131") }
MongoDB server version: 4.4.3
mongos> db.getMongo()
connection to 127.0.0.1:27017
mongos> db
test
mongos> db.version()
4.4.3
mongos> db.runCommand({connectionStatus : 1})
{
        "authInfo" : {
                "authenticatedUsers" : [ ],
                "authenticatedUserRoles" : [ ]
        },
        "ok" : 1,
        "operationTime" : Timestamp(1618996970, 2),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1618996970, 2),
                "signature" : {
                        "hash" : BinData(0,"Kre9jvnJvsW+OVCl1QC+eKSBbbY="),
                        "keyId" : NumberLong("6944343118355365892")
                }
        }
}

버전 6.0에서 데이터베이스 사용자 이름과 비밀번호를 설정하는 방법을 이미 실행했습니다.

MongoDB 6.0 이상 설치 MongoDB에 데이터베이스 생성(이름에 관계없이)

여기에 이미지 설명 입력 MongoDB Shell 설치 https://www.mongodb.com/try/download/shell

open cmd

CD C:\Program Files\mongosh

mongosh "mongodb://localhost:param17"

#데이터베이스 이름 사용#

db.createUser({사용자: "xx", pwd: "xx", 역할: [{역할: "readWrite", db: "xx" })

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password

반응형