Docs Menu
Docs Home
/ / /
Ruby MongoDB Driver
/

사용자 관리

이 페이지의 내용

  • 사용자 및 데이터베이스
  • 사용자 생성
  • 사용자 정보
  • 사용자 업데이트
  • 사용자 제거

Mongo Ruby Driver는 MongoDB deployment에서 사용자를 관리하기 위한 여러 메서드를 제공합니다. 이러한 모든 메서드는 데이터베이스에서 사용자 관련 작업을 수행하기 위한 동작을 정의하는 Mongo::Auth::User::View 클래스에서 정의됩니다. 해당 Mongo::Database 객체에서 users 메서드를 호출하여 데이터베이스의 사용자 뷰에 액세스할 수 있습니다.

client.database.users

이렇게 하면 클라이언트가 이미 연결된 데이터베이스의 뷰가 열립니다. 다른 데이터베이스에 정의된 사용자와 상호 작용하려면 클라이언트의 use 메서드를 호출하고 연결하려는 데이터베이스의 이름을 전달합니다.

client.use(:users).database.users

이 예제에서는 모든 작업이 users 데이터베이스에서 수행됩니다.

사용자 및 사용자 관리 에 대한 자세한 내용은 MongoDB의 온라인 설명서를 참조하세요.

클라이언트 가 서버 에 연결되면 MongoDB 는 클라이언트 가 작업을 수행할 데이터베이스 와 클라이언트 가 인증하는 사용자를 저장하는 데이터베이스 인 인증 소스 를 구분합니다.

대부분의 경우 인증 소스는 데이터베이스와 동일합니다. 서로 다른 경우에는 인증 소스 데이터베이스에서 사용자 관리 작업을 수행해야 합니다. 예를 들어 $external 데이터베이스에 정의된 X.509 인증서로 인증하는 사용자를 만들려면 다음을 수행합니다.

client.use('$external').database.users.create(
'C=US,ST=New York,L=New York City,O=MongoDB,OU=x509,CN=localhost',
roles: [{role: 'read', db: 'admin'}],
)

사용자 생성을 위한 인증 소스가 지정되지 않았으며, 인증 소스는 인증 프로세스 중에만 사용됩니다. auth_source 가 설정된 User 객체와 함께 #create 를 호출하면 사용자 관리를 위해 인증 소스가 무시됩니다.

Ruby 드라이버로 새 데이터베이스 사용자를 생성하는 방법에는 두 가지가 있습니다.

새 사용자를 만드는 가장 간단한 방법은 create 메서드를 사용하여 사용자 이름, 비밀번호 및 역할을 전달하는 것입니다.

client.database.users.create(
'alanturing',
password: 'enigma',
roles: [ Mongo::Auth::Roles::READWRITE ]
)

사용자를 만드는 또 다른 방법은 먼저 모든 사용자 정보를 사용하여 Mongo::Auth::User 객체를 만든 다음 해당 객체를 create 메서드에 전달하는 것입니다.

user = Mongo::User.new(
user: 'alanturing',
password: 'enigma',
roles: [ Mongo::Auth::Roles::READWRITE ]
)
client.database.users.create(user)

새 사용자의 자격 증명은 client 객체가 현재 연결되어 있는 데이터베이스에 저장됩니다. 이는 사용자의 auth_source 가되며, 나중에 방금 생성한 사용자에 대한 정보를 업데이트, 제거 또는 가져오려면 동일한 데이터베이스에 연결되어 있어야 합니다.

create 메서드는 Hash 의 옵션을 두 번째 인수로 선택적으로 사용합니다. :roles 옵션을 사용하면 새 사용자에게 권한을 부여할 수 있습니다. 예를 들어, Mongo::Auth::Roles::READ_WRITE 역할은 사용자에게 자신이 생성된 데이터베이스에서 읽고 쓸 수 있는 권한을 부여합니다. 각 역할은 String 또는 Hash 로 지정할 수 있습니다. 사용자가 생성된 데이터베이스 이외의 데이터베이스에 대한 권한을 사용자에게 부여하려면 Hash 역할에 해당 데이터베이스 이름을 전달하면 됩니다. machines 데이터베이스에 대한 읽기 및 쓰기 권한이 있는 사용자 alanturing 를 생성하려면 다음 코드를 실행할 수 있습니다.

client.database.users.create(
'alanturing',
password: 'enigma',
roles: [{ role: Mongo::Auth::Roles::READWRITE, db: 'machines' }]
)

MongoDB 의 역할에 대한 자세한 내용은 기본 제공 역할 문서를 참조하세요.

옵션 외에도 메서드는 이 작업에 사용할 객체를 지정할 수 :roles 있는 옵션과 create 쓰기 :session Mongo::Session :write_concern 고려 (write concern)를 지정하는 옵션을 지원합니다. 이는 복제본 세트에서 수행되는 경우 이 작업과 관련이 있습니다.

다음도 참조하세요.

데이터베이스에 이미 존재하는 사용자에 대한 정보를 보려면 info 메서드를 사용합니다.

client.database.users.info('alanturing')

사용자가 있는 경우 이 메서드는 ID, 사용자 이름, 생성된 데이터베이스, 역할 등 사용자에 대한 정보와 함께 Hash 가 포함된 Array 객체를 반환합니다. 사용자가 존재하지 않는 경우 이 메서드는 빈 배열을 반환합니다.

또한 info 메서드는 선택 사항인 Hash 옵션을 두 번째 인수로 사용합니다. 현재 지원되는 유일한 옵션은 :session 이며, 이 옵션을 사용하면 이 작업에 사용할 Mongo::Session 객체를 지정할 수 있습니다.

Ruby Driver에는 현재 데이터베이스에 존재하는 모든 사용자를 나열하는 메서드가 없습니다.

다음도 참조하세요.

데이터베이스에 이미 존재하는 사용자를 업데이트하려면 두 가지 방법 중 하나로 update 메서드를 사용할 수 있습니다. 첫 번째 방법은 업데이트하려는 사용자의 이름과 새 옵션을 지정하는 것입니다.

경고

값이 동일하게 유지되는 옵션을 포함하여 모든 사용자 옵션을 Hash 옵션에 포함해야 합니다. 옵션을 생략하는 것은 해당 옵션을 빈 값으로 설정하는 것과 동일합니다.

client.database.users.update(
'alanturing',
roles: [ Mongo::Auth::Roles::READ_WRITE ]
password: 'turing-test'
)

사용자를 업데이트하는 두 번째 방법은 사용자 이름 대신 업데이트된 Mongo::Auth::User 객체를 update 메서드에 전달하는 것입니다.

user = Mongo::Auth::User.new({
user: 'alanturing',
roles: [ Mongo::Auth::Roles::READ_WRITE ],
password: 'turing-test'
})
client.database.users.update(user)

선택적으로 update 메서드는 Hash 의 옵션을 두 번째 인수로 사용합니다. 이 메서드에 사용할 :session 수 있는 두 가지 옵션은 Mongo::Session 이 작업을 수행할 객체를 지정할 수 있는 및 :write_concern 복제본 세트에서 이 작업을 수행할 경우 쓰기 고려 (write concern)를 설정하는 입니다.

다음도 참조하세요.

데이터베이스에서 사용자를 제거하려면 remove 메서드를 사용합니다.

client.database.users.remove('alanturing')

옵션 Hash 를 두 번째 인수로 전달할 수 있습니다. remove 메서드에 대해 지원되는 두 가지 옵션은 :session:write_concern 입니다. :session 를 사용하면 이 작업에 사용할 Mongo::Session 객체를 지정할 수 있습니다. :write_concern 는 복제본 세트에 대해 이 명령을 실행하는 경우 쓰기 고려 (write concern)를 지정합니다.

Ruby Driver는 데이터베이스에서 모든 사용자를 제거하는 방법을 제공하지 않습니다.

다음도 참조하세요.

돌아가기

모니터링