Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

자체 관리 배포에서 클라이언트 인증을 위해 SCRAM 사용

이 페이지의 내용

  • 절차
  • 다음 단계

다음 절차는 독립형 mongod 인스턴스에서 클라이언트 인증을 위한 SCRAM을 설정합니다.

복제본 세트 또는 샤딩된 클러스터에 SCRAM 인증을 사용하려면 키 파일 인증으로 자체 관리형 복제본 세트 배포를 참조하세요.

1

액세스 제어 없이 독립형 mongod 인스턴스를 시작합니다.

터미널을 열고 mongod 사용자로 다음 명령을 실행합니다:

mongod --port 27017 --dbpath /var/lib/mongodb

이 튜토리얼의 mongod 인스턴스에서는 port 27017/var/lib/mongodb 데이터 디렉토리를 사용합니다.

이 튜토리얼에서는 /var/lib/mongodb 디렉토리가 존재하고 기본값이 dbPath라고 가정합니다. 필요에 따라 다른 데이터 디렉토리 또는 포트를 지정할 수 있습니다.

mongod가 시작되면 /var/lib/mongodb 디렉토리에 일부 시스템 파일이 생성됩니다. 시스템 파일의 소유권이 올바른지 확인하려면 mongod 사용자로 이 튜토리얼을 따릅니다. mongodroot 사용자로 시작하면 나중에 파일 소유권을 업데이트해야 합니다.

2

새 터미널을 열고 mongosh를 사용하여 클러스터 에 연결합니다.

mongosh --port 27017

다른 배포에 연결하는 경우 연결에 필요한 --host와 같은 추가 명령줄 옵션을 지정합니다.

3

중요

로컬 호스트 예외

액세스 제어를 활성화하기 전이나 후에 사용자 관리자를 생성할 수 있습니다. 사용자를 만들기 전에 액세스 제어를 활성화하면 MongoDB는 admin 데이터베이스에서 사용자 관리자를 만들 수 있는 로컬 호스트 예외를 제공합니다. 생성된 후에는 추가 사용자를 생성하려면 사용자 관리자로 인증해야 합니다.

mongosh 사용:

  1. admin 데이터베이스로 전환합니다.

  2. userAdminAnyDatabasereadWriteAnyDatabase 역할을 가진 myUserAdmin 사용자를 추가합니다:

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

passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.

userAdminAnyDatabase 역할을 통해 이 사용자는 다음을 수행할 수 있습니다.

  • 사용자 만들기

  • 사용자에게 역할 부여 또는 취소

  • 사용자 지정 역할 생성 또는 수정

필요에 따라 사용자에게 기본 제공 역할 또는 사용자 지정 역할을 추가로 할당할 수 있습니다.

이 예시 admin에서 사용자를 만드는 데이터베이스는 사용자의 인증 데이터베이스입니다. 사용자는 이 데이터베이스에 대한 인증이 필요하지만 다른 데이터베이스에서도 역할을 가질 수 있습니다. 사용자의 인증 데이터베이스는 사용자의 권한을 제한하지 않습니다.

4

mongod 인스턴스를 종료합니다. mongosh를 사용하여 다음 명령을 실행합니다.

db.adminCommand( { shutdown: 1 } )

mongosh를 종료합니다.

액세스 제어가 활성화된 상태에서 mongod를 시작합니다.

  • 명령줄에서 mongod를 시작하는 경우 --auth 명령줄 옵션을 추가합니다:

    mongod --auth --port 27017 --dbpath /var/lib/mongodb
  • 구성 파일을 사용하여 mongod를 시작하는 경우 security.authorization 구성 파일 설정을 추가합니다:

    security:
    authorization: enabled

이제 이 인스턴스에 연결하는 클라이언트는 자신을 인증해야 하며 할당된 역할에 따라 결정된 작업만 수행할 수 있습니다.

중요

로컬 호스트 예외

액세스 제어를 활성화하기 전이나 후에 사용자를 생성할 수 있습니다. 사용자를 만들기 전에 액세스 제어를 활성화하면 MongoDB는 admin 데이터베이스에서 사용자 관리자를 만들 수 있는 로컬 호스트 예외를 제공합니다. 생성된 후에는 추가 사용자를 생성하려면 사용자 관리자로 인증해야 합니다.

5

mongosh 를 사용하여 다음을 수행할 수 있습니다.

-u <username>, -p--authenticationDatabase <database> 명령줄 옵션으로 mongosh(을)를 시작합니다.

mongosh --port 27017 --authenticationDatabase \
"admin" -u "myUserAdmin" -p

메시지가 표시되면 비밀번호를 입력합니다.

mongosh(을)를 사용하여 데이터베이스 배포에 연결합니다.

mongosh --port 27017

mongosh 에서 인증 데이터베이스 (이 경우 admin)로 전환하고 db.auth(<username>, <pwd>) 메서드를 사용하여 인증합니다.

use admin
db.auth("myUserAdmin", passwordPrompt()) // or cleartext password

passwordPrompt() 메서드는 암호를 입력하라는 메시지를 표시합니다. 암호를 문자열로 직접 지정할 수도 있습니다. 암호가 화면에 표시되어 셸 기록에 암호가 유출될 가능성을 방지하려면 passwordPrompt() 방법을 사용하는 것이 좋습니다.

메시지가 표시되면 비밀번호를 입력합니다.

복제본 세트 또는 샤딩된 클러스터에 SCRAM 인증을 사용하려면 키 파일 인증으로 자체 관리형 복제본 세트 배포를 참조하세요.

돌아가기

SCRAM

이 페이지의 내용