SCRAM을 사용하여 자체 관리 배포서버에서 클라이언트 인증하기
다음 절차는 독립형 mongod
인스턴스에서 클라이언트 인증을 위한 SCRAM을 설정합니다.
복제본 세트 또는 샤드 클러스터에 SCRAM 인증을 사용하려면 키 파일 인증을 사용하여 자체 관리 복제본 세트 배포를 참조하세요.
절차
액세스 제어 없이 MongoDB 시작
액세스 제어 없이 독립형 mongod
인스턴스를 시작합니다.
터미널을 열고 mongod
사용자로 다음 명령을 실행합니다:
mongod --port 27017 --dbpath /var/lib/mongodb
이 튜토리얼의 mongod
인스턴스에서는 port 27017
및 /var/lib/mongodb
데이터 디렉토리를 사용합니다.
이 튜토리얼에서는 /var/lib/mongodb
디렉토리가 존재하고 기본값이 dbPath
라고 가정합니다. 필요에 따라 다른 데이터 디렉토리 또는 포트를 지정할 수 있습니다.
인스턴스에 연결
새 터미널을 열고 mongosh
를 사용하여 데이터베이스 배포에 연결합니다.
mongosh --port 27017
다른 배포에 연결하는 경우 연결에 필요한 --host
와 같은 추가 명령줄 옵션을 지정합니다.
사용자 관리자 만들기
중요
로컬 호스트 예외
액세스 제어를 활성화하기 전이나 후에 사용자 관리자를 생성할 수 있습니다. 사용자를 만들기 전에 액세스 제어를 활성화하면 MongoDB는 admin
데이터베이스에서 사용자 관리자를 만들 수 있는 로컬 호스트 예외를 제공합니다. 생성된 후에는 추가 사용자를 생성하려면 사용자 관리자로 인증해야 합니다.
mongosh
사용:
admin
데이터베이스로 전환합니다.userAdminAnyDatabase
및readWriteAnyDatabase
역할을 가진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
에서 사용자를 만드는 데이터베이스는 사용자의 인증 데이터베이스입니다. 사용자는 이 데이터베이스에 대한 인증이 필요하지만 다른 데이터베이스에서도 역할을 가질 수 있습니다. 사용자의 인증 데이터베이스는 사용자의 권한을 제한하지 않습니다.
액세스 제어를 사용하여 MongoDB 인스턴스 다시 시작
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
데이터베이스에서 사용자 관리자를 만들 수 있는 로컬 호스트 예외를 제공합니다. 생성된 후에는 추가 사용자를 생성하려면 사용자 관리자로 인증해야 합니다.
사용자 관리자로 연결 및 인증
mongosh
를 사용하여 다음을 수행할 수 있습니다.
, 및 명령줄 mongosh
-u
<username>
-p
--authenticationDatabase <database>
옵션으로 를 시작합니다.
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 인증을 사용하려면 키 파일 인증을 사용하여 자체 관리 복제본 세트 배포를 참조하세요.