Mongo 셸의 모든 사용자 나열

Tahseen Tauseef 2023년6월20일
  1. 사용자 인증
  2. Mongo 셸의 모든 사용자 나열
  3. MongoDB의 db.getUser() 메소드
  4. MongoDB의 db.getUsers() 메소드
Mongo 셸의 모든 사용자 나열

이 MongoDB 기사에서는 사용자를 인증하고 Mongo 셸의 모든 사용자를 나열하고 db.getUser()db getUsers() 메서드를 사용하는 방법을 배웁니다.

사용자 인증

사용자로 인증하려면 사용자는 사용자 이름, 암호 및 해당 사용자와 연결된 인증 데이터베이스를 제공해야 합니다. 따라서 동일한 mongosh 세션에서 사용자 간 전환이 불가능합니다.

다른 사용자로 인증한다는 것은 세션이 인증된 두 사용자의 권한을 갖는다는 것을 의미합니다. mongosh를 종료했다가 다시 시작하여 사용자 간에 전환할 수 있습니다.

mongosh를 사용하여 연결 중 인증 또는 연결 후 인증을 수행할 수 있습니다.

연결 중 인증

-u, -p--authenticationDatabase 명령줄 옵션을 사용하여 mongosh를 시작합니다.

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

메시지가 표시되면 암호를 입력합니다.

연결 후 인증

mongosh를 사용하면 mongod 또는 mongos 인스턴스에 연결됩니다.

mongosh --port 27017

mongosh에서 인증 데이터베이스(이 경우 admin)로 전환하고 db.auth(,) 메서드 또는 authenticate 명령을 사용하여 인증 데이터베이스에 대해 인증합니다.

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

passwordPrompt() 메서드는 사용자에게 암호를 입력하라는 메시지를 표시합니다. 사용자는 비밀번호를 문자열로 직접 지정할 수도 있습니다.

passwordPrompt() 메서드를 사용하여 암호가 화면에 표시되고 잠재적으로 셸 기록에 암호가 유출되는 것을 방지하는 것이 좋습니다. 대신 프롬프트가 표시되면 비밀번호를 입력하십시오.

Mongo 셸의 모든 사용자 나열

모든 사용자를 나열하려면 mongosh를 사용하여 system.users 컬렉션을 쿼리할 수 있습니다.

use admin
db.system.users.find()

system.users 컬렉션을 직접 수정하면 안 됩니다. 사용자를 관리하기 위해 지정된 사용자 관리 명령을 사용할 수 있습니다.

예를 들어 mongos를 통해 생성된 샤드 클러스터의 모든 사용자를 나열하려면 mongos에 연결하고 다음 명령을 실행합니다. MongoDB는 구성 서버의 admin 데이터베이스에서 mongos를 통해 생성된 사용자를 저장합니다.

모든 샤드를 나열하려면 로컬 사용자가 해당 샤드에 직접 연결하고 다음 명령을 실행할 수 있습니다. MongoDB는 샤드 자체의 admin 데이터베이스에 shard local 사용자를 저장하는 데 사용됩니다.

이러한 shard local 사용자는 mongos를 통해 샤드 클러스터에 추가된 사용자와 독립적입니다. Shard local 사용자는 샤드로 제한되며 mongos에서는 사용할 수 없습니다.

MongoDB의 db.getUser() 메소드

이 메서드의 구문은 다음과 같습니다.

db.getUser(username, args)

이 메서드는 지정된 사용자에 대한 사용자 정보를 반환합니다. 사용자는 사용자의 데이터베이스에서 이 방법을 실행할 수 있습니다.

메서드가 실행 중인 데이터베이스에 있어야 합니다. db.getUser() 메소드는 다음 매개변수로 구성됩니다.

db.getUser( "<username>", {
   showCredentials: <Boolean>,
   showPrivileges: <Boolean>,
   showAuthenticationRestrictions: <Boolean>,
   filter: <document>
} )
모수 유형 설명
username 정보를 검색할 사용자의 이름입니다.
args 문서 Optional. A 문서specifying additional arguments.

args 문서는 다음 필드를 지원합니다.

필드 유형 설명
showCredentials 부울 이것은 선택적 필드입니다. 사용자의 비밀번호 해시를 표시하려면 이 필드를 true로 설정하십시오. 기본적으로 이 필드는 false입니다.
showPrivileges 부울 이것은 선택적 필드입니다. 확장된 정보를 포함하여 사용자의 전체 권한을 보려면 이 필드를 true로 설정하십시오. 기본적으로 이 필드는 false입니다. 모든 사용자를 보는 경우 이 필드를 지정할 수 없습니다.
showAuthenticationRestrictions 부울 이것은 선택적 필드입니다. 사용자의 인증 제한을 표시하려면 이 필드를 true로 설정하십시오. 기본적으로 이 필드는 false입니다. 모든 사용자를 보는 경우 이 필드를 지정할 수 없습니다.
filter 문서 This is an optional field. This 문서specifies $match stage conditions to return information for users that matches the filter conditions.

db.getUser() 메서드는 usersInfo 명령으로 래핑됩니다.

사용자는 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 viewUser 작업이 있어야 합니다. 사용자는 자신의 데이터에 액세스할 수 있습니다.

예:

다음 작업은 accounts 데이터베이스에서 예제 appClient 사용자에 대한 정보를 반환합니다.

use accounts
db.getUser("appClient")

위 예제의 출력은 다음과 같습니다.

{
   _id: 'accounts.appClient',
   userId: UUID("1c2fc1bf-c4dc-4a22-8b04-3971349ce0dc"),
   user: 'appClient',
   db: 'accounts',
   roles: [],
   mechanisms: [ 'SCRAM-SHA-1', 'SCRAM-SHA-256' ]
}

MongoDB의 db.getUsers() 메소드

이 메서드의 구문은 다음과 같습니다.

db.getUsers(<options>)

이 메서드는 데이터베이스의 모든 사용자에 대한 정보를 반환합니다. db.getUsers() 메서드는 usersInfo: 1 명령으로 래핑됩니다.

db.getUsers() 메서드는 다음 옵션을 사용합니다.

db.getUsers( {
   showCredentials: <Boolean>,
   filter: <document>
} )
필드 유형 설명
showCredentials 부울 이것은 선택적 필드입니다. 필드를 true로 설정하여 사용자의 암호 해시를 표시할 수 있습니다. 기본적으로 이 필드는 false.입니다.
filter 문서 This is an optional field. This 문서specifies $match stage conditions to return information for users that matches the filter conditions.

사용자는 다른 사용자의 정보를 보려면 다른 사용자의 데이터베이스에 대한 viewUser 작업이 있어야 합니다. 사용자는 자신의 정보를 볼 수 있습니다.

예:

지정된 필터와 일치하는 지정된 데이터베이스의 모든 사용자를 봅니다.

db.getUsers() 메서드는 필터 조건과 일치하는 사용자에 대한 정보를 반환하는 filter 문서를 허용할 수 있습니다. SCRAM-SHA-256 자격 증명이 있는 현재 데이터베이스의 모든 사용자를 보려면.

db.getUsers({ filter: { mechanisms: "SCRAM-SHA-256" } })

모든 사용자를 보는 동안 showCredentials 옵션을 지정할 수 있지만 showPrivileges 또는 showAuthenticationRestrictions 옵션은 지정할 수 없습니다.

따라서 이 MongoDB 기사의 도움으로 사용자를 인증하고 Mongo 셸의 모든 사용자를 나열하고 db.getUser()db.getUsers() 메서드를 사용하는 방법을 배웠습니다.

관련 문장 - MongoDB User