사용자 이름과 비밀번호로 MongoDB 보호

Tahseen Tauseef 2023년6월20일
사용자 이름과 비밀번호로 MongoDB 보호

이 MongoDB 기사에서는 가장 기본적인 보안 기능인 MongoDB에 원격으로 액세스하는 동안 인증 사용자를 생성하여 사용자 이름과 암호로 MongoDB를 보호하는 방법을 올바르게 구성하는 방법을 설명합니다.

아시다시피 MongoDB는 NoSQL 데이터베이스로 설명되며 관계형 DB 구조를 따르지 않습니다. 대신 JSON 문서에 데이터를 저장합니다.

MongoDB를 설치하면 MongoDB 원격 연결 보안에 인증이 활성화되지 않습니다. 즉, HOST IP를 가진 사람은 누구나 MongoDB 서비스에 빠르게 액세스하고 MongoDB 인증 없이 CRUD 작업을 수행할 수 있습니다. 이는 mongod를 통합하는 안전한 방법이 아닙니다. 전 세계적으로 데이터베이스.

또한 인증이 없다는 것은 모든 사람이 데이터베이스에 들어가도록 초대하고 모든 것을 압수하며 잠재적으로 데이터를 위해 몸값을 요구하는 것을 의미합니다.

이 MongoDB 기사에서는 MongoDB 인증 자격 증명이 있는 사용자만 데이터베이스에 액세스할 수 있도록 MongoDB 인증을 보호하는 방법을 다룹니다.

이 MongoDB 기사에서 다루는 주제는 다음과 같습니다.

  • MongoDB에서 보안 인증 활성화

    1. 인증 없이 MongoDB 시작
    2. MongoDB 쉘을 사용하여 서버에 연결
    3. 사용자 관리자 생성
    4. mongod 구성 파일에서 인증 활성화
    5. 사용자 관리자로 연결 및 인증
    6. 추가 사용자 생성

MongoDB에서 보안 인증 활성화

이 MongoDB 문서는 자체 관리형 MongoDB 서버에만 적용됩니다. 모든 MongoDB as a Service 공급자는 이미 선제적으로 인증을 활성화합니다.

인증 없이 MongoDB 시작

셸을 열고 MongoDB 클라이언트를 실행합니다. 이것이 MongoDB의 기본 동작이므로 쉽습니다.

$ mongo

MongoDB 셸을 사용하여 서버에 연결

$ mongo mongodb://<host>:<port>

포트 번호는 27017일 수 있지만 추가 보안을 위해 언제든지 다른 번호로 변경할 수 있습니다.

사용자 관리자 만들기

관리 데이터베이스로 변경:

> use admin

기존 데이터베이스에서 다른 사용자를 생성할 수 있는 userAdminAnyDatabase 역할을 가진 사용자를 생성해야 합니다. 다음 예제에서는 pass123 암호를 사용하여 admin123 사용자를 생성합니다.

> db.createUser(
  {
    user: "admin123",
    pwd: "pass123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

그런 다음 Ctrl+D를 사용하여 mongo 셸에서 연결을 끊습니다.

mongod 구성 파일에서 인증 활성화

원하는 편집기로 mongod.conf를 편집하고 인증을 활성화합니다.

$ sudo vi /etc/mongod.conf

코드 편집기에서 /etc/mongod.conf를 열고 다음 행을 검색하십시오.

security:
    authorization: "disabled"

security 섹션에서 #를 제거하고 authorizationenabled로 변경하거나 누락된 경우 추가하십시오. 다음과 같아야 합니다.

security:
  authorization: "enabled"

mongod.conf를 찾을 수 없거나 이름이 mongodb.conf인 경우 구식의 깨진 버전의 MongoDB를 사용하고 있는 것입니다.

이 경우 최신 버전의 MongoDB로 업그레이드하는 것이 좋습니다. 그러나 상관하지 않는다면 다음과 같이 하십시오.

$ sudo vi /etc/mongodb.conf

auth를 찾아 #을 제거하고 true로 설정되었는지 확인합니다. 다음과 같아야 합니다.

auth = true

비활성화활성화로 변경한 후 파일을 저장하고 mongod를 다시 시작해야 합니다.

$ sudo service mongodb restart

이 서버에 연결하는 모든 클라이언트는 자신을 유효한 사용자로 인증해야 하며 할당된 역할에 따라 결정된 작업만 수행할 수 있습니다.

사용자 관리자로 연결 및 인증

$ mongo mongodb://<host>:<port>> db.auth("admin123", "pass123")
1

사용자는 mongo mongodb://superadmin:thepianohasbeendrinking@<host>:<port>를 사용하여 단일 단계로 연결하고 인증할 수도 있습니다. 그래도 이 옵션은 컴퓨터의 모든 프로그램에서 읽을 수 있는 터미널 기록에 자격 증명을 표시하므로 권장되지 않습니다.

추가 사용자 만들기

다음 작업은 테스트 데이터베이스에서 readWrite 역할을 가진 사용자 admin456을 테스트 데이터베이스에 추가합니다.

> use test
> db.createUser(
  {
    user: "admin456",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" } ]
  }
)

Enter를 누르면 mongo가 Successfully added user: …라고 응답합니다. 그런 다음 exit를 입력하거나 CTRL+C를 사용합니다.

관련 문장 - MongoDB Authentication